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

邵东做网站的公司seo课程总结怎么写

邵东做网站的公司,seo课程总结怎么写,合肥市网站制作,网站开发平台在 OpenGL系列(六)变换 中,一个目标物体经过模型矩阵、观察矩阵和投影矩阵的变换才能正常显示出来,其中模型矩阵主要针对目标物体,它会影响物体的位姿。观察矩阵和投影矩阵主要针对观察者而已,这两个变换决…

    在 OpenGL系列(六)变换 中,一个目标物体经过模型矩阵、观察矩阵和投影矩阵的变换才能正常显示出来,其中模型矩阵主要针对目标物体,它会影响物体的位姿。观察矩阵和投影矩阵主要针对观察者而已,这两个变换决定了观察者以怎样的视角观察世界,可以把观察者比作一台摄像机,摄像机拍摄景象的角度由观察矩阵和投影矩阵决定。

    在本例中要实现摄像机类Camera,该类主要向外提供观察矩阵和投影矩阵,类定义如下。

class Camera {
public:Camera();virtual ~Camera();glm::mat4 getViewMatrix();virtual glm::mat4 getProjectionMatrix();
private:glm::vec3 mPosition = glm::vec3(0.0f,0.0f,1.0f);glm::vec3 mUp = glm::vec3(0.0f,1.0f,0.0f);glm::vec3 mRight = glm::vec3(1.0f,0.0f,0.0f);};

   在Camera类主要成员如下。

  1. mPosition表示摄像机的位置。
  2. mUp表示摄像机上方的方向。
  3. mRight表示摄像机右边的方向。
  4. getViewMatrix返回观察矩阵。
  5. getProjectionMatrix返回投影矩阵。

投影矩阵有两种,一种是正交投影矩阵,一种是透视投影,因此可以从Camera派生出两个子类,一个是OrthographicCamera表示正交投影摄像机,一个是PerspectiveCamera表示透视投影摄像机。

正交投影摄像机类为OrthographicCamera,定义如下。

class OrthographicCamera: public Camera{
public:OrthographicCamera(float left,float right,float top,float bottom,float near,float far);~OrthographicCamera();glm::mat4 getProjectionMatrix() override;private:float mLeft{0.0f};float mRight{0.0f};float mTop{0.0f};float mBottom{0.0f};float mNear{0.0f};float mFar{0.0f};
};

OrthographicCamera主要成员解析如下。

mLeft、mRight、mTop、mBottom、mNear、mFar分别表示裁剪空间的左、右、上、下、近、远。

getProjectionMatrix重新了父类的方法,返回正交投影摄像机的投影矩阵。

透视投影摄像机类为PerspectiveCamera,定义如下。

class PerspectiveCamera: public Camera{
public:PerspectiveCamera(float fovy, float aspect, float near, float far);~PerspectiveCamera();glm::mat4 getProjectionMatrix() override;
private:float mFovy{0.0f};float mAspect{0.0f};float mNear{0.0f};float mFar{0.0f};
};

PerspectiveCamera主要成员解析如下。

  1. mFovy表示视张角
  2. mAspect表示宽高比
  3. mNear表示近裁剪面
  4. mFar表示远裁剪面。

类定义完后,接下来实现返回观察矩阵和投影矩阵。

观察矩阵的计算方法如下。

glm::mat4 Camera::getViewMatrix(){glm::vec3 front = glm::cross(mUp,mRight);glm::vec3 center = mPosition + front;return glm::lookAt(mPosition,center,mUp);
}

    观察矩阵的计算步骤如下。

  1. 对mUp和mRight进行叉乘得到向前的向量
  2. 当前位置加上向前向量得到观察的中心点,只要沿着该向量向前任何一个点都可以作为观察中心点。
  3. 通过lookAt返回观察矩阵,第1个参数是摄像机的位置,第2个参数是观察中心点,第3个参数是摄像机向上的向量

   正交投影摄像机和透视投影摄像机的观察矩阵是一样的,所以放到父类Camera实现,但是投影矩阵就有差异,所以放到各自子类实现。

    正交投影摄像机的投影矩阵实现如下。

glm::mat4 OrthographicCamera::getProjectionMatrix() {return glm::ortho(mLeft,mRight,mBottom,mTop,mNear,mFar);
}

    调用glm的ortho即可返回正交投影矩阵。

    透视投影摄像机的投影矩阵实现如下。

glm::mat4 PerspectiveCamera::getProjectionMatrix() {return glm::perspective(glm::radians(mFovy),mAspect,mNear,mFar);
}

    调用glm的perspective可返回投影投影矩阵。

该示例的工程已经上传到,地址如下

示例工程代码

   在开发过程中,首先要确定射线机的类型,以确定是创建OrthographicCamera对象还是PerspectiveCamera对象,摄像机对象创建好以后,一般不会修改投影矩阵,但是经过修改摄像机的观察角度,通过对Camera的mPosition、mRight和mUp可以改变观察的角度。有以下情况。

   修改mPosition可以摄像机的前后左右上下移动。

   修改mUp可以实现类似点头的效果。

  修改mRight可以实现摇头的效果

   同时修改mUp和mRight可以实现观察角度的左右倾斜。

  同时修改mPosition和mRight可以实现围绕某个点左右转动,假设围绕转动的点是某个物体的中心点,转动一圈可以观察到物体前后左右4个面

   同时修改mPosition和mUp可以实现围绕某个点上下转动,转动一圈可以观察某个物体的上、下、前、后4个面。

http://www.yidumall.com/news/43720.html

相关文章:

  • 新闻静态网站模板网页seo搜索引擎优化
  • 嘉兴网站建设咨询百度客服怎么联系
  • 上海发布公众号下载安装廊坊百度快照优化哪家服务好
  • xampp wordpress 花生壳厦门seo管理
  • 玉环哪里有做网站精准拓客软件哪个好
  • 网站建设实习小结关键词优化排名软件哪家好
  • wordpress 分享微信 插件厦门seo优
  • 南昌网站搭建公司 赣ICPseo入口
  • 做第三方的qq互联接口时_回调到自己的网站时要延时很久是什么原因seo优化是做什么的
  • 知名网站建设公司 北京国外产品推广平台
  • 凡科是免费做网站吗网店推广的重要性
  • 制作b2c网站估价广州seo优化电话
  • 怎么利用网站做cpa推广网站改版seo建议
  • 长沙优化网站排名智慧教育
  • 淘宝联盟怎么做网站推广草根seo博客
  • 苏州网站建设服务公司如何自己创建网站
  • 商务网站规划与建设课设的项目需求seo如何优化一个网站
  • 海尔网站推广策划方案刷粉网站推广便宜
  • offic做网站的软件chrome官网
  • 比较大网站建设公司阿里云域名查询
  • zblog做企业网站好吗怎么做一个网站平台
  • 用table做网站同城广告发布平台
  • 开发公司没有资质有什么影响萧山市seo关键词排名
  • 如何建立网站教程合肥网站优化技术
  • 支付功能网站建设引流推广的句子
  • wordpress缩写是什么意思优化落实疫情防控新十条
  • 做dw网站图片怎么下载游戏推广员
  • 滕州网站建设深圳竞价托管公司
  • 做商品网站的教学视频教程网络推广优化网站
  • 布吉做棋牌网站建设实时疫情最新消息数据