okay
02-04-2007, 11:30
ho 3 punti nello spazio 3d, vettori
{ 0.0f, 0.0f, 0.0f) //xyz
{ 0.0f, 0.5f, 0.0f) //xyz
{ 0.5f, 0.0f, 0.0f) //xyz
ottengo a video questi punti nello spazio:
(a)°
(b)° (p)°
essi formano un triangolo.
ora faccio i calcoli:
D3DXVECTOR3 vLatoA = D3DXVECTOR3(a.x, a.y, a.z);
D3DXVECTOR3 vLatoP = D3DXVECTOR3(p.x, p.y, p.z);
D3DXVECTOR3 vLatoB = D3DXVECTOR3(b.x, b.y, b.z);
vLungA = vLatoP-vLatoA; //-
vLungP = vLatoP-vLatoB; ///
vLungB = vLatoB-vLatoA; //|
Lunghezze in float dei lati
p1 = D3DXVec3Length(&vLungA);//cateto
p2 = D3DXVec3Length(&vLungP);//ipotenusa
p3 = D3DXVec3Length(&vLungB);//cateto
RISULTATI che non mi quadrano:
angolo=atan2(p1,p2)*(180.0f/D3DX_PI);//35.264389
angolo=atan2(p2,p1)*(180.0f/D3DX_PI);//54.735607
angolo=atan2(p2,p3)*(180.0f/D3DX_PI);//35.264389
angolo=atan2(p3,p2)*(180.0f/D3DX_PI);//54.735607
angolo=atan2(p1,p3)*(180.0f/D3DX_PI);//45°*2=90°
angolo=atan2(p3,p1)*(180.0f/D3DX_PI);//45°*2=90°
45° è ok sarebbe, dati i lati |_ 45°*2=90° OK!
mentre i risultati di 35.264389° e 54.735607° sono gli altri 2 angoli che sommati insieme danno giustamente 90°... il problema è però che io mi aspettavo come risultati di questi 2 angoli:
45° e 45° visto che se metto un'altro punto di vettore come figura avrei un quadrato perfetto! tipo:
(a)° (c)°
(b)° (p)°
perchè invece mi dà:
35.264389° e 54.735607° mentre dovrebbe essere 45° e 45°??
mi sembra proprio strano!!
quale è il problema!
Edit:
ho fatto dei test:
dunque:
p1 vale 0.5 ovvero D3DXVec3Length(&vLungA); la lung lato A
p2 vale 0.70710677 ovvero D3DXVec3Length(&vLungP); la lung ipotenusa P
p3 vale 0.5 ovvero D3DXVec3Length(&vLungB); la lung lato B
ed è giusto ma
mettendo p2=0.5f in questo caso ho tutti e 3 gli angoli giusti di 45° l'uno.
non ci sto capendo + nulla... azz!
{ 0.0f, 0.0f, 0.0f) //xyz
{ 0.0f, 0.5f, 0.0f) //xyz
{ 0.5f, 0.0f, 0.0f) //xyz
ottengo a video questi punti nello spazio:
(a)°
(b)° (p)°
essi formano un triangolo.
ora faccio i calcoli:
D3DXVECTOR3 vLatoA = D3DXVECTOR3(a.x, a.y, a.z);
D3DXVECTOR3 vLatoP = D3DXVECTOR3(p.x, p.y, p.z);
D3DXVECTOR3 vLatoB = D3DXVECTOR3(b.x, b.y, b.z);
vLungA = vLatoP-vLatoA; //-
vLungP = vLatoP-vLatoB; ///
vLungB = vLatoB-vLatoA; //|
Lunghezze in float dei lati
p1 = D3DXVec3Length(&vLungA);//cateto
p2 = D3DXVec3Length(&vLungP);//ipotenusa
p3 = D3DXVec3Length(&vLungB);//cateto
RISULTATI che non mi quadrano:
angolo=atan2(p1,p2)*(180.0f/D3DX_PI);//35.264389
angolo=atan2(p2,p1)*(180.0f/D3DX_PI);//54.735607
angolo=atan2(p2,p3)*(180.0f/D3DX_PI);//35.264389
angolo=atan2(p3,p2)*(180.0f/D3DX_PI);//54.735607
angolo=atan2(p1,p3)*(180.0f/D3DX_PI);//45°*2=90°
angolo=atan2(p3,p1)*(180.0f/D3DX_PI);//45°*2=90°
45° è ok sarebbe, dati i lati |_ 45°*2=90° OK!
mentre i risultati di 35.264389° e 54.735607° sono gli altri 2 angoli che sommati insieme danno giustamente 90°... il problema è però che io mi aspettavo come risultati di questi 2 angoli:
45° e 45° visto che se metto un'altro punto di vettore come figura avrei un quadrato perfetto! tipo:
(a)° (c)°
(b)° (p)°
perchè invece mi dà:
35.264389° e 54.735607° mentre dovrebbe essere 45° e 45°??
mi sembra proprio strano!!
quale è il problema!
Edit:
ho fatto dei test:
dunque:
p1 vale 0.5 ovvero D3DXVec3Length(&vLungA); la lung lato A
p2 vale 0.70710677 ovvero D3DXVec3Length(&vLungP); la lung ipotenusa P
p3 vale 0.5 ovvero D3DXVec3Length(&vLungB); la lung lato B
ed è giusto ma
mettendo p2=0.5f in questo caso ho tutti e 3 gli angoli giusti di 45° l'uno.
non ci sto capendo + nulla... azz!