http://img526.imageshack.us/img526/2439/73142885.jpg oto siatka
tworzę ją tak:
__fastcall TGridBuilderDisplay::TGridBuilderDisplay(float CELL_SIZE, float size,float heading, float glop)
{
pointi = -1;
gridmodel = new TachoGLModel;
use = false;
TStringList * s = new TStringList();
int x,y;
this->CELL_SIZE = CELL_SIZE;
this->size = size;
for (x = 0; x < CELL_SIZE; x++) {
for (y = 0; y < CELL_SIZE; y++) {
s->Add("begin(gl_quads);");
s->Add("glVertex3f("+POINT_TO_BGLCMD( triplesingletoT3DPOINTA(x*size,y*size,0.0) )+");");
s->Add("glVertex3f("+POINT_TO_BGLCMD( triplesingletoT3DPOINTA(x*size,(y+1)*size,0.0) )+");");
s->Add("glVertex3f("+POINT_TO_BGLCMD( triplesingletoT3DPOINTA((1+x)*size,(y+1)*size,0.0) )+");");
s->Add("glVertex3f("+POINT_TO_BGLCMD( triplesingletoT3DPOINTA((1+x)*size,y*size,0.0) )+");");
s->Add("end;");
}
}
gridmodel->LoadFromBGLCMD(s);
gridmodel->CalcCenterPoint();
gridmodel->RotateModel(2,90.0f);
gridmodel->CalcCenterPoint();
gridmodel->CalculateMinMax();
gridmodel->CalcFaceCenterPoint();
delete s;
}
i obracam o 90 stopni
co powinno mi dac ładna pozioma wzgledem osi XZ siatke a widze ukośna siatke (pod kątem zamiast idealnei pozioma)
http://img338.imageshack.us/img338/6065/95565288.jpg
z kolei obracam tak:
void __fastcall TachoGLModel::RotateModel(int dimension, float angle)
{
int i;
t3dpoint p,addme;
for (i = 0; i < VBO_V.Length; i++) {
p = vectors_add(VBO_V[i], reverse_point(CENTER_POINT)); //punkt przeniesiony na srodek bryly
addme = CENTER_POINT;
if (dimension == 0) { //XZ
addme.y = 0.0f;
VBO_V[i].x = cos(angle*imopi)*p.x - sin(angle*imopi)*p.z;
VBO_V[i].z = sin(angle*imopi)*p.x + cos(angle*imopi)*p.z;
}
if (dimension == 1) { //XY
addme.z = 0.0f;
VBO_V[i].x = cos(angle*imopi)*p.x - sin(angle*imopi)*p.y;
VBO_V[i].y = sin(angle*imopi)*p.x + cos(angle*imopi)*p.y;
}
if (dimension == 2) { //ZY
addme.x = 0.0f;
VBO_V[i].z = cos(angle*imopi)*p.z - sin(angle*imopi)*p.y;
VBO_V[i].y = sin(angle*imopi)*p.z + cos(angle*imopi)*p.y;
}
VBO_V[i] = vectors_add(VBO_V[i],addme); //dodaj aby to byla poprawna pozycja
}
}
co jest źle :(