6 矩形光源

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

    

  这样我就没必要让全部非发射材料实现emit(),而后个人基类返回黑色:spa

    

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

    

  如今,咱们作一些矩形。矩形一般能够方便地建模人造环境。我很喜欢作等腰矩形,由于它们很简单。(咱们会讲到实例化以后再旋转它们).3d

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

    

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

  t = (k-az) / bzclass

  一旦咱们有了t,咱们就能够把它代入x和y的方程:反射

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

  若是x0 < x < x1,而y0 < y < y1,则是命中的。d3

  矩形方程以下:

    

  撞击函数以下:

    

  若是咱们设置一个矩形光源:

    

  咱们能够获得下图:

          

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

        也能够作一些球形灯。

相关文章
相关标签/搜索