Conversão de código em C para Delphi, Apenas 2 linhas

Delphi

24/02/2008

E ai pessoal, estou aprendendo como fazer colisões em 3d e a coisa ta braba.

Encontrei uma função em C que checa se um ponto3d está dentro de um triangulo .

Minha dúvida é como fazer para converter as seguintes linhas (em vermelho) para delphi?

[color=red:2fae125417]typedef unsigned int uint32;
#define in(a) ((uint32&) a)[/color:2fae125417]

bool checkPointInTriangle(const VECTOR& point, const VECTOR& pa,const VECTOR& pb, const VECTOR& pc) {
VECTOR e10=pb-pa;
VECTOR e20=pc-pa;
float a = e10.dot(e10);
float b = e10.dot(e20);
float c = e20.dot(e20);
float ac_bb=(a*c)-(b*b);

VECTOR vp(point.x-pa.x, point.y-pa.y, point.z-pa.z);
float d = vp.dot(e10);
float e = vp.dot(e20);
float x = (d*c)-(e*b);
float y = (e*a)-(d*b);
float z = x+y-ac_bb;
[color=red:2fae125417]return (( in(z)& ~(in(x)|in(y)) ) & 0x80000000);[/color:2fae125417]
}

a função em delphi está assim:

function checkPointInTriangle(const iPoint, pa, pb, pc : XVector) : Boolean;
var
e10, e20 : XVector;
a, b, c, ac_bb,
d, e, f, x, y, z : Single;
vp : XVector;
begin
e10 := VecSub(pb, pa);
e20 := VecSub(pc, pa);
a := VecDot(e10, e10);
b := VecDot(e10, e20);
c := VecDot(e20, e20);
ac_bb := (a*c)-(b*b);

vp := VecNew(iPoint.x-pa.x, iPoint.y-pa.y, iPoint.z-pa.z);
d := VecDot(vp, e10);
e := VecDot(vp, e20);
x := (d*c)-(e*b);
y := (e*a)-(d*b);
z := x+y-ac_bb;

[color=green:2fae125417][i:2fae125417]//Ainda está em C[/i:2fae125417][/color:2fae125417]
//return (( in(z)& ~(in(x)|in(y)) ) & 0x80000000);
end;

Alguém sabe o que o return está fazendo?

Agradeço se alguém puder me ajudar!


Rickyale2

Rickyale2

Curtidas 0

Respostas

Kroki

Kroki

24/02/2008

Voce ta usando DElphiX?
Se não estiver use.


GOSTEI 0
Rickyale2

Rickyale2

24/02/2008

mudei do delphix para opengl para ficar mais fácil entender como funciona a lógica 3d... não fazia idéia e tava difícil de começar..

vc é a primeira pessoa que indica o delphix e não opengl... qual a diferença ?

valeu


GOSTEI 0
Kroki

Kroki

24/02/2008

No Delphix vc acessa o open Gl normalmente com rotinas simple...
Alem do mais no Delphix vc tem todas as funções de acesso ao HardWare muito facilmente.


GOSTEI 0
POSTAR