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

博客给出螺旋线方程,圈数控制量k在m=10时的计算方式,要求用红、绿、蓝三色画出宽度为4且圈数是10的螺旋线沿X、Y、Z三轴正向的平行投影图形,并给出了实现该功能的代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

已知螺旋线方程:
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();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值