实现向下移动:
向左
键盘向右
实现Z的缩放
实现X的放大
实现R的旋转
七、思考题(尽量做,计入成绩):
1、将三角形A(250,200),B(100,100),C(300,200)绕P(200,100)点旋转45°,求旋转后的三角形的坐标。 要求画出原三角形、坐标系、点P,旋转后得到的新三角形。――要求上机完成
2、如何较好地绘出一个平面直角坐标系? (1)Scale法
通过自定义左上角和右下角坐标来设置新的坐标系统。用户通过自定义坐标时,一般先选定ScaleMode=0,然后设定用户自定义坐标ScaleMode=3,最后用Scale方法定义坐标系。 (2)通过对象属性ScaleLeft和ScaleTop直接赋值自定义坐标系
3、在Turbo C中如果要编写菜单的实现程序,是什么步骤?
首先建立类向导,然后在Project的Cshiyan5View下的,Message是command下建立一个新的成员函数。然后设好ID,并且名字可以改成想要的。建好后就可以在函数体中添加代码,来实现菜单。 例如:
void CShiyqan5View::OnMenuTransformTranslate() {
// TODO: Add your command handler code here int nX = 50;
int nY = 80; //平移的X坐标和Y坐标 for(int i=0; i<3; i++) { Pt[i].x += nX; Pt[i].y += nY; }
RedrawWindow();
4、如果OnKeyDown函数中不加RedrawWindow()语句,会出现什么结果?为什么? RedrawWindow()是用来触发Ondraw函数的,如果不用则无法进行调用。
5、为什么旋转程序的结果和预计的不一样?
因为P点是左上角的一个点,随着三角形的旋转,围绕着的中心点不断向外延伸出去。这样就和预想的结果有些不同了。
八、实验体会
通过这次试验,我学到了图形变换的基本方法,同时初步掌握映射菜单消息和捕获键盘消息的方法。根据实验指导书的要求,以三角形为例,使用Visual C++实现二维图形的平移、旋转和缩放功能。
在映射平移的菜单消息中,触发平移函数。使用RedrawWindow();这条语句,该行代码必不可少,用于触发OnDraw()函数。然后在实现缩放和平移的内容。
在做实验时我一直编译不通过,经过老师的提点之后,发现我一开始是在Frame下建立类向导,而实际是应该在View下建立,但是我只是把相应的代码从程序中删除了,而没有实际把他们删掉,使得程序总是编译不通过。经过老师的提点后,发现其实错误根本还没有完全删除,再改正之后,程序才得以编译成功。
添加捕获键盘的消息,在实现键盘上下左右的位移,通过上面的实验指导书中的内容加以改编,可以完成,还需加上case 和要用的按钮。在添加ZXR的虚键时,算了下他们相对应的ASCII码,之后进行编写代码,把之前做的缩放、旋转加进去,这样即可实现。
按照实验内容,共做了13步实验,并加以实现。
九、注意及特别说明
1、 实验内容及步骤中的前9步为必须完成的实验内容,第10步至第13步,请同学们根据自己的兴趣选
做;
2、 如对Visual C++的编译环境不熟悉,请课下提前参考Visual C++的相关书籍和MSDN。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库计算机图形学 图形变换(3)在线全文阅读。
相关推荐: