/* * DoRayMe - a quick and dirty Raytracer * Plane implementation * * Created by Manoƫl Trapier * Copyright (c) 2020 986-Studio. * */ #include #include #include #include #include Intersect Plane::localIntersect(Ray r) { double t; Intersect ret = Intersect(); if (fabs(r.direction.y) < getEpsilon()) { /* With a direction == 0, the ray can't intersect the plane */ return ret; } t = -r.origin.y / r.direction.y; ret.add(Intersection(t, this)); return ret; } Tuple Plane::localNormalAt(Tuple point, Intersection *hit) { return Vector(0, 1, 0); } BoundingBox Plane::getLocalBounds() { BoundingBox ret; ret | Point(-INFINITY, 0-getEpsilon(), -INFINITY); ret | Point(INFINITY, 0+getEpsilon(), INFINITY); return ret; }