|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
[c++] calcolo angoli vettori
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! Ultima modifica di okay : 02-04-2007 alle 11:41. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:08.



















