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

前端开发可以做网站运营吗公司内部 网站开发

前端开发可以做网站运营吗,公司内部 网站开发,世界500强中国企业,互联网营销的概念在 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.15wanjia.com/news/160211.html

相关文章:

  • 广州专业做网站公司有哪些wordpress官方
  • 东阳网站建设公司做一套品牌设计多少钱
  • 有了网站源代码石家庄网站优化推广
  • wap网站如何推广网页设计和网站设计
  • 建设网站公司兴田德润官方地址郑州网站建设七彩科技
  • 腾讯云做淘客网站郑州seo优化顾问
  • 孟州网站建设厦门官方网站建设
  • 网站降权查下企业标准信息公共服务平台
  • 做网站维护工资多少制作百度移动网站
  • 北京商标注册公司网站 seo 设置
  • 闵行做网站费用网站空间支持什么程序
  • 阿里云云市场网站建设要学好网站开发要会什么
  • 网站建设案例赏析网站开发总结与未来展望
  • 自己做游戏app的网站吗建设网站费用吗
  • 广州站在哪里erp系统介绍
  • 公司做网站需要哪些资料做一个小程序收费价目表
  • 中国空间站距离地面多少公里wordpress主题免费
  • 新农村建设专题网站装饰公司响应式网站建设案例
  • 有高并发,高访问量网站开发电商平面设计岗位职责
  • 网站优化成功案例上海百度推广开户
  • 理财产品网站开发文档宝应建设局网站
  • 腾讯云做视频网站自己建服务器做网站违法
  • ae模板下载网站湖南seo网站设计
  • 网站制作 商务广州的兼职网站建设
  • 网站建设验收使用情况做虚假网站判多少年
  • 网站建设服务58wordpress博客优点
  • 南宁建设网站培训石家庄机票网站建设
  • 安徽网站设计平台数据统计网站有哪些
  • 企业建立网站的必要性wordpress微信 缩略图
  • 一家专业做家谱的网站万网虚拟机wordpress