diff --git a/cs658/final/Makefile b/cs658/final/Makefile index a9e2828..2946ad0 100644 --- a/cs658/final/Makefile +++ b/cs658/final/Makefile @@ -1,6 +1,16 @@ +ifdef WIN32 +export CPPFLAGS += -I"$(shell cd)" +else +export CPPFLAGS += -I"$(shell pwd)" +endif + all: make -C util + make -C shapes + make -C test clean: + make -C test clean + make -C shapes clean make -C util clean diff --git a/cs658/final/shapes/Makefile b/cs658/final/shapes/Makefile index 31460bf..0ba20fe 100644 --- a/cs658/final/shapes/Makefile +++ b/cs658/final/shapes/Makefile @@ -4,7 +4,7 @@ OBJS := $(patsubst %.cc,%.o,$(wildcard *.cc)) all: $(OBJS) %.o: %.cc - $(CXX) -c -o $@ $(CXXFLAGS) $< + $(CXX) -c -o $@ $(CPPFLAGS) $(CXXFLAGS) $< # Make dependency files %.dep: %.cc diff --git a/cs658/final/shapes/Sphere.cc b/cs658/final/shapes/Sphere.cc new file mode 100644 index 0000000..810aee1 --- /dev/null +++ b/cs658/final/shapes/Sphere.cc @@ -0,0 +1,22 @@ + +#include "Sphere.h" +#include "util/Solver.h" + +Sphere::Sphere(double radius) +{ + m_radius = radius; +} + +Solver::Result Sphere::intersect(const Ray & ray) +{ + Solver::Result res; + QuadraticSolver solver(1.0, + 2 * ( ray.getOrigin()[0] * ray.getDirection()[0] + + ray.getOrigin()[1] * ray.getDirection()[1] + + ray.getOrigin()[2] * ray.getDirection()[2] ), + ray.getOrigin()[0] * ray.getOrigin()[0] + + ray.getOrigin()[1] * ray.getOrigin()[1] + + ray.getOrigin()[2] * ray.getOrigin()[2] ); + Solver::Result quadSolutions = solver.solve(); + return res; +} diff --git a/cs658/final/shapes/Sphere.h b/cs658/final/shapes/Sphere.h new file mode 100644 index 0000000..d577b72 --- /dev/null +++ b/cs658/final/shapes/Sphere.h @@ -0,0 +1,18 @@ + +#ifndef SPHERE_H +#define SPHERE_H SPHERE_H + +#include "Shape.h" + +class Sphere : public Shape +{ + public: + Sphere(double radius); + Solver::Result intersect(const Ray & ray); + + private: + double m_radius; +}; + +#endif + diff --git a/cs658/final/test/Makefile b/cs658/final/test/Makefile new file mode 100644 index 0000000..5764aa6 --- /dev/null +++ b/cs658/final/test/Makefile @@ -0,0 +1,3 @@ + +all: + @echo Nothing yet. diff --git a/cs658/final/util/Makefile b/cs658/final/util/Makefile index 31460bf..0ba20fe 100644 --- a/cs658/final/util/Makefile +++ b/cs658/final/util/Makefile @@ -4,7 +4,7 @@ OBJS := $(patsubst %.cc,%.o,$(wildcard *.cc)) all: $(OBJS) %.o: %.cc - $(CXX) -c -o $@ $(CXXFLAGS) $< + $(CXX) -c -o $@ $(CPPFLAGS) $(CXXFLAGS) $< # Make dependency files %.dep: %.cc diff --git a/cs658/final/util/Ray.h b/cs658/final/util/Ray.h index 19b7a75..39fa6de 100644 --- a/cs658/final/util/Ray.h +++ b/cs658/final/util/Ray.h @@ -9,8 +9,8 @@ class Ray public: Ray(); Ray(const Vector & origin, const Vector & direction); - Vector & getOrigin() { return m_origin; } - Vector & getDirection() { return m_direction; } + const Vector & getOrigin() const { return m_origin; } + const Vector & getDirection() const { return m_direction; } Vector getPositionAt(double dist) const; private: diff --git a/cs658/final/util/Solver.cc b/cs658/final/util/Solver.cc index ca3ce45..decf408 100644 --- a/cs658/final/util/Solver.cc +++ b/cs658/final/util/Solver.cc @@ -12,6 +12,15 @@ Solver::Solver(double a, double b, double c, double d, double e) this->e = e; } + +/************************************************************************** + * QuadraticSolver methods * + *************************************************************************/ +QuadraticSolver::QuadraticSolver(double a, double b, double c) + : Solver(a, b, c) +{ +} + /* solve a quadratic equation */ Solver::Result QuadraticSolver::solve() { @@ -41,10 +50,28 @@ Solver::Result QuadraticSolver::solve() return res; } + +/************************************************************************** + * CubicSolver methods * + *************************************************************************/ +CubicSolver::CubicSolver(double a, double b, double c, double d) + : Solver(a, b, c, d) +{ +} + Solver::Result CubicSolver::solve() { } + +/************************************************************************** + * QuarticSolver methods * + *************************************************************************/ +QuarticSolver::QuarticSolver(double a, double b, double c, double d, double e) + : Solver(a, b, c, d, e) +{ +} + Solver::Result QuarticSolver::solve() { } diff --git a/cs658/final/util/Solver.h b/cs658/final/util/Solver.h index 916901c..3edc7b1 100644 --- a/cs658/final/util/Solver.h +++ b/cs658/final/util/Solver.h @@ -25,18 +25,21 @@ class Solver class QuadraticSolver : public Solver { public: + QuadraticSolver(double a, double b, double c); Result solve(); }; class CubicSolver : public Solver { public: + CubicSolver(double a, double b, double c, double d); Result solve(); }; class QuarticSolver : public Solver { public: + QuarticSolver(double a, double b, double c, double d, double e); Result solve(); };