#include <algorithm>
#include <vector>
#include "TBuffer3D.h"
#include "Rtypes.h"
#include "TMath.h"
#include "CsgOps.h"
Go to the source code of this file.
Namespaces | |
namespace | RootCsg |
Classes | |
class | RootCsg::Tuple2 |
class | RootCsg::TVector2 |
class | RootCsg::TPoint2 |
class | RootCsg::Tuple3 |
class | RootCsg::TVector3 |
class | RootCsg::TPoint3 |
class | RootCsg::Tuple4 |
class | RootCsg::TMatrix3x3 |
class | RootCsg::TLine3 |
class | RootCsg::TPlane3 |
class | RootCsg::TBBox |
class | RootCsg::TBBoxNode |
class | RootCsg::TBBoxLeaf |
class | RootCsg::TBBoxInternal |
class | RootCsg::TBBoxTree |
class | RootCsg::TBlenderVProp |
class | RootCsg::TPolygonGeometry< TMesh > |
class | RootCsg::TMesh< TPolygon, TVertex > |
class | RootCsg::TSplitFunction< TMesh, TSplitFunctionBinder > |
class | RootCsg::TDefaultSplitFunctionBinder< PROP > |
class | RootCsg::TMeshWrapper< TMesh > |
class | RootCsg::TPolygonBase< AVProp, AFProp > |
class | RootCsg::TreeIntersector< TMesh > |
class | RootCsg::TRayTreeIntersector< TMesh > |
class | RootCsg::TVertexBase |
class | RootCsg::TCVertex |
class | RootCsg::TConnectedMeshWrapper< TMesh > |
class | RootCsg::TSplitFunctionBinder< CMesh > |
struct | RootCsg::NullType_t |
Typedefs | |
typedef TBBoxLeaf * | RootCsg::LeafPtr_t |
typedef TBBoxNode * | RootCsg::NodePtr_t |
typedef TBBoxInternal * | RootCsg::InternalPtr_t |
typedef std::vector< Int_t > | RootCsg::PIndexList_t |
typedef PIndexList_t::iterator | RootCsg::PIndexIt_t |
typedef std::vector< PIndexList_t > | RootCsg::OverlapTable_t |
typedef TPolygonBase< TBlenderVProp, NullType_t > | RootCsg::TestPolygon_t |
typedef TMesh< TestPolygon_t, TVertexBase > | RootCsg::AMesh_t |
typedef TMesh< TestPolygon_t, TCVertex > | RootCsg::AConnectedMesh_t |
typedef TMeshWrapper< AMesh_t > | RootCsg::AMeshWrapper_t |
typedef TConnectedMeshWrapper< AConnectedMesh_t > | RootCsg::AConnectedMeshWrapper_t |
Functions | |
Int_t | RootCsg::sign (Double_t x) |
Bool_t | RootCsg::fuzzy_zero (Double_t x) |
Bool_t | RootCsg::fuzzy_zero2 (Double_t x) |
Bool_t | RootCsg::operator== (const Tuple2 &t1, const Tuple2 &t2) |
TVector2 | RootCsg::operator+ (const TVector2 &v1, const TVector2 &v2) |
TVector2 | RootCsg::operator- (const TVector2 &v1, const TVector2 &v2) |
TVector2 | RootCsg::operator- (const TVector2 &v) |
TVector2 | RootCsg::operator * (const TVector2 &v, Double_t s) |
TVector2 | RootCsg::operator * (Double_t s, const TVector2 &v) |
TVector2 | RootCsg::operator/ (const TVector2 &v, Double_t s) |
Double_t | RootCsg::dot (const TVector2 &v1, const TVector2 &v2) |
Double_t | RootCsg::length2 (const TVector2 &v) |
Double_t | RootCsg::length (const TVector2 &v) |
Bool_t | RootCsg::fuzzy_zero (const TVector2 &v) |
Bool_t | RootCsg::fuzzy_equal (const TVector2 &v1, const TVector2 &v2) |
Double_t | RootCsg::Angle (const TVector2 &v1, const TVector2 &v2) |
TPoint2 | RootCsg::operator+ (const TPoint2 &p, const TVector2 &v) |
TPoint2 | RootCsg::operator- (const TPoint2 &p, const TVector2 &v) |
TVector2 | RootCsg::operator- (const TPoint2 &p1, const TPoint2 &p2) |
Double_t | RootCsg::distance (const TPoint2 &p1, const TPoint2 &p2) |
Double_t | RootCsg::distance2 (const TPoint2 &p1, const TPoint2 &p2) |
TPoint2 | RootCsg::lerp (const TPoint2 &p1, const TPoint2 &p2, Double_t t) |
Bool_t | RootCsg::operator== (const Tuple3 &t1, const Tuple3 &t2) |
TVector3 | RootCsg::operator * (const TVector3 &v, Double_t s) |
TVector3 | RootCsg::operator/ (const TVector3 &v, Double_t s) |
TVector3 | RootCsg::operator+ (const TVector3 &v1, const TVector3 &v2) |
TVector3 | RootCsg::operator- (const TVector3 &v1, const TVector3 &v2) |
TVector3 | RootCsg::operator- (const TVector3 &v) |
TVector3 | RootCsg::operator * (Double_t s, const TVector3 &v) |
TVector3 | RootCsg::operator * (const TVector3 &v1, const TVector3 &v2) |
Double_t | RootCsg::dot (const TVector3 &v1, const TVector3 &v2) |
Double_t | RootCsg::length2 (const TVector3 &v) |
Double_t | RootCsg::length (const TVector3 &v) |
Bool_t | RootCsg::fuzzy_zero (const TVector3 &v) |
Bool_t | RootCsg::fuzzy_equal (const TVector3 &v1, const TVector3 &v2) |
Double_t | RootCsg::Angle (const TVector3 &v1, const TVector3 &v2) |
TVector3 | RootCsg::cross (const TVector3 &v1, const TVector3 &v2) |
Double_t | RootCsg::triple (const TVector3 &v1, const TVector3 &v2, const TVector3 &v3) |
TPoint3 | RootCsg::operator+ (const TPoint3 &p, const TVector3 &v) |
TPoint3 | RootCsg::operator- (const TPoint3 &p, const TVector3 &v) |
TVector3 | RootCsg::operator- (const TPoint3 &p1, const TPoint3 &p2) |
Double_t | RootCsg::distance (const TPoint3 &p1, const TPoint3 &p2) |
Double_t | RootCsg::distance2 (const TPoint3 &p1, const TPoint3 &p2) |
TPoint3 | RootCsg::lerp (const TPoint3 &p1, const TPoint3 &p2, Double_t t) |
Bool_t | RootCsg::operator== (const Tuple4 &t1, const Tuple4 &t2) |
TVector3 | RootCsg::operator * (const TMatrix3x3 &m, const TVector3 &v) |
TVector3 | RootCsg::operator * (const TVector3 &v, const TMatrix3x3 &m) |
TMatrix3x3 | RootCsg::operator * (const TMatrix3x3 &m1, const TMatrix3x3 &m2) |
TMatrix3x3 | RootCsg::mmult_transpose_left (const TMatrix3x3 &m1, const TMatrix3x3 &m2) |
TMatrix3x3 | RootCsg::mmult_transpose_right (const TMatrix3x3 &m1, const TMatrix3x3 &m2) |
Bool_t | RootCsg::intersect (const TBBox &a, const TBBox &b) |
Bool_t | RootCsg::intersect (const TPlane3 &p1, const TPlane3 &p2, TLine3 &output) |
Bool_t | RootCsg::intersect_2d_no_bounds_check (const TLine3 &l1, const TLine3 &l2, Int_t majAxis, Double_t &l1Param, Double_t &l2Param) |
Bool_t | RootCsg::intersect_2d_bounds_check (const TLine3 &l1, const TLine3 &l2, Int_t majAxis, Double_t &l1Param, Double_t &l2Param) |
Int_t | RootCsg::compute_classification (const Double_t &distance, const Double_t &epsil) |
template<typename TGBinder> | |
Bool_t | RootCsg::intersect_poly_with_line_2d (const TLine3 &l, const TGBinder &p1, const TPlane3 &plane, Double_t &a, Double_t &b) |
template<typename TGBinder> | |
Bool_t | RootCsg::instersect_poly_with_line_3d (const TLine3 &l, const TGBinder &p1, const TPlane3 &plane, Double_t &a) |
template<typename TGBinder> | |
Bool_t | RootCsg::point_in_polygon_test_3d (const TGBinder &p1, const TPlane3 &plane, const TPoint3 &origin, const TPoint3 &pointOnPlane) |
template<typename TGBinder> | |
TPoint3 | RootCsg::polygon_mid_point (const TGBinder &p1) |
template<typename TGBinder> | |
Int_t | RootCsg::which_side (const TGBinder &p1, const TPlane3 &plane1) |
template<typename TGBinder> | |
TLine3 | RootCsg::polygon_mid_point_ray (const TGBinder &p1, const TPlane3 &plane) |
template<typename TGBinder> | |
TPlane3 | RootCsg::compute_plane (const TGBinder &poly) |
template<typename TGBinder> | |
TBBox | RootCsg::fit_bbox (const TGBinder &p1) |
template<typename TGBinderA, typename TGBinderB> | |
Bool_t | RootCsg::intersect_polygons (const TGBinderA &p1, const TGBinderB &p2, const TPlane3 &plane1, const TPlane3 &plane2) |
template<class TMesh> | |
void | RootCsg::build_split_group (const TMesh &meshA, const TMesh &meshB, const TBBoxTree &treeA, const TBBoxTree &treeB, OverlapTable_t &aOverlapsB, OverlapTable_t &bOverlapsA) |
template<class CMesh, class TMesh> | |
void | RootCsg::partition_mesh (CMesh &mesh, const TMesh &mesh2, const OverlapTable_t &table) |
template<typename CMesh, typename TMesh> | |
void | RootCsg::classify_mesh (const TMesh &meshA, const TBBoxTree &aTree, CMesh &meshB) |
template<typename CMesh, typename TMesh> | |
void | RootCsg::extract_classification (CMesh &meshA, TMesh &newMesh, Int_t classification, Bool_t reverse) |
template<typename MeshA, typename MeshB> | |
void | RootCsg::copy_mesh (const MeshA &source, MeshB &output) |
void | RootCsg::build_tree (const AMesh_t &mesh, TBBoxTree &tree) |
void | RootCsg::extract_classification_preserve (const AMesh_t &meshA, const AMesh_t &meshB, const TBBoxTree &aTree, const TBBoxTree &bTree, const OverlapTable_t &aOverlapsB, const OverlapTable_t &bOverlapsA, Int_t aClassification, Int_t bClassification, Bool_t reverseA, Bool_t reverseB, AMesh_t &output) |
void | RootCsg::extract_classification (const AMesh_t &meshA, const AMesh_t &meshB, const TBBoxTree &aTree, const TBBoxTree &bTree, const OverlapTable_t &aOverlapsB, const OverlapTable_t &bOverlapsA, Int_t aClassification, Int_t bClassification, Bool_t reverseA, Bool_t reverseB, AMesh_t &output) |
AMesh_t * | RootCsg::build_intersection (const AMesh_t &meshA, const AMesh_t &meshB, Bool_t preserve) |
AMesh_t * | RootCsg::build_union (const AMesh_t &meshA, const AMesh_t &meshB, Bool_t preserve) |
AMesh_t * | RootCsg::build_difference (const AMesh_t &meshA, const AMesh_t &meshB, Bool_t preserve) |
TBaseMesh * | RootCsg::ConvertToMesh (const TBuffer3D &buff) |
TBaseMesh * | RootCsg::BuildUnion (const TBaseMesh *leftOperand, const TBaseMesh *rightOperand) |
TBaseMesh * | RootCsg::BuildIntersection (const TBaseMesh *leftOperand, const TBaseMesh *rightOperand) |
TBaseMesh * | RootCsg::BuildDifference (const TBaseMesh *leftOperand, const TBaseMesh *rightOperand) |
Variables | |
const Double_t | RootCsg::epsilon = 1e-10 |
const Double_t | RootCsg::epsilon2 = 1e-20 |
const Double_t | RootCsg::infinity = 1e50 |
const Int_t | RootCsg::cofacTable [3][2] = {{1,2}, {0,2}, {0,1}} |