PDA

View Full Version : [vc6++] vettori e struct


okay
07-05-2004, 09:00
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??

cavay
10-05-2004, 00:53
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 ???

verloc
10-05-2004, 07:20
:confused:
Se misuri pixels allora sono interi.Esempio: potresti misurare sullo schermo 2,5 pixels?