Added planes!
This commit is contained in:
22
source/include/plane.h
Normal file
22
source/include/plane.h
Normal file
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
* DoRayMe - a quick and dirty Raytracer
|
||||
* Plane header
|
||||
*
|
||||
* Created by Manoël Trapier
|
||||
* Copyright (c) 2020 986-Studio.
|
||||
*
|
||||
*/
|
||||
#ifndef DORAYME_PLANE_H
|
||||
#define DORAYME_PLANE_H
|
||||
|
||||
class Plane : public Shape
|
||||
{
|
||||
private:
|
||||
Intersect localIntersect(Ray r);
|
||||
Tuple localNormalAt(Tuple point);
|
||||
|
||||
public:
|
||||
Plane() : Shape(SHAPE_PLANE) { };
|
||||
};
|
||||
|
||||
#endif //DORAYME_PLANE_H
|
||||
@@ -21,6 +21,7 @@ enum ShapeType
|
||||
{
|
||||
SHAPE_NONE,
|
||||
SHAPE_SPHERE,
|
||||
SHAPE_PLANE,
|
||||
};
|
||||
|
||||
/* Base class for all object that can be presented in the world */
|
||||
|
||||
36
source/shapes/plane.cpp
Normal file
36
source/shapes/plane.cpp
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* DoRayMe - a quick and dirty Raytracer
|
||||
* Plane implementation
|
||||
*
|
||||
* Created by Manoël Trapier
|
||||
* Copyright (c) 2020 986-Studio.
|
||||
*
|
||||
*/
|
||||
#include <tuple.h>
|
||||
#include <ray.h>
|
||||
#include <shape.h>
|
||||
#include <plane.h>
|
||||
#include <math_helper.h>
|
||||
|
||||
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)
|
||||
{
|
||||
return Vector(0, 1, 0);
|
||||
}
|
||||
Reference in New Issue
Block a user