C应用程序设计教程第2版第05章-WPF图形图像编程.ppt

C应用程序设计教程第2版第05章-WPF图形图像编程.ppt

  1. 1、本文档共153页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本书只讨论透视投影PerspectiveCamera类,该类常用属性如下: Position和LookDirection:照相时,照相机位置和镜头方向不同,可以得到不同的场景,Position表示照相机的位置,LookDirection表示镜头方向。在程序设计中,可能要从不同角度观察一个3D图形,例如旋转360度观察,必须在移动照相机位置同时,还要改变镜头方向对准3D图形,才能正确显示不同观察角度的图形。 FieldOfView:表示照相机的水平视角。这是照相机的一个参数,不同的照相机的水平视角是不同的,广角相机取景范围要大一些。 UpDirection:定义照相机的向上方向,默认值为世界坐标y轴方向。 NearPlaneDistance和FarPlaneDistance:照相机镜头在距离3D物体太近或太远,都不能得到清楚的图像,这两个属性表示在NearPlaneDistance以内和FarPlaneDistance以远的3D图形不被照相机处理,或者说被裁剪。一般可使用默认值。 【例5.53】用键盘控制照相机围绕Y轴旋转,从不同方位观察立方体。步骤如下: (1)修改例5.51,在Window1.xaml.cs文件头部增加如下语句: using System.Windows.Media.Media3D; (2)在Window1类中增加字段:PerspectiveCamera pcamera; (3)在Window1类构造函数最后增加语句: pcamera = (PerspectiveCamera)viewport3D.Camera; (4)选中Window1控件,为其增加KeyDown事件函数如下: private void Window_KeyDown(object sender, KeyEventArgs e) { RotateTransform3D myRotateTransform3D = new RotateTransform3D(); AxisAngleRotation3D myAxisAngleRotation3d = new AxisAngleRotation3D(); myAxisAngleRotation3d.Axis = new Vector3D(0, 1, 0); Point3D p = pcamera.Position; switch (e.Key) { case Key.Left: myAxisAngleRotation3d.Angle = 10; break; case Key.Right: myAxisAngleRotation3d.Angle = -10; break; } myRotateTransform3D.Rotation = myAxisAngleRotation3d; p = myRotateTransform3D.Transform(p); p.Y = 5; pcamera.Position = p; pcamera.LookDirection = new Vector3D(-pcamera.Position.X, -5, -pcamera.Position.Z); } (5)编译后运行,可以从不同角度观察立方体。 5.11.5 定义3D模型形状 一个3D物体一般由若干曲面组成,任意曲面都可以由若干三角形平面组成,见图5.31,该图用三角形平面组成一个圆柱体。一个三角形平面由三角形的三个顶点确定,一般把所有这些确定三角形平面的点叫做顶点。WPF所谓3D物体建模就是记录3D物体所使用的所有三角形数据,每个三角形用3个顶点来描述。 WPF 用MeshGeometry3D类记录任何几何形状3D模型数据,仅支持笛卡尔坐标系。该类Positions 属性是一个Point3D结构数组。可使用两种方法记录组成3D图形表面三角形数据,方法1是用Positions 属性记录组成3D图形表面所有三角形顶点数据,例5.43就是采用这个方法,立方体有6个面,每个面用两个三角形描述,因此需要12个三角形,每个三角形用3个顶点定义,Positions 属性记录这36个顶点,Positions 属性的Point3D结构数组所引号为0、1、2元素定义第一个三角形,3、4、5定义第二个三角形等等。方法2用Positions 属性的Point3D结构数

文档评论(0)

报告论文库 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档