二次曲面来张合照:

        hitable *list[9];list[0] = new sphere(vec3(0.0,-100.5,-1), 100, new lambertian(vec3(0.8, 0.8, 0.0)));list[1] = new quadratic_ellipsoid(vec3(-6.4, 1, 0), 0.7, 1.0, 1.5, new lambertian(vec3(0.0, 0.1, 0.5)));list[2] = new quadratic(vec3(-4.5, 1.5, 0), 0.5, 0.7, 1, -1, 1, 1.5, new lambertian(vec3(0.1, 0.1, 0.5)));list[3] = new quadratic(vec3(-2.6, 1.5, 0), 0.15, 0.2, 0.2, -1, -1, 1.5, new lambertian(vec3(0.2, 0.1, 0.5)));list[4] = new quadratic(vec3(-1.0, 1.5, 0), 0.5, 0.7, 1, -1, 0, 1.5, new lambertian(vec3(0.3, 0.1, 0.5)));list[5] = new quadratic(vec3(0.6, 1.5, 0), 0.5, 0.7, 1, 0, 1, 1.5, new lambertian(vec3(0.5, 0.1, 0.5)));list[6] = new quadratic_paraboloid(vec3(2.5, 1.5, 0), 1, 2, 1.5, new lambertian(vec3(0.7, 0.4, 0.5)));list[7] = new quadratic_hyperbolic_paraboloid(vec3(5.0, 1.5, 0), 0.25, 2, 1.5, 1, new lambertian(vec3(0.9, 0.2, 0.5)));list[8] = new sphere(vec3(0, 2, -6), 2.5, new metal(vec3(0.5, 1.0, 0.5), 0.0));hitable *world = new hitable_list(list,9);vec3 lookfrom(0,5,20);vec3 lookat(0,1,0);float dist_to_focus = (lookfrom - lookat).length();float aperture = 0.0;camera cam(lookfrom, lookat, vec3(0,1,0), 20, float(nx)/float(ny), aperture, 0.7*dist_to_focus);

输出图片:

输出图片2048*1024:

问题三十五: 怎么用ray tracing画二次曲面(quadratic surfaces)(5)——汇总相关推荐

  1. 问题三十五: 怎么用ray tracing画二次曲面(quadratic surfaces)(3)——椭球抛物面

    35.3 椭球抛物面 35.3.1 数学推导 椭球抛物面的方程如下: 所以,其一:我们需要对两个实根进行排序(先处理小的) 另外,由于,是开放曲面,也就是,光线有可能撞击到曲面的正反两面,所以,对于撞 ...

  2. 问题三十五: 怎么用ray tracing画二次曲面(quadratic surfaces)(1)——椭球面

    二次曲面包括:球面.椭圆球面.单页双曲面.双页双曲面.椭圆锥面.椭圆柱面.椭圆抛物面.双曲抛物面等等. 注意到:只有球面和椭球面是封闭面,其他的都是开放面. 二次曲面是有方程的(我们已经学过的多边形. ...

  3. 问题三十五: 怎么用ray tracing画二次曲面(quadratic surfaces)(2)——单页双曲面、双页双曲面、椭圆锥面、椭圆柱面

    35.2.1 数学推导 单页双曲面.双页双曲面.椭圆锥面.椭圆柱面. 这四个二次曲面方程共同形式: 但是,注意到,这些曲面都是开放曲面.在画图时,需要限制曲面的范围(以免曲面覆盖整个画面). 我们在这 ...

  4. 问题三十五: 怎么用ray tracing画二次曲面(quadratic surfaces)(4)——双曲抛物面(马鞍面)

    35.4 双曲抛物面(马鞍面) 35.4.1 数学推导 双曲抛物面的方程如下: 35.4.2 看C++代码实现 -------------------------------------------- ...

  5. 问题三十三:怎么用ray tracing画特殊长方体(box)

    33.1 怎么用ray tracing画特殊长方体 在光线追踪中被用到的一种常见形态是长方体盒子.这种基本物体被用于可见物体和包围盒,包围盒被用于加速复杂物体的相交测试. 吐槽:单词都认识,就是不知道 ...

  6. 问题五十:怎么用ray tracing画blobs

    这一节,画这个: 参考文献: Blinn, J.F., A generalization of algebraic surfacedrawing. ACM Trans. Graph. 1(3) , 2 ...

  7. 问题六十:怎么用ray tracing画回旋体(rotational sweeping / revolution)

    60.1 概述 回旋体,大概是长这个样子: 回旋体是指曲线(称为"基本曲线")围绕y轴转一圈得到的图形. (基本曲线是由多段b-spline曲线段连接而成) 这里先强调一下: 上图 ...

  8. NeHe OpenGL第三十五课:播放AVI

    NeHe OpenGL第三十五课:播放AVI 在OpenGL中播放AVI: 在OpenGL中如何播放AVI呢?利用Windows的API把每一帧作为纹理绑定到OpenGL中,虽然很慢,但它的效果不错. ...

  9. 微信小程序把玩(三十五)Video API

    原文:微信小程序把玩(三十五)Video API 电脑端不能测试拍摄功能只能测试选择视频功能,好像只支持mp4格式,值得注意的是成功之后返回的临时文件路径是个列表tempFilePaths而不是tem ...

最新文章

  1. 两下或多下回车造成数据库多次提交事物的解决方法
  2. Coding-字符串
  3. springboot2 war页面放在那_成为微服务架构师--SpringBoot2学习笔记
  4. docker klee tutorial_在容器中安装新的程序
  5. POJ 3159 Candies
  6. 关于有源晶振倍频干扰的问题
  7. android 仿微信侧滑删除SwipeListView实例
  8. 深入分析AbstractQueuedSynchronizer独占锁的实现原理:ReentranLock
  9. java配置openjdk_Java大新闻不断涌现:Java SE 6和OpenJDK
  10. 第2、3讲 图像的存储格式
  11. php处理结果集,php中mysqli 处理查询结果集的几个方法
  12. python亿级mysql数据库导出_Python之csv文件从MySQL数据库导入导出的方法
  13. Django web框架-----Django连接本地现有mysql数据库
  14. 【剑指Offer学习】【面试题40:数组中仅仅出现一次的数字】
  15. android日期选择区间控件_Android日期时间选择器实现以及自定义大小
  16. maven命令-P 参数引发的思考
  17. php 设置页面最大执行时间 set_time_limit max_execution_time
  18. 思科ccnp Mac地址漂移使用的场景
  19. 方法重载和重写的区别
  20. 爬虫初探:弱水三千只取一瓢,房源三千全都想要

热门文章

  1. Unity3D播放视频
  2. 运行HelloJersey遇到异常解决方法
  3. 李航《统计学习方法》第四章课后答案链接
  4. Leetcode 983.最低票价
  5. LaTeX 参考文献的排版与引用
  6. latex插入图像、表格、其他latex脚本时的路径设置
  7. tensorflow 实验过程可重复
  8. Ubuntu: No space left on device,无法创建新文件夹,无法创建新文件,无法存储文件
  9. Java_基础(一)
  10. 2017 Multi-University Training Contest - Team 5 1.Rikka with Candies(压位)