Pregunta

Estoy tratando de hacerlo de modo que no importa lo lejos que dos objetos son ellas tanto permanecen en la pantalla. Estoy usando JOGL, pero eso no debería importar como acabo Necesito ayuda con las matemáticas. Esto es lo que tengo hasta ahora:

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);

¿Qué es la matemática que necesito por lo que el Z acerca y se aleja correctamente?

¿Fue útil?

Solución 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);

Otros consejos

Si ambos objetos tienen z = 0, y su ángulo de visión de la pantalla (de la centro de la pantalla a un borde) es Ax y Ay para los ángulos horizontales y verticales, a continuación:

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

y

camz = max(zx, zy)

Aquí zx y zy son las distancias para conseguir los objetos en las dimensiones horizontal y vertical de la pantalla, y camz es la distancia que satisface ambos criterios. También tenga en cuenta que Ax y Ay son en radianes (por ejemplo, si se asume que su pantalla es de 40 grados de ancho, entonces el eje es de 20 grados, o un hacha = 20 * (pi / 180) = 0,3419 radianes).

Sus valores para CAMx y camy eran correctas.

Tal vez estoy malentendido su situación, pero no podía que acaba de hacer

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

Eso sería colocar la cámara directamente entre los dos objetos.

En caso de que tenga que ser corregido como,

  

distancia flotador = (float) ((Math.sqrt ((p1.x - p2.x) ^ 2 + (p1.y - p2.y) ^ 2)));

No estoy seguro sobre el Prettey Sintaxis. Sólo estoy diciendo que necesita para obtener la potencia de 2 antes de añadir vectores.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top