#ifndef jbt_square_h #define jbt_square_h #include "primitive.h" class jbt_square : public jbt_primitive { public: jbt_square( jFlt xr = 1.0, jFlt zr = 1.0, jFlt field_radius = 1.0 ); jbt_object::Type type() const { return jbt_object::jbtSquare; } jFlt getSquareXRadius() const { return x_radius; } void setSquareXRadius( jFlt dr ) { x_radius = dr; } jFlt getSquareZRadius() const { return x_radius; } void setSquareZRadius( jFlt dr ) { z_radius = dr; } private: jVec3 displacement(); void bracket( const jRay&, jbt_brackets& ); void computeBound(); void precompute(); void seedPoints( jVec3list& ) const; jVec2 uvl( const jVec3& ); jFlt x_radius, z_radius; bool in; jVec3 square_pt; }; #endif