当前位置: 首页 > news >正文

广州地铁站路线图完整的网页设计代码

广州地铁站路线图,完整的网页设计代码,盐田高端网站建设,wordpress用什么系统好相机这部分比想象当中要难缠。现在也不是特别清楚#xff0c;只是根据教程XNARecipes中第二章的2、3两节做一些必要的记录。 最简单的例子#xff1a;相机在初始位置#xff0c;绕着Up向量 相机在(0,0,0)初始坐标#xff0c;朝(0,0,-1) Forward方向观察#xff0c;以默认…相机这部分比想象当中要难缠。现在也不是特别清楚只是根据教程XNARecipes中第二章的2、3两节做一些必要的记录。 最简单的例子相机在初始位置绕着Up向量 相机在(0,0,0)初始坐标朝(0,0,-1) Forward方向观察以默认的(0,1,0) Up向量作为向上方向。在这个情况中可以使用以下代码 1: Vector3 cameraPosition new Vector3(0, 0, 0); 2: Vector3 cameraTarget new Vector3(0, 0, -1); 3: Vector3 cameraUpVector new Vector3(0, 1, 0); 4:  5: viewMatrix Matrix.CreateLookAt(cameraPosition, cameraTarget, cameraUpVector); Vector3 direction camaraTarget – cameraPosition (0, 0, -1) 这一句虽然在这里很显然但之后的很多问题就是跟这个direction有关。 如果创建一个绕Up向量旋转45度的View矩阵。假设头就是相机只要向右旋转45度向右看。当计算新View矩阵时Position向量和Up向量保持不变但Target向量变了。可以通过将使用45度旋转“转换”默认的(0,0,-1) Target向量获取新Target向量。这意味着新的Target向量是初始Target向量的旋转版本。下面是代码 1: Matrix cameraRotation Matrix.CreateRotationY(MathHelper.PiOver4); 2: Vector3 cameraPosition new Vector3(0, 0, 0); 3: Vector3 cameraUpVector new Vector3(0, 1, 0); 4: Vector3 cameraOriginalTarget new Vector3(0, 0, -1); 5:  6: Vector3 cameraRotatedTarget Vector3.Transform(cameraOriginalTarget, cameraRotation); 7: viewMatrix Matrix.CreateLookAt(cameraPosition, cameraRotatedTarget, cameraUpVector); 由于Position没变那么Vector3 direction camaraTarget – cameraPosition 不再是 (0, 0, -1)。 也就是你把头转过去看旁边的东西了而不再是正前方的某个东西 第二个例子相机在初始位置任意旋转 现在进一步来看。你想使相机绕着任意轴旋转而不是绕着Up向量。例如绕着(1,0,0) Right轴旋转45度假设头就是相机这就相当于抬起头45度看天空。和前面一个例子一样Target向量会变化Position向量保持不变。 但是这种情况中Up向量会发生变化头仰起了嘛。在前面的例子中你将头部转向右边Up向量并不会变化。这个例子中将头部向上旋转Up向量和Target向量都要发生改变。 变换Up向量和变换Target向量的方法是一样的通过旋转矩阵变换初始Up向量获取新的Up向量。下面是代码 1: Matrix cameraRotation Matrix.CreateRotationX(MathHelper.PiOver4); 2: Vector3 cameraPosition new Vector3(0, 0, 0); 3: Vector3 cameraOriginalUpVector new Vector3(0, 1, 0); 4: Vector3 cameraOriginalTarget new Vector3(0, 0, -1); 5:  6: Vector3 cameraRotatedTarget Vector3.Transform(cameraOriginalTarget, cameraRotation); 7: Vector3 cameraRotatedUpVector Vector3.Transform(cameraOriginalUpVector, cameraRotation); 8: viewMatrix Matrix.CreateLookAt(cameraPosition, cameraRotatedTarget, cameraRotatedUpVector); 这里的“任意”旋转矩阵只是一个简单绕x轴的旋转。这个代码也可以处理任何旋转例如下面的这个情况它组合了三根轴上的旋转。下面的代码生成一个矩阵这个矩阵是绕z轴–45度和y轴22.5度x轴90度旋转的组合 1: Matrix cameraRotation Matrix.CreateRotationX(MathHelper.PiOver2)* Matrix.CreateRotationY(MathHelper.Pi/8.0f)* Matrix.CreateRotationZ(-MathHelper.PiOver4); 但这时要小心了别把脖子扭了。 Vector3 direction camaraTarget – cameraPosition 不是 (0, 0, -1)。为什么强调这个direction虽然到现在为止还体现不出什么因为没有涉及到移动。这也是刚开始看教程时容易忽略的一点以至于看到后面糊涂了。 这里要说明一点顺时针转是正逆时针转是负。还有从人的视觉出发只要Up向量大致朝上物体是不会颠倒的。这也是后面Quake式相机只有左右和上下的旋转。也就是抬头低头看左看右没有歪着脖子的。 第三个例子相机在指定位置任意旋转 对于这个例子教程上的解释不大明白。特别是按照前两个例子的顺序学下来。 现在必须要有一个direction方向。先看代码 1: Matrix cameraRotation Matrix.CreateRotationX(MathHelper.PiOver2)* Matrix.CreateRotationY(MathHelper.Pi/8.0f)*Matrix.CreateRotationZ(-MathHelper.PiOver4); 2: Vector3 cameraPosition new Vector3(10, 20, 30); 3: Vector3 cameraOriginalTarget new Vector3(0, 0, -1); 4: Vector3 cameraOriginalUpVector new Vector3(0, 1, 0); 5:  6: Vector3 cameraRotatedTarget Vector3.Transform(cameraOriginalTarget, cameraRotation); 7: Vector3 cameraFinalTarget cameraPosition cameraRotatedTarget; 8:  9: Vector3 cameraRotatedUpVector Vector3.Transform(cameraOriginalUpVector, cameraRotation); 10: Vector3 cameraFinalUpVector cameraPosition cameraRotatedUpVector; 11:  12: viewMatrix Matrix.CreateLookAt(cameraPosition, cameraFinalTarget, cameraFinalUpVector); Position是在位置102030。代码中有一个cameraOriginalTarget注意这个Target不是一个点而是一个矢量方向。为什么呢一般来讲设置观察矩阵需要一个视点。假如cameraOriginalTarget代表的是一个点那么direction -10-20-31。因为对于前两个例子00-1既可以表示视点也可以表示方向Position在初始位置。所以当看到Vector3 cameraRotatedTarget Vector3.Transform(cameraOriginalTarget, cameraRotation); 的时候也能够理解视点的位置从00-1变成了xyz方向也从00-1改变到xyz。 但在这个例子中怎么理解这两行 1: Vector3 cameraRotatedTarget Vector3.Transform(cameraOriginalTarget, cameraRotation); 2: Vector3 cameraFinalTarget cameraPosition cameraRotatedTarget; 为什么会有cameraRotatedTarget还有cameraFinalTarget。directioncameraFinalTarget – cameraPosition cameraRotatedTarget 而cameraRotatedTarget是由cameraOriginalTarget变换过来的。我们知道如果cameraOriginalTarget是视点的话那么初始的方向是 direction cameraOriginalTarget -  cameraPosition -10-20-31。 变换的时候Vector3 cameraRotatedTarget Vector3.Transform(cameraOriginalTarget, cameraRotation); cameraOriginalTarget参数所在的位置应该是-10-20-31才对。 从上面的反证中可以得出结论cameraOriginalTarget代表一个方向不代表视点。不像前两个例子中cameraOriginalTarget既是视点又是方向。理解了这个对于 cameraRotatedUpVector和cameraFinalUpVector也能理解了。 到这里看第二节教程所带的源代码才能看明白。特别是自己写的时候出现问题时也能够知道是哪里出了问题。下面是自己写的代码 1: protected override void Initialize() 2: { 3: // TODO: Add your initialization logic her 4: moveSpeed 0.02f; 5:  6: float fov MathHelper.PiOver4; 7: float aspect GraphicsDevice.DisplayMode.AspectRatio; 8: float nearClip 0.5f; 9: float farClip 100.0f; 10: projMat Matrix.CreatePerspectiveFieldOfView(fov, aspect, nearClip, farClip); 11:  12: camPosition new Vector3(30, 30, 30); 13: cameraRotation Matrix.CreateRotationX(-MathHelper.Pi / 8.0f) * Matrix.CreateRotationY(-MathHelper.Pi / 8.0f); 14: UpadteViewMatrix(); 15: base.Initialize(); 16: } 先是Initialize()设置好投影矩阵相机的位置旋转的角度 1: private void UpadteViewMatrix() 2: { 3: Vector3 originalForward new Vector3(-1.7f, -1, -1); 4: Vector3 originalUp new Vector3(0, 1, 0); 5:  6: Vector3 rotatedForward Vector3.Transform(originalForward, cameraRotation); 7: Vector3 rotatedUp Vector3.Transform(originalUp, cameraRotation); 8:  9: Vector3 finalLook camPosition rotatedForward; 10:  11: viewMat Matrix.CreateLookAt(camPosition, finalLook, rotatedUp); 12: } 这里直接将originalTarget这样容易混淆的名字改成originalForward而且是-1.7f-1-1旋转变换之后差不多就是-1-1-1的方向也。因为相机的初始位置是303030而我的观察方向是要看向坐标源点。 1: private void MoveCameraPosition() 2: { 3: Vector3 originalForward new Vector3(-1.7f, -1, -1); 4: Vector3 rotatedForward Vector3.Transform(originalForward, cameraRotation); 5: camPosition moveSpeed * rotatedForward; 6:  7: UpadteViewMatrix(); 8:  9: } 这里camPosition也是朝着源点向前移动变化。
http://www.hkea.cn/news/14301122/

相关文章:

  • 网站空间大小有什么用WordPress影视cms
  • 江西专业网站建设中国建筑网建设通查询证件网
  • 怎样制作企业的网站高科技公司网站模板
  • 网站成品作业上海网站建设方案咨询
  • 贵州省兴义市建设局网站首页个人团购网站 转入备案
  • 自己建设自己的网站自己想开个网站怎么弄
  • 新浦网站制作seo和sem是什么意思啊
  • 什么网站做外贸好旅游网站怎么做才能被关注
  • 网站开发与设计实训总结两千字网站正能量入口
  • 做爰全过程免费的教网站进国企但是签的是外包
  • 2008 iis配置网站如何建立自己的购物网站
  • 福建住房和城乡建设部网站首页西安网站seo优化
  • 我做网站可以赚钱吗常州网站建设系统
  • 长春本地网站制作wordpress迁移所有页面空白
  • 招商网站建设服务商国外数码印花图案设计网站
  • 免费制作永久企业网站宁波模板建站定制网站
  • 温州开发网站公司青岛天河小学网站建设
  • 沈阳高铁站南宁中庭装饰公司电话
  • 网站开发过程会遇到的问题wordpress主题开发工具
  • 哈尔滨专业做网站在线制作头像框
  • 网站建设的实验原理爱做奈官方网站
  • 韩城网站建设韩城网站推广营销活动推广策划
  • 邯郸做紧固件网站甘肃建设银行网站
  • 网站建设推广用兴田德润中交路建子公司最新排名
  • 泰安建设局网站天津搜索引擎优化
  • wordpress登陆页面修改关键词排名优化报价
  • 南沙网站建设哪家好wordpress 全局播放器
  • 长沙知名网站建设三星网上商城官网
  • 网站类型分类网站核验单怎么下载
  • 石家庄行业网站建设网站建设分工表