G
genglimin
Unregistered / Unconfirmed
GUEST, unregistred user!
我画了个立方体,可为什么长宽高看着不一样呢,长和宽一样,高短一些.
定义各个顶点坐标
maxlen := 1.1*sqrt(20*20+20 *20+20*20); //计算旋转时需要的最大长度
boxo[0][0] := -10;
boxo[0][2] := -10;
boxo[0][1] := -10;
//2
boxo[1][0] := 10;
boxo[1][2] := -10;
boxo[1][1] := -10;
//3
boxo[2][0] := 10;
boxo[2][2] := 10;
boxo[2][1] := -10 ;
//4
boxo[3][0] := -10 ;
boxo[3][2] := 10 ;
boxo[3][1] := -10;
//5
boxo[4][0] := -10;
boxo[4][2] := -10;
boxo[4][1] := 10;
//6
boxo[5][0] := 10 ;
boxo[5][2] := -10;
boxo[5][1] := 10 ;
//7
boxo[6][0] := 10;
boxo[6][2] := 10;
boxo[6][1] := 10 ;
//8
boxo[7][0] := -10;
boxo[7][2] := 10;
boxo[7][1] := 10 ;
画图
procedure draw()
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glclearcolor(1,1,0.5,1);
glOrtho(-maxlen/2 ,maxlen /2 , -maxlen/2 ,maxlen /2 , -maxlen/2 ,maxlen /2 );
glLineWidth(2);
glbegin(GL_LINE_LOOP) ; //1
glColor3f(0,0,0);
glVertex3fv(@boxo[0]);
glVertex3fv(@boxo[1]);
glVertex3fv(@boxo[2]);
glVertex3fv(@boxo[3]);
glend;
glLineWidth(2);
//2
glbegin(GL_LINE_LOOP) ;
glColor3f(0,0,0);
glVertex3fv(@boxo[4]);
glVertex3fv(@boxo[5]);
glVertex3fv(@boxo[6]);
glVertex3fv(@boxo[7]);
glend;
glbegin(GL_LINE_LOOP) ; //3
glColor3f(0,0,0);
glVertex3fv(@boxo[0]);
glVertex3fv(@boxo[4]);
glVertex3fv(@boxo[5]);
glVertex3fv(@boxo[1]);
glend;
glbegin(GL_LINE_LOOP) ; //4
glColor3f(0,0,0);
glVertex3fv(@boxo[5]);
glVertex3fv(@boxo[1]);
glVertex3fv(@boxo[2]);
glVertex3fv(@boxo[6]);
glend;
glbegin(GL_LINE_LOOP) ; //5
glColor3f(0,0,0);
glVertex3fv(@boxo[6]);
glVertex3fv(@boxo[2]);
glVertex3fv(@boxo[3]);
glVertex3fv(@boxo[7]);
glend;
glbegin(GL_LINE_LOOP) ; //6
glColor3f(0,0,0);
glVertex3fv(@boxo[7]);
glVertex3fv(@boxo[3]);
glVertex3fv(@boxo[0]);
glVertex3fv(@boxo[4]);
glend;
SwapBuffers(DC);
end;
定义各个顶点坐标
maxlen := 1.1*sqrt(20*20+20 *20+20*20); //计算旋转时需要的最大长度
boxo[0][0] := -10;
boxo[0][2] := -10;
boxo[0][1] := -10;
//2
boxo[1][0] := 10;
boxo[1][2] := -10;
boxo[1][1] := -10;
//3
boxo[2][0] := 10;
boxo[2][2] := 10;
boxo[2][1] := -10 ;
//4
boxo[3][0] := -10 ;
boxo[3][2] := 10 ;
boxo[3][1] := -10;
//5
boxo[4][0] := -10;
boxo[4][2] := -10;
boxo[4][1] := 10;
//6
boxo[5][0] := 10 ;
boxo[5][2] := -10;
boxo[5][1] := 10 ;
//7
boxo[6][0] := 10;
boxo[6][2] := 10;
boxo[6][1] := 10 ;
//8
boxo[7][0] := -10;
boxo[7][2] := 10;
boxo[7][1] := 10 ;
画图
procedure draw()
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glclearcolor(1,1,0.5,1);
glOrtho(-maxlen/2 ,maxlen /2 , -maxlen/2 ,maxlen /2 , -maxlen/2 ,maxlen /2 );
glLineWidth(2);
glbegin(GL_LINE_LOOP) ; //1
glColor3f(0,0,0);
glVertex3fv(@boxo[0]);
glVertex3fv(@boxo[1]);
glVertex3fv(@boxo[2]);
glVertex3fv(@boxo[3]);
glend;
glLineWidth(2);
//2
glbegin(GL_LINE_LOOP) ;
glColor3f(0,0,0);
glVertex3fv(@boxo[4]);
glVertex3fv(@boxo[5]);
glVertex3fv(@boxo[6]);
glVertex3fv(@boxo[7]);
glend;
glbegin(GL_LINE_LOOP) ; //3
glColor3f(0,0,0);
glVertex3fv(@boxo[0]);
glVertex3fv(@boxo[4]);
glVertex3fv(@boxo[5]);
glVertex3fv(@boxo[1]);
glend;
glbegin(GL_LINE_LOOP) ; //4
glColor3f(0,0,0);
glVertex3fv(@boxo[5]);
glVertex3fv(@boxo[1]);
glVertex3fv(@boxo[2]);
glVertex3fv(@boxo[6]);
glend;
glbegin(GL_LINE_LOOP) ; //5
glColor3f(0,0,0);
glVertex3fv(@boxo[6]);
glVertex3fv(@boxo[2]);
glVertex3fv(@boxo[3]);
glVertex3fv(@boxo[7]);
glend;
glbegin(GL_LINE_LOOP) ; //6
glColor3f(0,0,0);
glVertex3fv(@boxo[7]);
glVertex3fv(@boxo[3]);
glVertex3fv(@boxo[0]);
glVertex3fv(@boxo[4]);
glend;
SwapBuffers(DC);
end;