37Bool_t REveGeoPolyShape::fgAutoEnforceTriangles =
kTRUE;
52 std::unique_ptr<RootCsg::TBaseMesh> res;
60 for (
UInt_t i = 0; i <
b3d->NbPnts(); ++i) {
68 res.reset(RootCsg::ConvertToMesh(*
b3d.get()));
70 auto node =
comp->GetBoolNode();
73 if (matr) { mleft = *matr; mright = *matr; }
75 mleft.
Multiply(node->GetLeftMatrix());
76 auto left =
MakeGeoMesh(&mleft, node->GetLeftShape());
78 mright.
Multiply(node->GetRightMatrix());
79 auto right =
MakeGeoMesh(&mright, node->GetRightShape());
81 if (node->IsA() ==
TGeoUnion::Class()) res.reset(RootCsg::BuildUnion(left.get(), right.get()));
108 for (
Int_t i = 0; i <
nv; ++i) {
109 auto v =
mesh->GetVertex(i);
352 return (
dx < 1
e-10) && (
dy < 1
e-10) && (
dz < 1
e-10);
363 b.ClearSectionsValid();
379 std::map<Edge_t, Int_t> edges;
387 if (edges.find(
e) == edges.end()) {
388 edges.insert(std::make_pair(
e, 0));
400 for (
auto &
edge : edges) {
std::unique_ptr< RootCsg::TBaseMesh > MakeGeoMesh(TGeoMatrix *matr, TGeoShape *shape)
Function produces mesh for provided shape, applying matrix to the result.
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t dest
REveGeoManagerHolder Exception-safe global variable holders.
void FillRenderData(REveRenderData &rd)
static Bool_t fgAutoCalculateNormals
const TBuffer3D & GetBuffer3D(Int_t reqSections, Bool_t localFrame) const override
Fill static buffer 3D.
std::vector< UInt_t > fPolyDesc
static void SetAutoCalculateNormals(Bool_t f)
void EnforceTriangles()
Use GLU tesselator to replace all polygons with N > 3 with triangles.
void BuildFromShape(TGeoShape *shape, Int_t n_seg=60)
Produce all polygons from normal shape.
void BuildFromComposite(TGeoCompositeShape *cshp, Int_t n_seg=60)
Produce all polygons from composite shape.
std::vector< Double_t > fNormals
void FillBuffer3D(TBuffer3D &buffer, Int_t reqSections, Bool_t localFrame) const override
Fill the passed buffer 3D.
std::vector< Double_t > fVertices
static Bool_t GetAutoCalculateNormals()
void CalculateNormals()
CalculateNormals per polygon (flat shading)
static Bool_t GetAutoEnforceTriangles()
static Bool_t fgAutoEnforceTriangles
TBuffer3D * MakeBuffer3D() const override
Create buffer 3D and fill it with point/segment/poly data.
Int_t CheckPoints(const UInt_t *source, UInt_t *dest) const
CheckPoints.
void SetFromBuff3D(const TBuffer3D &buffer)
Set data-members from a Csg mesh.
static Bool_t Eq(const Double_t *p1, const Double_t *p2)
Test equality of points with epsilon 1e-10.
static TGeoManager * GetGeoManager()
Return static geo-manager that is used internally to make shapes lead a happy life.
Generic 3D primitive description class.
Composite shapes are Boolean combinations of two or more shape components.
Matrix class used for computing global transformations Should NOT be used for node definition.
void Multiply(const TGeoMatrix *right)
multiply to the right with an other transformation if right is identity matrix, just return
Geometrical transformation package.
virtual void LocalToMaster(const Double_t *local, Double_t *master) const
convert a point by multiplying its column vector (x, y, z, 1) to matrix inverse
Base abstract class for all shapes.
virtual TBuffer3D * MakeBuffer3D() const
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
T * Normal2Plane(const T v1[3], const T v2[3], const T v3[3], T normal[3])
Calculates a normal vector of a plane.
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.