eu vi isso e lembrei de quando eu escrevia codigo mais obscuro do que o usual... fui direto em um codigo que fazia processamento de poligonos no espaco 3D e plotava na tela, esperava encontrar algo esquisito, aquelas coisas que vc olha 10 anos depois, nao reconhece e se assusta! e logo na quinta linha encontrei isso:
#define MAGIC 1.74532925199e-2
eu ri e fui olhar o codigo... o render de imagem eh simplesmente magnifico, para fechar a boca daqueles que falam "nunca vou usar geometria analitica para nada na vida":
// VC = S[V(n)]/n
obj.p[j]->x/=obj.p[j]->idc;
obj.p[j]->y/=obj.p[j]->idc;
obj.p[j]->z/=obj.p[j]->idc;
// light vector = VL - V[0]
l.x=lightx-obj.v[obj.p[j]->id[0]]->rx;
l.y=lighty-obj.v[obj.p[j]->id[0]]->ry;
l.z=lightz-obj.v[obj.p[j]->id[0]]->rz;
// polygon normal vector = AxB
// | ux uy uz |
// AxB = | ax ay az | = (aybz-azby)ux+(azbx-axbz)uy+(axby-aybx)uz
// | bx by bz |
a.x=obj.v[obj.p[j]->id[1]]->rx-obj.v[obj.p[j]->id[0]]->rx;
a.y=obj.v[obj.p[j]->id[1]]->ry-obj.v[obj.p[j]->id[0]]->ry;
a.z=obj.v[obj.p[j]->id[1]]->rz-obj.v[obj.p[j]->id[0]]->rz;
b.x=obj.v[obj.p[j]->id[2]]->rx-obj.v[obj.p[j]->id[0]]->rx;
b.y=obj.v[obj.p[j]->id[2]]->ry-obj.v[obj.p[j]->id[0]]->ry;
b.z=obj.v[obj.p[j]->id[2]]->rz-obj.v[obj.p[j]->id[0]]->rz;
n.x=a.y*b.z-a.z*b.y;
n.y=a.z*b.x-a.x*b.z;
n.z=a.x*b.y-a.y*b.x;
// light angle = L.N/|L||N|
ml=sqrt(l.x*l.x+l.y*l.y+l.z*l.z);
mn=sqrt(n.x*n.x+n.y*n.y+n.z*n.z);
obj.p[j]->color=((l.x*n.x+l.y*n.y+l.z*n.z)/(ml*mn)+1)/2*127;
// visibility angle = C.N/|C||N|
// C = [0,0,-1000000], |C|=|cz|, cx=0, cy=0
obj.p[j]->angle=-n.z/mn;
if(obj.p[j]->angle<0) obj.p[j]->visible=False;
else obj.p[j]->visible=True;
sim, existe um 1/sqrt() ali no meio sem otimizacao, mas sou incapaz de dizer para que serve... de fato, hoje em dia nao entendo bulhufas do que isso faz, principalmente pq o eu do passado nao costumava comentar codigo! :v huahuahua
http://xstep.sourceforge.net/xstep-3.5. ... /xstep3d.cmas se vc quiser realmente chutar o balde e embarcar em uma profunda viagem no espaco/tempo, de uma lida nisso aqui:
http://xstep.sourceforge.net/xstep-3.5. ... index.htmle o bingo final da vergonha infinita que achei em outro texto meu... **** que pariu! :v
#ifndef PI
#define PI (355.0/113.0)
#endif
aproximacao tosca, mas funciona:
http://xstep.sourceforge.net/xstep-3.5. ... index.html