Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 05-04-2010
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.025
Poder: 28
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Tampoco soy físico, sin embargo creo que esto es mejor que lo calcules utilizando vectores y matrices. Es decir, crea una unidad que puedes llamar "Mates3D" o similar y creas una o dos clases: una para vectores 3D y otra para matrices cuadradas de orden 4. Por ejemplo, para el vector puedes definirlo así:
Código Delphi [-]
TVector3D = CLASS
PRIVATE
  fx, fy, fz: REAL;
PUBLIC
(* Método para normalizar el vector (vector equivalente de longitud 1). *)
   PROCEDURE Normaliza;
(* Método para sumar vectores. *)
   PROCEDURE Suma (aOtroVector: TVector3D);
(* Método para calcular la longitud del vector. *)
   FUNCTION Longitud: REAL;
(* Método para multiplicar un escalar al vector. *)
   PROCEDURE ProductoEscalar (aEscalar: REAL);
(* Método para producto cruzado (se usa para calcular la normal de un plano, por ejemplo). *)
   FUNCTION ProductoCruzado (aVector: TVector3D): TVector3D;

  PROPERTY x: REAL READ fx WRITE fx;
  PROPERTY y: REAL READ fy WRITE fy;
  PROPERTY z: REAL READ fz WRITE fz;
END;

Y para la matriz:
Código Delphi [-]
TMatriz4 = CLASS
PRIVATE
   fComponentes: ARRAY [1..4, 1..4] OF REAL;

   FUNCTION AsignaComponente (m, n: INTEGER; v: REAL);
   PROCEDURE ObtieneComponente (m, n: INTEGER): REAL;
PUBLIC
(* Calcula el determinante. *)
   FUNCTION Determinante: REAL;
(* Multiplica ambas matrices. *)
   FUNCTION MultiplicaMatriz (aMatriz: TMatriz4): TMatriz4;
(* Multiplica la matriz y el vector (asume que el componente w del vector es 1). *)
   FUNCTION MultiplicaVector (aVector: TVector3D): TVector3D;

   Componente[m, n: INTEGER]: REAL READ ObtieneComponente WRITE AsignaComponente;
END;

Etcétera. La implementación ya te la dejo, porque son matemáticas "básicas". También has de tener en cuenta que puede que falte alguna operación, y también que quizá haya que cambiar parámetros de las que he puesto, porque lo he hecho de memoria y sin pensar mucho.

La idea es que la mayor parte de las fórmulas físicas son más fáciles de "traducir" utilizando vectores y matrices, puesto que las propias fórmulas físicas los utilizan.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
MySQL Ayuda. Estoy estancado RebeccaGL MySQL 10 16-10-2008 15:31:58
Validar TEdit para que no quede vacio MAXIUM Varios 4 29-03-2008 01:12:16
Speed Button que se quede down como en emule Nbull Varios 5 01-02-2006 09:20:34
Clic a un tbutton y que no se quede el foco niñotaliban Varios 22 18-11-2005 19:45:11
Estoy estancado pepelu1975 Conexión con bases de datos 2 20-02-2004 17:14:54


La franja horaria es GMT +2. Ahora son las 09:43:31.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi