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

学生作业制作网站wordpress伪春菜

学生作业制作网站,wordpress伪春菜,网站 目录访问,哪个网站上做ppt比较好看题目 光线追踪的核心算法: 1.光线的生成 2.光线与三角的相交 题解 1.光线的生成 如课件中的图所示#xff1a; image plane 就是 代码中的scene的FrameBuffer。 但是#xff0c;FrameBuffer 是窗口坐标系中#xff0c;而光线是世界坐标系中的。所以我们需要将scene中的屏…题目 光线追踪的核心算法: 1.光线的生成 2.光线与三角的相交 题解 1.光线的生成 如课件中的图所示 image plane 就是 代码中的scene的FrameBuffer。 但是FrameBuffer 是窗口坐标系中而光线是世界坐标系中的。所以我们需要将scene中的屏幕坐标 p o s s c r e e n pos_{screen} posscreen​转换为世界坐标 p o s w o r l d pos_{world} posworld​, 这个就可以按照作业3 坐标转换回顾 中局部坐标到窗口坐标的变换进行逆变换就可以了。 为了简化操作观察点在原点image plane 在 ( 0 , 0 , − 1 ) (0,0,-1) (0,0,−1)位置如此世界变换矩阵、观察矩阵都是单位矩阵。接下来只需要做投影变换、透视除法和视口变换的逆变换即可。由于z值已知所以在推算的过程中可以不考虑z值。通过手动推算可以得到以下公式 x w o r l d a s p e c t ∗ t a n ( f o v 2 ) ∗ ( 1 − 2 w ∗ x s c r e e n ) y w o r l d t a n ( f o v 2 ) ∗ ( 1 − 2 w ∗ y s c r e e n ) x_{world}aspect * tan(\frac{fov}{2})* (1 - \frac{2}{w} * x_{screen} ) \\ y_{world}tan(\frac{fov}{2})* ( 1 - \frac{2}{w} * y_{screen} ) xworld​aspect∗tan(2fov​)∗(1−w2​∗xscreen​)yworld​tan(2fov​)∗(1−w2​∗yscreen​) x w o r l d x_{world} xworld​ 为世界坐标 x s c r e e n x_{screen} xscreen​ 为屏幕坐标注意最后需要根据左右手和 窗口坐标系和屏幕坐标系的y轴反向加上相应的正负号。 最终image plane 中的 每个像素的世界坐标减去观察点eye_pos(0,0,0) 然后归一化即可得到光线的方向。 具体的代码如下 std::vectorVector3f framebuffer(scene.width * scene.height);float scale std::tan(deg2rad(scene.fov * 0.5f));float imageAspectRatio scene.width / (float)scene.height;// Use this variable as the eye position to start your rays.Vector3f eye_pos(0);int m 0;for (int j 0; j scene.height; j){for (int i 0; i scene.width; i){// generate primary ray directionfloat x0;float y0;// TODO: Find the x and y positions of the current pixel to get the direction// vector that passes through it.// Also, dont forget to multiply both of them with the variable *scale*, and// x (horizontal) variable with the *imageAspectRatio* // 将屏幕坐标转换为NDC坐标// 然后将NDC坐标转换为世界坐标x (2 * (i 0.5) / (float)scene.width - 1) * scale * imageAspectRatio;y (1 - 2 * (j 0.5) / (float)scene.height) * scale;Vector3f dir Vector3f(x, y, -1); // Dont forget to normalize this direction!dir normalize(dir);framebuffer[m] castRay(eye_pos, dir, scene, 0);}UpdateProgress(j / (float)scene.height);}光线和三角形相交 课程中介绍了两种方式第一种比较好理解就是先判断射线是否和平面相交如果相交在判断交点是否在三角形内部。 如ppt 中所示 第二种方式Moller Trubmber 算法这种方式可以一次计算出 t以及交点在重心坐标系中的坐标值。Moller Trubmber 算法的推导可以参考文档 根据公式实现的代码如下 bool rayTriangleIntersect(const Vector3f v0, const Vector3f v1, const Vector3f v2, const Vector3f orig,const Vector3f dir, float tnear, float u, float v) {// TODO: Implement this function that tests whether the triangle// thats specified bt v0, v1 and v2 intersects with the ray (whose// origin is *orig* and direction is *dir*)// Also dont forget to update tnear, u and v.// reference: moller trubmbore algorithmVector3f v0v1 v1 - v0;Vector3f v0v2 v2 - v0;Vector3f pvec crossProduct(dir, v0v2);float det dotProduct(v0v1, pvec);if (fabs(det) 1e-8) return false;float invDet 1 / det;Vector3f tvec orig - v0;u dotProduct(tvec, pvec) * invDet;if (u 0 || u 1) return false;Vector3f qvec crossProduct(tvec, v0v1);v dotProduct(dir, qvec) * invDet;if (v 0 || u v 1) return false;tnear dotProduct(v0v2, qvec) * invDet;return tnear 0; }结果 作业答案 本次作业的答案放在的git仓库中作业地址
http://www.hkea.cn/news/14386945/

相关文章:

  • 网站去哪备案微服务网站
  • 免费炫酷网站模板说旅游网页设计作业
  • 如何做ptp刷流量的网站百度6大核心部门
  • 广州做网站哪间公司好做暧网站免费
  • 锦州网站建设案例免费商城网站建设平台
  • 灵武住房和城乡建设厅网站国美在线网站域名建设
  • 网站上的按钮怎么做成都旅游网站
  • 简述一个网站开发流程杭州精品网站建设公司
  • 云南网站建设维护ppt里做网站效果
  • 连云港市赣榆区建设局网站为什么很多网站在维护
  • 专业手机网站建设推荐WordPress发表心情
  • 网站建设主页怎么样做电商赚钱
  • 笑话网站html模板上海市工程建设监理协会网站
  • 重庆招生院校网站浏览器网址导航大全
  • 上海网站建设哪家强一起生活小程序怎么注册
  • 做好网站怎么做app服务器和网站的关系
  • 福建省建设厅考试网站男人女人做羞羞事网站
  • 帮别人做ppt赚钱的网站酒店找人做网站
  • saas建站平台源码网页版微信怎么登陆
  • 同时优化几个网站wordpress 中英文
  • 音乐网站html模板wordpress请求超时
  • 郑州seo网站有优化竞价推广关键词
  • 成都网站建设兼职百度搜索引擎广告位的投放
  • 网站开发私活wordpress 问答模板
  • 招生网站建设策划方案企业经营沙盘seo优化
  • 如果想看网站的收费电影应该怎么做wordpress批量管理
  • 柳林网站建设wordpress 在线商城
  • 网站建设合同范本-经过律师审核百度趋势搜索大数据
  • 那个网站做视频没有水印安徽津城建设工程有限公司网站
  • 网站建设业务饱和了吗西安个人建网站