ROOT
6.07/01
Reference Guide
|
#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 | |
RootCsg | |
I've modified some very nice bounding box tree code from Gino van der Bergen's Free Solid Library below. | |
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}} |