generated from karl/cpp-template
Change Triangle to hold Vectors, not Points
This commit is contained in:
parent
6cb085dcd6
commit
d966beeb15
48
geometry.h
48
geometry.h
@ -1,26 +1,4 @@
|
|||||||
// Forward declarations
|
// Forward declarations
|
||||||
struct Point;
|
|
||||||
|
|
||||||
struct Node {
|
|
||||||
Node(int axis, Point *point, Node *left, Node *right)
|
|
||||||
: axis(axis), point(point), left(left), right(right) {}
|
|
||||||
|
|
||||||
int axis;
|
|
||||||
|
|
||||||
Point *point;
|
|
||||||
|
|
||||||
Node *left;
|
|
||||||
Node *right;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Triangle {
|
|
||||||
Triangle(Point *p1, Point *p2, Point *p3) : p1(p1), p2(p2), p3(p3) {}
|
|
||||||
|
|
||||||
Point *p1;
|
|
||||||
Point *p2;
|
|
||||||
Point *p3;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Vector {
|
struct Vector {
|
||||||
Vector(float coordinates[3]) : c(coordinates) {}
|
Vector(float coordinates[3]) : c(coordinates) {}
|
||||||
Vector(float x, float y, float z) : c(new float[3]{x, y, z}) {}
|
Vector(float x, float y, float z) : c(new float[3]{x, y, z}) {}
|
||||||
@ -51,6 +29,14 @@ struct Vector {
|
|||||||
float *c;
|
float *c;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct Triangle {
|
||||||
|
Triangle(Vector p1, Vector p2, Vector p3) : p1(p1), p2(p2), p3(p3) {}
|
||||||
|
|
||||||
|
Vector p1;
|
||||||
|
Vector p2;
|
||||||
|
Vector p3;
|
||||||
|
};
|
||||||
|
|
||||||
struct Point {
|
struct Point {
|
||||||
Point(float coordinates[3], Triangle *triangle)
|
Point(float coordinates[3], Triangle *triangle)
|
||||||
: pos(Vector(coordinates)), triangle(triangle) {}
|
: pos(Vector(coordinates)), triangle(triangle) {}
|
||||||
@ -60,6 +46,18 @@ struct Point {
|
|||||||
Triangle *triangle;
|
Triangle *triangle;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct Node {
|
||||||
|
Node(int axis, Point *point, Node *left, Node *right)
|
||||||
|
: axis(axis), point(point), left(left), right(right) {}
|
||||||
|
|
||||||
|
int axis;
|
||||||
|
|
||||||
|
Point *point;
|
||||||
|
|
||||||
|
Node *left;
|
||||||
|
Node *right;
|
||||||
|
};
|
||||||
|
|
||||||
struct Ray {
|
struct Ray {
|
||||||
Ray(Vector origin, Vector direction) : origin(origin), direction(direction) {}
|
Ray(Vector origin, Vector direction) : origin(origin), direction(direction) {}
|
||||||
|
|
||||||
@ -72,9 +70,9 @@ struct Ray {
|
|||||||
// https://en.wikipedia.org/wiki/M%C3%B6ller%E2%80%93Trumbore_intersection_algorithm
|
// https://en.wikipedia.org/wiki/M%C3%B6ller%E2%80%93Trumbore_intersection_algorithm
|
||||||
const float EPSILON = 0.0000001;
|
const float EPSILON = 0.0000001;
|
||||||
|
|
||||||
Vector p1 = triangle->p1->pos;
|
Vector p1 = triangle->p1;
|
||||||
Vector p2 = triangle->p2->pos;
|
Vector p2 = triangle->p2;
|
||||||
Vector p3 = triangle->p3->pos;
|
Vector p3 = triangle->p3;
|
||||||
|
|
||||||
Vector edge1 = p2 - p1;
|
Vector edge1 = p2 - p1;
|
||||||
Vector edge2 = p3 - p1;
|
Vector edge2 = p3 - p1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user