zoukankan      html  css  js  c++  java
  • 6 矩形光源

      首先,让我们制作一个发光的材料。我们需要一个发光函数(我们也可以把它加到hit_record里,这取决于你的设计品位).就像背景,它只告诉光线它是什么颜色,它不反射。这很简单:

        

      这样我就不必让所有非发射材料实现emit(),然后我的基类返回黑色:

        

      接下来,我们将颜色函数中的背景设为黑色,并注意emmit:

        

      现在,我们做一些矩形。矩形通常可以方便地建模人造环境。我很喜欢做等腰矩形,因为它们很简单。(我们会讲到实例化之后再旋转它们).

      首先,这里有一个xy平面的矩形。这样一个平面由它的z值定义。例如,z = k。一个轴向的矩形由x=x0、x=x1、y=y0、y=y1几行定义。

        

      要确定一条光线是否击中这个矩形,我们得先确认光线击中这个平面的位置,回想一下,光线p (t) = a + t*b的z分量由z(t) = az + t*bz定义。重新排列这些项我们可以解出z=k时的t。

      t = (k-az) / bz

      一旦我们有了t,我们就可以把它代入x和y的方程:

      x = ax + t*bx
      y = ay + t*by

      如果x0 < x < x1,而y0 < y < y1,则是命中的。

      矩形方程如下:

        

      撞击函数如下:

        

      如果我们设置一个矩形光源:

        

      我们可以得到下图:

              

            注意光线比(1,1,1)亮。这使得它足够亮,可以照亮物体。

            也可以做一些球形灯。

        

  • 相关阅读:
    redisTemplate
    HttpURLConnection下载文件流
    Quartz集成springMVC 的方案二(持久化任务、集群和分布式)
    https请求
    将一个 JavaBean 对象转化为一个 Map
    Redis实现简单消息队列
    Spring Boot RestTemplate文件上传
    获取java栈异常
    获取 *.properties配置文件内容
    java格式化json串
  • 原文地址:https://www.cnblogs.com/TooYoungTsukasa/p/9353727.html
Copyright © 2011-2022 走看看