PDA

Ver la Versión Completa : Librerias


esquerda21
05-08-2003, 18:59:05
Hola. Como van las cosas.

Estoy mirando ejemplos para implementar Direct3D y me faltan varios .DCU. De donde podria bajarme estas librerias?

Gracias de antemano.

andres1569
05-08-2003, 20:37:51
Hola:

Prueba de mirar en la página del JEDI project. En el menú de la izquierda, pulsas en DelphiGraphics y te lleva a una página con información relacionada:

http://www.delphi-jedi.org

También, si pulsas en el siguiente enlace, te remite a una página donde se ofrecen units .pas para DirectX:

http://www.delphi-jedi.org/DelphiGraphics/jedi-index.htm

Espero que te sirva.

esquerda21
06-08-2003, 13:03:56
Gracias. Otra cosa. Donde podria conseguir algun ejemplo sencillo
de rotacion de un cuadrado con directX y si puede ser comentado en castellano. No quiero basarme en las librerias de Jedi. Prefiero hacerlo directamente el DirectGrafics de Microsoft.

Gracias por tu respuesta

andres1569
07-08-2003, 09:38:44
Hola:

Probablemente ya conozcas esta página, la efg's (http://homepages.borland.com/efg2lab/Library/Delphi/Graphics/index.html), 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):

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;Aplicada a los cuatro vértices de un cuadrado, ya lo tienes rotado. Por cierto, este ejemplo llama dos veces a la función Cos y dos veces a Sin que están en la unit math.pas. Puesto que se les pasa el mismo ángulo (Angle), es más rápido utilizar la funcion SinCos que calcula seno y coseno de golpe y más rápido, le tendrías que pasar dos variables por referencia donde obtendrías esos valores. En el ejemplo te lo he puesto así, sin optimizar, pero no es muy complicado hacer el cambio.

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í:
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;

A ver si te sirve.

esquerda21
07-08-2003, 12:26:27
Gracias de nuevo por tu respuesta.

Aprovechando que aun no esta de vacaciones.....

Yo conozco las matrices de escalado, rotacion, transposicion, pero en los ejemplos que me bajo aparece... WORLD, VIEW, PROJECTION. mas o menos las relaciono pero no estoy seguro.

Gracias de Nuevo ;-)

andres1569
08-08-2003, 09:36:58
:D :D :D

Uff!! No te aproveches tanto de mí, :D creo que no te puedo ayudar en estos temas.

No conozco DirectX ni la terminología que usa. Lo que dices de WORLD me suena a trasladar coordenadas reales a coordenadas de pantalla. Es común ver en programas gráficos, funciones como WorldToX, WorldToY y sus opuestas XToWorld, YToWorld, que traspasan las coordenadas reales (del mundo real, de ahí lo de World), normalmente expresadas en números de coma flotante (single, real, double ...) a coordenadas de pantalla, expresadas en números enteros (Integer, Longint ...), y viceversa. No sé excatamente en DirectX cómo serán, pero apunta a esa idea. El propósito es que tengas almacenadas en algún medio (listas, archivos, base de datos ...) las figuras con sus coordenadas reales, pero a la hora de dibujarlas, necesitas hacer uso de esa funciones (no sé, ya digo, cómo se llamarán en DirectX, pero lo dde WORLD prece indicar algo de eso).

Lo de VIEW, PROJECTION, ... no sé lo que puedan ser, ni que relación tengan con la rutinas que señalas al principio (rotación, trasposición ...); quizás lo de PROJECTION tenga que ver con escalar una imagen, es decir una imagen a la que aplicas un factor de escala, multiplicando todos sus vértices por dicho factor; eso hace que aparezca como proyectada. Pero sólo "quizás".

Si vas a trabajar intensamente con DirectX, te hará falta un buen manual.

esquerda21
08-08-2003, 10:47:08
Igualmente gracias. Amí si que me interesa por lo tanto seguiré adelante como pueda. Si en algun momento te interesas, supogo que ya tendre información suficiente para pasartela.
Gracias de todos modos.