#include <Geometry.h>
Inheritance diagram for Geometry:
Public Member Functions | |
Geometry () | |
virtual | ~Geometry () |
void | insideOut (bool b) |
virtual void | rayIntersection (PointEnv *pPE, int mask, const Vector3 &origin, const Vector3 &direction, float maxD=MAXFLOAT)=0 |
virtual bool | mapToUV (const Vector3 &v, Vector2 &uv)=0 |
virtual void | randomSample (int mask, PointEnv &pe, double *pdf)=0 |
virtual bool | randomDirection (const Vector3 &pov, Vector3 &dir, double *pdf)=0 |
virtual Interval | extent (const Vector3 &direction) const =0 |
Interval | extent (float x, float y, float z) const |
virtual Vector3 | centroid (void) const =0 |
virtual double | radius (const Vector3 ¢roid) const =0 |
virtual double | radius (void) const |
Geometry * | clone (void) const |
virtual Geometry * | clone (const Matrix4 *pTrMat) const =0 |
virtual bool | separation (Geometry &geom, Vector3 *pDir)=0 |
virtual double | distance (const Geometry &geom, Vector3 *pDir)=0 |
virtual void | dump (const char *intent, const char *tab)=0 |
Mesh * | mesh (int density=0) const |
virtual void | __debug () |
Static Public Attributes | |
static const float | EPS = 1e-03 |
epsilon variation (tolerance) of zero | |
Protected Member Functions | |
virtual Mesh * | _mesh (int) const =0 |
virtual void | _duplicate_attributes (const Geometry &src) |
virtual void | _rotateX (float)=0 |
virtual void | _rotateY (float)=0 |
virtual void | _rotateZ (float)=0 |
virtual void | _rotate (float, const Vector3 &)=0 |
virtual void | _rotate (const Matrix3 &)=0 |
virtual void | _translate (float, float, float)=0 |
virtual void | _transform (const Matrix4 &)=0 |
virtual void | _scale (float)=0 |
void | _translate (const Vector3 &v) |
Protected Attributes | |
bool | _insideOut |
Definition at line 18 of file Geometry.h.
|
Contructor Definition at line 44 of file Geometry.h. |
|
Destructor Definition at line 49 of file Geometry.h. |
|
Reimplemented in _Surface, FDH, Polygon, Sphere, and Surface. Definition at line 211 of file Geometry.h. Referenced by BVH::__debug(). |
|
Reimplemented in _Surface, Cylinder, FDH, FDH14, Hemisphere, NurbsSurface, Point3D, Polygon, Rectangle, Sphere, Surface, and OSGPolygon. Definition at line 7 of file Geometry.cc. References Geometry::_insideOut. Referenced by Polygon::_duplicate_attributes(), OSGPolygon::_duplicate_attributes(), NurbsSurface::_duplicate_attributes(), FDH::_duplicate_attributes(), Cylinder::_duplicate_attributes(), and _Surface::_duplicate_attributes(). |
|
Implemented in _Surface, Cylinder, FDH, FDH14, FDH6, Hemisphere, NurbsSurface, Point3D, Polygon, Sphere, and Surface. Referenced by Geometry::mesh(). |
|
Implemented in _Surface, Cylinder, FDH, FDH14, Hemisphere, NurbsSurface, Point3D, Polygon, Rectangle, Sphere, and Surface. |
|
Implemented in _Surface, Cylinder, FDH, FDH14, Hemisphere, NurbsSurface, Point3D, Polygon, Rectangle, Sphere, and Surface. |
|
Implemented in _Surface, Cylinder, FDH, FDH14, Hemisphere, NurbsSurface, Point2D, Point3D, Polygon, Rectangle, Sphere, and Surface. |
|
Implemented in _Surface, Cylinder, FDH, FDH14, Hemisphere, NurbsSurface, Point2D, Point3D, Polygon, Rectangle, Sphere, and Surface. |
|
Implemented in _Surface, Cylinder, FDH, FDH14, Hemisphere, NurbsSurface, Point3D, Polygon, Rectangle, Sphere, and Surface. |
|
Implemented in _Surface, Cylinder, FDH, NurbsSurface, Point3D, Polygon, Rectangle, Sphere, and Surface. |
|
Implemented in _Surface, Cylinder, FDH, FDH14, Hemisphere, NurbsSurface, Point3D, Polygon, Rectangle, Sphere, and Surface. |
|
Definition at line 38 of file Geometry.h. |
|
Implemented in _Surface, Cylinder, FDH, NurbsSurface, Point2D, Point3D, Polygon, Rectangle, Sphere, and Surface. |
|
Implemented in Cylinder, FDH, NurbsSurface, Point3D, Polygon, Sphere, and Surface. Referenced by SphereTree::_enlarge_bv(), POGExplorer::_process_leaf(), Sphere::distance(), Point3D::distance(), Cylinder::distance(), Sphere::separation(), Point3D::separation(), Cylinder::separation(), and Sphere::Sphere(). |
|
Duplicates and transforms geometry
Implemented in _Surface, Cylinder, FDH, FDH14, FDH6, Hemisphere, NurbsSurface, Point2D, Point3D, Polygon, Sphere, Surface, Triangle, and OSGPolygon. |
|
Duplicates geometry
Reimplemented in _Surface, and OSGPolygon. Definition at line 155 of file Geometry.h. Referenced by BVH::__get_edges(), BVH::__get_meshes(), ObjsInAreaExplorer::_accept_new_transformation(), SphereTree::_enlarge_bv(), FDHTree::_enlarge_bv(), BVExplorer::_iterate(), BVDistRot::BVDistRot(), and ObjsInAreaExplorer::ObjsInAreaExplorer(). |
|
Computes approximate distance between this and given geometries (lower bound of distance)
Implemented in Cylinder, FDH, Hemisphere, NurbsSurface, Point3D, Polygon, Sphere, and Surface. Referenced by BVDistRot::distance(). |
|
Writes information about this geometry to std. out.
Implemented in _Surface, Cylinder, FDH, Hemisphere, NurbsSurface, Point3D, Polygon, Sphere, and Surface. Referenced by BVH::_dump(). |
|
Returns extent occupied by the geometry in given direction
Definition at line 124 of file Geometry.h. |
|
Returns extent occupied by the geometry in given direction
Implemented in Cylinder, FDH, FDH14, Hemisphere, NurbsSurface, Point3D, Polygon, Sphere, and Surface. Referenced by FDH14DistRot::_distance(), FDHTree::_enlarge_bv(), IteratorBVH::_halfspace_search(), NExtentsExplorer::_process_leaf(), FDH14DistRot::_separation(), Point3D::distance(), FDH::distance(), Cylinder::distance(), FDH::FDH(), Point3D::separation(), and Cylinder::separation(). |
|
Inverts facet normals (turns the object inside-out)
Definition at line 56 of file Geometry.h. |
|
Maps 3D point from surface to the UV surface representation
Implemented in Cylinder, FDH, FDH6, Hemisphere, NurbsSurface, Point3D, Polygon, Sphere, and Surface. |
|
Returns polygonal mesh computed from this geometry
Definition at line 24 of file Geometry.cc. References Geometry::_insideOut, Geometry::_mesh(), and Mesh::turnInsideOut(). Referenced by BVH::__get_edges(), BVH::__get_meshes(), NurbsSurface::_mesh(), and POVRayExporter::_process_leaf(). |
|
Returns radius of minimal packing sphere with center in the ceontroid of the geometry
Reimplemented in Cylinder, NurbsSurface, Point3D, Sphere, and Surface. Definition at line 148 of file Geometry.h. |
|
Returns radius of minimal packing sphere having given center
Implemented in Cylinder, FDH, Hemisphere, NurbsSurface, Point3D, Polygon, Sphere, and Surface. Referenced by SphereTree::_enlarge_bv(), RadiusExplorer::_process_leaf(), Sphere::distance(), Sphere::separation(), and Sphere::Sphere(). |
|
Computes random direction towards the surface in accord to the point of view.
Implemented in Cylinder, FDH, Hemisphere, NurbsSurface, Point3D, Polygon, Sphere, and Surface. Definition at line 12 of file Geometry.cc. References ENV_HAVE_INTERSECTION, ENV_WANT_INTERSECTION, PointEnv::intersection, PointEnv::mask, and Geometry::randomSample(). |
|
Computes random point on the surface
Implemented in Cylinder, FDH, Hemisphere, NurbsSurface, Point3D, Polygon, Rectangle, Sphere, Surface, and Triangle. Referenced by LightArray::emitPhoton(), and Geometry::randomDirection(). |
|
Computes point of intersection of ray with this geometry
Implemented in Cylinder, FDH, Hemisphere, NurbsSurface, Point3D, Polygon, Sphere, and Surface. Referenced by IteratorBVH::_first_ray_intersection(), IteratorBVH::_next_ray_intersection(), and Intersector::processCandidate(). |
|
Checks if there is separation between this and given geometries
Implemented in Cylinder, FDH, Hemisphere, NurbsSurface, Point3D, Polygon, Sphere, and Surface. Referenced by IteratorBVH::_area_search(), BVH::_collision(), and BVDistRot::separation(). |
|
Definition at line 23 of file Geometry.h. Referenced by Geometry::_duplicate_attributes(), and Geometry::mesh(). |
|
epsilon variation (tolerance) of zero
Definition at line 20 of file Geometry.h. Referenced by FDH::_cut_line(), Sphere::_duplicate_attributes(), FDH::_get_corners(), FDH::_mesh(), Sphere::_scale(), Polygon::_triTriCollision(), Sphere::rayIntersection(), Polygon::rayIntersection(), Point3D::rayIntersection(), Hemisphere::rayIntersection(), Sphere::setRadius(), and Sphere::Sphere(). |