class Sphere
Attributes
center[R]
radius[R]
Public Class Methods
new(center, radius)
click to toggle source
# File typeprof-0.15.2/testbed/ao.rb, line 64 def initialize(center, radius) @center = center @radius = radius end
Public Instance Methods
intersect(ray, isect)
click to toggle source
# File typeprof-0.15.2/testbed/ao.rb, line 71 def intersect(ray, isect) rs = ray.org.vsub(@center) b = rs.vdot(ray.dir) c = rs.vdot(rs) - (@radius * @radius) d = b * b - c if d > 0.0 t = - b - Math.sqrt(d) if t > 0.0 and t < isect.t isect.t = t isect.hit = true isect.pl = Vec.new(ray.org.x + ray.dir.x * t, ray.org.y + ray.dir.y * t, ray.org.z + ray.dir.z * t) n = isect.pl.vsub(@center) isect.n = n.vnormalize end end end