glTranslate();함수가 어떤 물체를 이동시켜주잖습니까???
그런데 이동시킬때 특정 물체만을 이동시키는건가요 아님
좌표계가 통째로 이동하는건가요??
물체를 회전시켜야 하는데 회전의 중심점이 잘 잡히지가않네요...ㅠㅠ
표현되는부분의 코드입니다
procedure Display;
var
i,j,k : integer;
xmax,ymax,zmax,vmax,xmin,ymin,zmin,vmin : double;
centerx,centery,centerz,centerv : double;
begin
xmax:=nodex[1]; ymax:=nodey[1]; zmax:=nodez[1]; vmax:=nodev[1];
xmin:=nodex[1]; ymin:=nodey[1]; zmin:=nodez[1]; vmin:=nodev[1];
for i := 1 to nodenum do begin
if nodex[i] >= xmax then xmax := nodex[i]
else if nodex[i] <= xmin then xmin := nodex[i] ;
if nodey[i] >= ymax then ymax := nodey[i]
else if nodey[i] <= ymin then ymin := nodey[i] ;
if nodez[i] >= zmax then zmax := nodez[i]
else if nodez[i] <= zmin then zmin := nodez[i] ;
if nodev[i] >= vmax then vmax := nodev[i]
else if nodev[i] <= vmin then vmin := nodev[i] ;
end;
centerx := (xmax+xmin)/2;
centery := (ymax+ymin)/2;
centerz := (zmax+zmin)/2;
centerv := (vmax+vmin)/2;
//=-------------------------------여기까지 최대값최소값으로 중심점을 찾은 모습.
//=-------------------------------어떤 한쪽으로 치우친 데이터를 넣어도 원점으로 모아 보이게 하려함.
glclear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
// glPushMatrix;
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glScalef(0.3,0.3,0.3);
glTranslate(0,0,0);
glRotatef(anglex, 1, 0, 0);
glRotatef(angley, 0, 1, 0);
glColor4fv(@diffuseMaterial);
//--------------------------------------------------------------------------------
for j := 1 To elenum do begin
i1:=ele1node[j]; i2:=ele2node[j]; i3:=ele3node[j];
x1:=nodex[i1]; y1:=nodey[i1]; z1:=nodez[i1];
x2:=nodex[i2]; y2:=nodey[i2]; z2:=nodez[i2];
x3:=nodex[i3]; y3:=nodey[i3]; z3:=nodez[i3];
BAx := x2-x1; BAy := y2-y1; BAz := z2-z1;
CAx := x3-x1; CAy := y3-y1; CAz := z3-z1;
nx:= (BAy*CAz)-(BAz*CAy);
ny:= (BAz*CAx)-(BAx*CAz);
nz:= (BAx*CAy)-(BAy*CAx);
//----------------------------------------------------------------각 요소들의 법선벡터 잡은 부분
glbegin(GL_TRIANGLES);
glnormal3f( nx , ny , nz );
glVertex3f(x1-centerx, y1-centery, z1-centerz);
glVertex3f(x2-centerx, y2-centery, z2-centerz);
glVertex3f(x3-centerx, y3-centery, z3-centerz); 질문은 이부분입니다!!!!!!!!!!!!!!!!
glend();
end;
//--------------------------------------------------표현
glFlush();
여기서말입니다. glVertex3f 에서 -centerx 을 하게되면 모델의 중심이 원점으로 이동하는것 같더라구요.
회전을 시켰을때도 전체모형의 가운데를 중심으로 회전합니다.
그런데 glVertex3f에서 0,0,0으로 하고 대신 gltranslate 에서 (-centerx ,-centery ,-centerz) 를 하게되면
모델이 중앙이 원점으로 이동하지 않아서 회전을시킬경우 원점을 중심으로 회전하니 이상하게 회전이 됩니다..
단순하게 제가 궁금해하는부분은
glTranslate();함수가 모델만을 이동시키는지 아니면 원점까지 이동시키는지를 확실히 알고싶습니다.
|