Willkommen auf unserem Seminar-Blog

Immer auf dem aktuellen Stand bleiben

Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.

Member Login

Lost your password?

Registration is closed

Sorry, you are not allowed to register by yourself on this site!

You must either be invited by one of our team member or request an invitation by email at viad.info {at} zhdk {dot} ch.

3D Math Vektoren

Koordinatensystem

Processing nutzt das sogenannte links-händische Koordinatensystem. Es gibt CAD oder Grafikschnittstellen wie z.b. OpenGL, welche das rechts-händische System nutzten. Dies muss man beachten, dass wenn man Daten von einem Koordinatensystem in das andere transferiert, sprich von Processing zu einem CAD-Programm welches das recht-händische System verwenden. Die im Verlauf dieser Seite erklärten Methoden sind alle für das links-händische System.

left_right_hand

Vektoren

Processing besitzt eine Vektor-Klasse:  PVector Diese Klasse beinhaltet die meisten Funktionen welche im Umgang mit Vektoren gebraucht werden. Doch es gibt einige Kniffe welche man im Umgang mit Vektoren verstehen muss. Länge eines Vektors errechnen:
PVector vec = new PVector(100,0,0);
float laenge = vec.mag();
Vektor zu einem Einheitsvektor umwandeln:
PVector vec = new PVector(100,0,0);
vec.normalize();
float laenge = vec.mag();  // laenge ist 1.0
Flächennormale finden: Die Flächennormale ist ein Vektor der rechtwinklig zu einer Fläche steht. Eine Fläche oder eine Ebene kann mit mindestens 3 Vektoren beschrieben werden(Dreieck). Um die Flächennormale von einem Dreieck zu errechnen verwendet man das Vektor Kreuzprodukt. Die Frontseite der Fläche wird nach der Laufrichtung der Vektoren bestimmt. Die Flächennormale zeigt in die Richtung nach dem Uhrzeigersinn der Vektoren.
PVector p1 = new PVector(0,0,0);
PVector p2 = new PVector(100,0,0);
PVector p3 = new PVector(100,100,100);

PVector u = PVector.sub(p2, p1);
PVector v = PVector.sub(p3, p1);

PVector normal = u.cross(v);
normal.normalize();
faceNormal Download Code Beispiel Winkel zwischen Vektoren berechnen: Um den Winkel zwischen zwei Vektoren zu berechnen verwendet man das Skalarprodukt. In Processing gibt es schon eine Methode hierfür: angleBetween(PVector v1, PVector v2)
PVector p1 = new PVector(0,0,0);
PVector p2 = new PVector(100,0,0);
PVector p3 = new PVector(100,100,100);

PVector u = PVector.sub(p1,p2);
PVector v = PVector.sub(p3,p2);

u.normalize();
v.normalize();

float winkelRad = acos(u.dot(v));