Frage

Ich versuche, es zu machen, so dass, egal wie weit voneinander entfernt zwei Objekte sind sie werden beide auf dem Bildschirm bleiben. Ich verwende JOGL, aber das sollte keine Rolle spielen, da ich gerade mit der Mathe Hilfe benötigen. Das ist, was ich habe, so weit:

float distance = (float) ((Math.sqrt((p1.x - p2.x) + (p1.y - p2.y))));
float camx = (float)((p1.x + p2.x) * 0.5);
float camy = (float)((p1.y + p2.y) * 0.5);
float camz = (float) (distance * 5);

Was ist die Mathematik Ich brauche so die Z zoomt in die und aus richtig?

War es hilfreich?

Lösung 4

float distance = (float) ((Math.sqrt(Math.pow((p1.x - p2.x),2.0) + Math.pow((p1.y - p2.y), 2.0))));
float camx = (float)((p1.x + p2.x) * 0.5);
float camy = (float)((p1.y + p2.y) * 0.5);
float camz = (float) Math.abs(distance);

Andere Tipps

Wenn beiden Objekte haben z = 0, und den Bildschirm Betrachtungswinkel (von der Mitte des Bildschirms an eine Kante) sind ax und ay für den horizontalen und vertikalen Winkel, dann:

zx = abs((p1.x-p2.x)*0.5)/tan(ax)
zy = abs((p1.y-p2.y)*0.5)/tan(ay)

und

camz = max(zx, zy)

Hier zx und zy sind die Abstände der Objekte auf den horizontalen und vertikalen Dimensionen des Bildschirms zu erhalten, und camz ist der Abstand, der beide Kriterien erfüllt. Auch diese Axt zu beachten und ay sind in Radianten (zum Beispiel, wenn Sie davon ausgehen, Ihr Bildschirm 40 Grad breit ist, dann Beil ist 20 Grad, oder ax = 20 * (pi / 180) = 0,3419 Radiant).

Ihre Werte für CAMx und camy korrekt waren.

Vielleicht ist Ihre Situation Ich bin Missverständnis, konnte aber nicht einfach tun

float camx = (p1.x + p2.x) * 0.5;
float camy = (p1.y + p2.y) * 0.5;
float camz = (p1.z + p2.z) * 0.5;

Das würde die Kamera direkt zwischen den beiden Objekten positioniert.

Sollte es muß so korrigiert werden,

  

Schwimmers distance = (float) ((Math.sqrt ((P1.x - P2.x) ^ 2 + (p1.y - p2.y) ^ 2)));

Ich bin nicht prettey über die Syntax sicher. Ich bin nur sagen Sie die Leistung von 2 vor dem Hinzufügen von Vektoren erhalten müssen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top