FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#4
|
|||
|
|||
Hola:
Probablemente ya conozcas esta página, la efg's, allí puedes encontrar toda clase de rutinas gráficas, ejemplos, programas de descarga ..., suelen ser de propósito general, aunque no será muy difícil adaptarlo a DirectX, hay secciones donde explica lo de las rotaciones y demás. En castellano no me suena ninguna. Bueno, esta función rota un punto el ángulo que se le pasa (ángulo en radianes): Código:
funcion RotatePoint (APoint: TPoint; angle: single) : TPoint; begin result.x := APoint.x * Cos(Angle) - APoint.y * Sin(Angle); result.y := APoint.x * Sin(Angle) + APoint.y * Cos(Angle); end; Una vez optimizado, podrías también crearte una función donde le pasaras un array of TPoint y te lo devolviera ya rotado, sólo harías el cálculo de los senos y cosenos 1 vez, y te serviría para pasarle triángulos, cuadrados ... ¡Ah! Se me olvidaba, la función que te he puesto arriba rota un punto respecto al origen (punto (0, 0)); para rotar respecto de cualquier punto -muchas veces querrás rotar respecto al centro de la figura-, sería así: Código:
funcion RotatePoint (APoint, FromPoint: TPoint; angle: single) : TPoint; var dx, dy: Integer; begin dx := APoint.x - FromPoint.x; dy := APoint.y - FromPoint.y; result.x := (dx * Cos(Angle) - dy * Sin(Angle)) + FromPoint.x; result.y := (dx * Sin(Angle) + dy * Cos(Angle)) + FromPoint.y; end;
__________________
Guía de Estilo Última edición por andres1569 fecha: 07-08-2003 a las 09:28:59. |
|
|
|