diff --git a/src/Geometry.h b/src/Geometry.h index 7889796..d92709f 100644 --- a/src/Geometry.h +++ b/src/Geometry.h @@ -49,14 +49,15 @@ private: class Rectangle : public Geometry { public: Rectangle(float ka, float kd, float ks, const Vector3f &ca, const Vector3f cd, - const Vector3f &cs, float pc, const Matrix &corners) - : Geometry(Type::RECTANGLE, ka, kd, ks, ca, cd, cs, pc), - corners(corners) {} + const Vector3f &cs, float pc, const Vector3f &p1, + const Vector3f &p2, const Vector3f &p3, const Vector3f &p4) + : Geometry(Type::RECTANGLE, ka, kd, ks, ca, cd, cs, pc), p1(p1), p2(p2), + p3(p3), p4(p4) {} bool intersect(const Ray &) const override; private: - Matrix corners; + Vector3f p1, p2, p3, p4; }; #endif // !GEOMETRY_H_ diff --git a/src/Parser.cc b/src/Parser.cc index 69fabb3..b44629d 100644 --- a/src/Parser.cc +++ b/src/Parser.cc @@ -95,8 +95,12 @@ Rectangle *Parser::getRectangle(const nlohmann::json &j, float ka, float kd, const Vector3f &cd, const Vector3f &cs, float pc) { Matrix corners = getCorners(j); + Vector3f p1 = getVector3f(j["p1"]); + Vector3f p2 = getVector3f(j["p2"]); + Vector3f p3 = getVector3f(j["p3"]); + Vector3f p4 = getVector3f(j["p4"]); - return new Rectangle(ka, kd, ks, ca, cd, cs, pc, corners); + return new Rectangle(ka, kd, ks, ca, cd, cs, pc, p1, p2, p3, p4); } Light *Parser::getLight(const nlohmann::json &j) {