2012-02-12 11 views
7

¿Alguien podría ayudarme con ejemplos de algunos métodos 3d de bare-bone, old school en Delphi? No se usa OpenGL o firemonkey o cualquier biblioteca externa (codificación vainilla). Lo que quiero hacer es rotar X cantidad de puntos alrededor de un origo común. Por lo que recuerdo de los viejos tiempos, restas de izquierda a derecha (en los puntos 3d) para que origo siempre sea 0,0 - luego realizas los cálculos, y finalmente agregas el desplazamiento de píxeles izquierdo/superior para obtener las posiciones de pantalla reales.Funciones simples de Delphi 3d

Lo que estoy buscando es un conjunto de rutinas pequeña, ad-hoc, Ala:

  • RotateX (unValor: T3dpoint; grado d: float): T3dPoint;
  • RotateY (-/-)
  • RotateZ (-/-)

El uso de estas funciones debe ser bastante fácil de crear el viejo "de rotación del cubo 3d" (8 puntos).

Además, ¿hay funciones para averiguar las "caras" visibles? Si quiero un cubo vector lleno, entonces supongo que necesito extraer regiones visibles (¿basadas en la distancia/superposición?) Que a su vez se dibujan como un número X de polígonos rellenos. Y estos sin duda deben ser ordenados por profundidad para no salir en un lío.

por ejemplo:

  • PointsToFaces (const a3dObject: T3dPointArray): TPolyFaceArray;
  • SortFaces (Const aFaces: TPolyFaceArray): TPolyFaceArray;

¡Toda ayuda es bienvenida!

+0

También confundirlos, pero en Delphi Se llama 'real', no' float'. –

+0

¿Por qué no obtener al menos glScene? –

+0

Porque estaré compilando bajo Smart Mobile Studio, que compila objeto pascal para javascript. Y OpenGL no es compatible con Safari Mobile. Solo quería lo básico para poder aprender jugando con eso. –

Respuesta

8

Estos son algunos buenos recursos antiguos para Delphi Math de efg's Reference.
Puede encontrar un list of graphic projects.
2D/3D Lab Vector graphics: traslación, rotación, escalado, Ver transformar, coordenadas homogéneas, recorte, proyecciones, vectores, matrices, etc ...

+0

Un poco exagerado para mis necesidades, pero la fuente muestra los nombres de las funciones matemáticas, por lo que me da un buen punto de partida. ¡Gracias! –

5

Hace unos años, escribí un simple "motor" de renderización en 3D, utilizando solo álgebra lineal ingenua. Puede que no sea la más eficiente, sin embargo. Unos pocos miles de puntos es el límite si desea poder moverse razonablemente sin problemas. Sample EXE. Puedes obtener the code si quieres, pero puede que no sea tan bonito.

+3

Debo mencionar que abandoné muy pronto mi prototipo a favor de OpenGL, que se usa en [AlgoSim] (http://www.algosim.se). –

+0

Voy a convertir el código a smart mobile studio, por lo que opengl aún no es una opción. Es solo para obtener los conceptos básicos, correcto –

Cuestiones relacionadas