本人要画一个圆柱,并绕Y轴转一个角度,
我自己画了一个,但是就是差一条线,调了很久也没有调出了
哪位高手来帮帮忙
CClientDC *pdc=new CClientDC(this); CPen pen; pen.CreatePen(PS_SOLID,1,RGB(255,0,0,)); CPen *oldpen=(CPen*)pdc->SelectObject(&pen);
const double pi=3.14159; double q,x1,y1,z1; double thy,thx; double xw,zw; thy=0.5; thx=0.5; int gy1,gz1,gy2,gz2; int R,a; R=50; a=20; z1=200; double xmax1,ymax1,zmax1, xmin1, ymin1, zmin1; double xmax2,ymax2,zmax2, xmin2, ymin2, zmin2;
x1=a+R*cos(0); y1=a+R*sin(0); //rot_y zw=z1; xw=x1; x1=zw*cos(thy)-xw*sin(thy); z1=zw*sin(thy)+xw*cos(thy);
gy1=int(y1+150); gz1=int(z1+120);
gy2=int(gy1+150); gz2=int(gz1-50);
ymax1=ymin1=gy1; zmax1=zmin1=gz1; ymax2=ymin2=gy2; zmax2=zmin2=gz2;
for(q=0;q<=2*pi;q+=0.01) { x1=a+R*cos(q); y1=a+R*sin(q);
//rot_y
zw=z1; xw=x1; x1=zw*cos(thy)-xw*sin(thy); z1=zw*sin(thy)+xw*cos(thy); gy1=int(y1+150); gz1=int(z1+120);
gy2=int(gy1+150); gz2=int(gz1-50);
if(gz1>zmax1) {ymax1=gy1, zmax1=gz1;} if(gz1<zmin1) {ymin1=gy1; zmin1=gz1;}
if(gz2>zmax2) {ymax2=gy2, zmax2=gz2;} if(gz2<zmin2) {ymin2=gy2, zmin2=gz2;} pdc->SetPixel(gy1,gz1,RGB(255,0,0)); pdc->SetPixel(gy2,gz2,RGB(255,0,0,));
}
pdc->MoveTo(ymin1,zmin1); pdc->LineTo(ymin2,zmin2); pdc->MoveTo(ymin1,zmin1); pdc->LineTo(ymin2,zmin2); pdc->MoveTo(ymax1,zmax1); pdc->LineTo(ymax2,zmax2);
pdc->DeleteDC();
}