`

图形学上机考试题实现代码

360 
阅读更多

题目:

已知螺旋线方程:
z=r*cos(t*k);
x=r*sin(t*k); 
y=300*t;  
(k=m*3.14/180*360   m=10)
r为半径,t为时间,k为螺旋线的圈数控制量


分别采用红、绿、蓝三色画出宽度为4且圈数是10的螺旋线
沿X,Y,Z三轴正向的平行投影图形。
实现代码:

void CDrawSpringView::OnDraw(CDC* pDC)
{
 CDrawSpringDoc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);
 // TODO: add draw code for native data here
 double k = 10 * 3.14 / 180 * 360,t = 0.0;
 CPoint pt1[500],pt2[500],pt3[500];
 CPen redPen,greenPen,bluePen;

 redPen.CreatePen(PS_SOLID,4,RGB(255,0,0));
 greenPen.CreatePen(PS_SOLID,4,RGB(0,255,0));
 bluePen.CreatePen(PS_SOLID,4,RGB(0,0,255));
 
 for(int i = 0; i < 500; i++)
 {
        pt1[i].x = (long)(30 * cos(t * k));
  pt1[i].y = (long)(30 * sin(t * k));
  pt2[i].x = (long)(30 * sin(t * k));
  pt2[i].y = (long)(300 * t);
  pt3[i].x = (long)(300 * t);
     pt3[i].y = (long)(30 * cos(t * k));
  t += 0.002;
 }
 pDC->SetViewportOrg(100,100);
 pDC->SelectObject(redPen);
 pDC->Polyline(pt1,500);
 redPen.DeleteObject();

 pDC->SetViewportOrg(200,50);
 pDC->SelectObject(greenPen);
  pDC->Polyline(pt2,500);
 greenPen.DeleteObject();

 pDC->SetViewportOrg(240,100);
 pDC->SelectObject(bluePen);
 pDC->Polyline(pt3,500);
 bluePen.DeleteObject();
}



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics