![]() |
Representar coordenadas 3D
Hola a todos, ando dando vueltas a una idea en la cabeza, pero no acabo de ver como hacerla funcionar en delphi, os la cuento.
Tengo coordenadas de puntos en 3D, en el formato (x,y,z), vamos un vector de toda la vida. Bien quiero pintarlos en el espacio. La primera idea que pensé fue suponer que uno de los ejes está perpendicular a mi punto de vista y así omito su valor y lo puedo pintar en el plano del formulario. Por ejemplo si tengo (1,2,3) y (7,9,1) supongo que el eje X esta perpendicular a mi y así pintaria en el sobre el canvas (o un bitmap, etc, eso no me preocupa por ahora), un punto en (2,3) y otro en (9,1). Y listo Pero como tengo una mente retorcida pensé en que estaria bien poder cambiar el punto de vista y poner otro eje diferente perpendicular. Y una vez llegados a esta idea pensé, y porque no permitir un rotación libre , osea que sea un eje perpendicular al punto de vista, sino poder rotar el punto de vista e ir cambiar el dibujo. Así que estuve rascandome la cabeza tratando de recordar la geometria y la trigonometria para buscar la manera de representar las coordenas 3d en el plano del formulario y poder rotar el punto de vista. ¿Pero quizás haya algún código que ya lo haga y lo pueda adaptar a mi programa, o quizás un control, o alguna página donde pueda investigar?, ¿Alguien sabe algo?. Gracias /BlueIcaro P.D. No sé si me expresé muy bien la idea :confused: P.D1 Me entran dudas si he puesto la consulta en el foro adecuado, dudo entre este foro o el de gráficos. Pido disculpas a los moderadores si me he equivocado. |
blueicaro:
Cita:
f(x,y)~F(rcos(Theta),rsen(Theta)), de hecho los limites en el espacio tambien se calculan con polares entonces la rotaciòn no deberia exceptuarse :cool:. Este tema es muy bueno, ojala sea uno de los q pasan los 20 mensajes |
Con esta funcion jugando con las variables internas puedes dibujar en un lienzo 2D coordenadas en 3D, cambiando el valor de las constantes y variables que se usan en la funcion se puede escalar, trasladar, y cambiar la perspectiva de manera un tanto dinámica... las variables XCen y YCen pueden ser las coordenadas del centro de tu formulario para que se dibuje a partir del centro.... Ojalá te sirva para comenzar... http://cgarcia.blogspot.com |
Cita:
/BlueIcaro |
Probando
Hola he estado probando la función que puso en su respuesta lpmlpm, y acabo de ver como funciona.
He hecho un programita que pinta un recta en un componente TImage, la recta es "paralela al horizonte" ya que el punto de partida es 100,30 y el final 400,30 Como la función del compañero lpmlpm convierte coordenadas 3D en 2D, de partida he puesto 0 en Z, y salió la recta que os comento. He experimentado con las variables XCen y YCen, y definen el desplazamiento del origen de coordenadas respecto al origen de TImage, que está arriba a la izquierda. Esto no tiene problema Luego Ratio, lo puse a 1, porque creo que es un "Ratio" osea la relación. Mi duda viene que luego he ido variando la coordenada Z del punto final de la recta, y si pongo valores positivos la recta pierde en lugar de dibujarse paralela como antes, ahora se representa diagonal hacia arriba si los valores son positivos. Vamos que no tengo muy claro donde esta punto de vista, osea como está el sistema de coordenadas. Aquí os dejo lo que he escrito para probar, os dejo la rutina donde se dibuja todo, es fácil reconstruir el resto del programa por si alguien quiere esperimentar, y si alguien lo quiere, que me lo pida. Saludos /BlueIcaro
|
blueicaro:
Cita:
|
La franja horaria es GMT +2. Ahora son las 20:54:02. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi