2007-04-09
图形学上机考试题实现代码
题目:
已知螺旋线方程:
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();
}
发表评论
- 浏览: 89346 次
- 性别:

- 来自: 长春

- 详细资料
搜索本博客
我的相册
cooliris
共 9 张
共 9 张
最近加入圈子
链接
最新评论
-
struts2 OGNL实例化数组的 ...
goodfifa07 写道请问楼主怎么捕获用数组发生的异常把logger级别调到 ...
-- by fuliang -
struts2 OGNL实例化数组的 ...
请问楼主怎么捕获用数组发生的异常
-- by goodfifa07 -
Java nio(三)
不错哦最近项目要用 可以向你请教此类的问题么 我的QQ1067302 希望能得到 ...
-- by bojianpc -
使用Struts2+Spring+Hiber ...
谢谢你的代码 我是一个初学者 ,没有什么资格说什么. 感谢.
-- by huobao89 -
学SSH2时写的入门例子
塔破铁鞋无觅处 谢谢了!
-- by songzhiyou






评论排行榜