Vektoren im 3D-Raum

thomy800

Erfahrenes Mitglied
hi

also ich habe 2 punkte in einen 3-dinmensionalen raum. ich kenne von beiden punkten die koordinaten. im prinzip sind das 2 vektoren.
den abstand berechnen geht ja einfach:
Code:
abstand=sqrt((x1-x2)^2+(y1-y2)^2+(z1-z2)^2)

aber wie gebe ich den winkel an. gibt man einen solchen winkel für jede dimension an? also ein winkel für x und einen für y und einen für z? oder kann man das zusammenfassen zu einen winkel? und wie berechnet man am günstigsten den/die winkel?

mfg thomy
 
Wenn du 2 Punkte hast, gibt es keine Ecken, d.h. du hast auch nirgends wo einen Winkel drinnen ;-)
Du kannst dir höchstens die Winkel zur X, Y und Z Achse ausrechnen.

Am besten ist es aber immer noch mit Vektoren zu rechnen ;-)

Lg, Yanick
 
ich würds gerne mit vektoren rechnen. aber man muss doch irgendwie angegeben können in welche richtung der vektor zeigt.

im prinzip wie bei 2dimensionalem: funktion f(x)=mx+n. da kann man dann mit arctan(m) die richtung bestimmen. (wobei es da nur zw. -90° und 90° liegt..)
 
Die Richtung eines Vektors wird ja bereits durch seine 'Punkte' bestimmt, äquivalent zum 'm' der linearen Funktion.
Um die Winkel zwischen dem Vektor und den 3 Raum-Achsen zu bestimmen nutzt man beispielsweise das Skalarprodukt: Dabei verwendet man 2 Vektoren um den Winkel zwischen ihnen zu bestimmen. Für die Vektoren, welche die Achsen darstellen nimmst du am besten die Einheitsvektoren: X-Achse: (x=1;y=0;z=0), Y-Achse: (x=0;y=1;z=0) ... Und der andere Vektor ist der bereits gegebene mit (x1;y1;z1).

Falls irgendjemand mein Verfahren verbessern kann, dann bitte veräusern, ich bin selber nicht der Profi.
 

Anhänge

  • skalarprodukt.png
    skalarprodukt.png
    5,4 KB · Aufrufe: 696
ok, danke.
das sieht dann bei mir so aus:

Java:
public double getWinkelX() {
        return Math.toDegrees(Math.acos(x/Math.sqrt(Math.pow(x-1,2)+Math.pow(y,2)+Math.pow(z,2))));
    }
    public double getWinkelY() {
        return Math.toDegrees(Math.acos(y/Math.sqrt(Math.pow(x,2)+Math.pow(y-1,2)+Math.pow(z,2))));
    }
    public double getWinkelZ() {
        return Math.toDegrees(Math.acos(z/Math.sqrt(Math.pow(x,2)+Math.pow(y,2)+Math.pow(z-1,2))));
    }

und um den winkel zwischen 2 vektoren zu berechnen müsste ich dann nur vektor1-vektor2 rechnen und dann diese methoden verwenden, oder?
 
Zuletzt bearbeitet:
Richtig, wenn du die Vektoren Koordinatenweise subtrahierst kommt wiederum ein neuer Vektor raus, mit dem du weiterrechnen kannst.
 
Zurück