|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
[vc6++] vettori e struct
Dunque:
Questa e la struct: struct MYVERTEX { FLOAT x, y, z; //coordinate dei vertex in pixel sullo schermo. FLOAT nx,ny,nz; //coordinate dei vertex illuminazione DWORD colour; //colore dei vertex FLOAT tu, tv; //coordinate della texture sui vertex // D3DXVECTOR3 position; // The position }; float v1,v2,v3; MYVERTEX *pVertices; m_pTerrenoVertexBuffer->Lock(0, m_dwNumOfVerticesTerreno*sizeof(MYVERTEX ), (BYTE**)&pVertices, 0); v1=pVertices[(int)Z*(2*20-1)+20+(int)X].x; v2=pVertices[Z1*(2*20-1)+X1].y; v3=pVertices[Z2*(2*20-1)+X2].z; m_pTerrenoVertexBuffer->Unlock (); .................. questa sopra è OKAY Ora devo risolvere questa routine sotto: Questa è l'originale: float a, b, c; a=((v1.y-v2.y)*(v2.z-v3.z)-(v2.y-v3.y)*(v1.z-v2.z))/ ((v1.x-v2.x)*(v2.z-v3.z)-(v2.x-v3.x)*(v1.z-v2.z)); b=((v1.y-v2.y)*(v2.x-v3.x)-(v2.y-v3.y)*(v1.x-v2.x))/ ((v1.z-v2.z)*(v2.x-v3.x)-(v2.z-v3.z)*(v1.x-v2.x)); c=v1.y-a*v1.x-b*v1.z; e questo è l'errore: x' must have class/struct/union type y' must have class/struct/union type z' must have class/struct/union type quindi ho fatto così: float a, b, c; a=((v1-v2)*(v2-v3)-(v2-v3)*(v1-v2))/ ((v1-v2)*(v2-v3)-(v2-v3)*(v1-v2)); b=((v1-v2)*(v2-v3)-(v2-v3)*(v1-v2))/ ((v1-v2)*(v2-v3)-(v2-v3)*(v1-v2)); c=v1-a*v1-b*v1; non da errori, ma chiaramente c'è qualcosa che non và nel risultato come posso ovviare, per calcolare bene senza v1.x ecc,ecc?? Come posso risolvere??? Probabilmente quello che non capisco è questo: la differenza di queste inizializzazzioni D3DXVECTOR3 position D3DXVECTOR3 v1,v2,v3 float v1,v2,v3 mi potete spiegare questa differenza di inizializzazzioni?? |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Sep 2001
Messaggi: 181
|
Nel primo caso
float v1,v2,v3; MYVERTEX *pVertices; m_pTerrenoVertexBuffer->Lock(0, m_dwNumOfVerticesTerreno*sizeof(MYVERTEX ), (BYTE**)&pVertices, 0); v1=pVertices[(int)Z*(2*20-1)+20+(int)X].x; v2=pVertices[Z1*(2*20-1)+X1].y; v3=pVertices[Z2*(2*20-1)+X2].z; m_pTerrenoVertexBuffer->Unlock (); .................. questa sopra è OKAY Ora devo risolvere questa routine sotto: Questa è l'originale: float a, b, c; a=((v1.y-v2.y)*(v2.z-v3.z)-(v2.y-v3.y)*(v1.z-v2.z))/ .......... se v1 è un float cosa significa varialileFloat.y ??? |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2000
Messaggi: 551
|
Se misuri pixels allora sono interi.Esempio: potresti misurare sullo schermo 2,5 pixels? |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:41.



















