Ten "błąd" [???] kosztował mnie 2dni :-[ [!!!]
a odkrycie go doprowadziło mnie do ataku śmiechu ;-P
Dotyczył on podstawowego działania polegającego na obrocie punktu 3D wokół zadanego pkt.
tak więc
felerny kod:
c3DPoint pt = obj->pos;
c3DPoint p = srodek_ukladu;
pt = RotateOX(pt, obj->rot.x, p.y,p.z);
pt = RotateOY(pt, -obj->rot.y, p.x,p.z);
pt = RotateOZ(pt, obj->rot.z, p.x,p.y);
poprawny kod:
c3DPoint pt = obj->pos;
c3DPoint p = srodek_ukladu;
pt = RotateOZ(pt, obj->rot.z, p.x,p.y);
pt = RotateOY(pt, -obj->rot.y, p.x,p.z);
pt = RotateOX(pt, obj->rot.x, p.y,p.z);
I tak szczeże to nie wiem czemu to 2 jest ok..wiem że tak ma być i tyle, ale ciekawość zżera.
Wiec prosze czy ktoś może mi fachowo ;-) wytłumaczyć czemu tak się dzieje?