libsegl/geotypes.cpp

104 lines
1.5 KiB
C++

#include "geotypes.h"
namespace segl {
Sphere::Sphere(Punkt3D _pos, float _radius) {
pos = _pos;
radius = _radius;
}
Sphere::Sphere() {
radius = 1.0f;
}
bool Sphere::collision(const Sphere &s) {
}
bool Sphere::collision(const Ray &r) {
}
bool Sphere::collision(const Box & b) {
}
bool Sphere::collision(const Plane &p) {
}
Ray::Ray() {
dir.set(0.0f, 1.0f, 0.0f);
}
Ray::Ray(Punkt3D _pos, Punkt3D _dir) {
pos = _pos;
dir = _dir;
}
bool Ray::collision(const Sphere &s) {
return s.collision(*this);
}
bool Ray::collision(const Ray &r);
bool Ray::collision(const Box & b);
bool Ray::collision(const Plane &p);
Box::Box() {
max.set(1.0f, 1.0f, 1.0f);
}
Box::Box(Punkt3D _min, Punkt3D _max) {
min = _min;
max = _max;
}
bool Box::collision(const Sphere &s) {
return s.collision(*this);
}
bool Box::collision(const Ray &r) {
return r.collision(*this);
}
bool Box::collision(const Box & b) {
}
bool Box::collision(const Plane &p) {
}
Plane::Plane() {
norm.set(0.0f, 1.0f, 0.0f);
}
Plane::Plane(Punkt3D _pos, Punkt3D _norm) {
pos = _pos;
norm = _norm;
}
Plane::Plane(float x, float y, float z, float a) {
// TODO: Implementation (if not too lazy)
norm.set(x, y, z);
norm.normalize();
}
bool Plane::collision(const Sphere &s) {
return s.collision(*this);
}
bool Plane::collision(const Ray &r) {
return r.collision(*this);
}
bool Plane::collision(const Box & b) {
return b.collision(*this);
}
bool Plane::collision(const Plane &p) {
}
} // namespace segl