ATLAS Offline Software
Loading...
Searching...
No Matches
SoTessellated.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef SOTESSELLATED_H
6#define SOTESSELLATED_H
7
8#include <Inventor/C/errors/debugerror.h>
9#include <Inventor/fields/SoSFNode.h>
10#include <Inventor/fields/SoSFBool.h>
11#include <Inventor/nodes/SoShape.h>
12#include <vector>
13
14//**************************************************************//
15// //
16// Class SoTessellated //
17// //
18// Visualization of Tessellated Solid - generic solid defined //
19// by a number of either triangular or quadrangular facets. //
20// //
21//**************************************************************//
22
23class SoTessellated : public SoShape
24{
25
27
28 public:
29
30 //Fields:
31 SoSFBool drawEdgeLines; //Default: False
32 SoSFBool forceEdgeLinesInBaseColour; //Default: True
33 SoSFNode alternateRep;
34
35 // Following two methods add facets to the solid
36 //
37 // NB: must provide ABSOLUTE coordinates!
38 //
39 // (relative coordinates should be handled in the
40 // SoVisualizeAction beforehand)
41 //
42 void addTriangularFacet(double x1, double y1, double z1,
43 double x2, double y2, double z2,
44 double x3, double y3, double z3);
45
46 void addQuadrangularFacet(double x1, double y1, double z1,
47 double x2, double y2, double z2,
48 double x3, double y3, double z3,
49 double x4, double y4, double z4);
50
51 // Finalize:
52 // 1. Compute bounding box and center
53 // 2. Touch drawEdgeLines
54 void finalize();
55
56 //_____ Required stuff _____
58 static void initClass();
59 virtual void generateAlternateRep();
60 virtual void clearAlternateRep();
61
62 protected:
63
64 virtual void computeBBox(SoAction *action, SbBox3f &box, SbVec3f &center );
65 virtual void generatePrimitives(SoAction *action);
66 virtual ~SoTessellated();
67
68 private:
69
70 void setupDefaultPoints();
71
72 std::vector<float> m_points;
73 std::vector<float> m_normals;
74 SbBox3f m_bbox;
75 SbVec3f m_center;
76};
77
78#endif
virtual void clearAlternateRep()
SoSFBool forceEdgeLinesInBaseColour
std::vector< float > m_points
virtual ~SoTessellated()
void setupDefaultPoints()
static void initClass()
virtual void generateAlternateRep()
void addTriangularFacet(double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3)
void addQuadrangularFacet(double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3, double x4, double y4, double z4)
virtual void computeBBox(SoAction *action, SbBox3f &box, SbVec3f &center)
SoSFNode alternateRep
SO_NODE_HEADER(SoTessellated)
SoSFBool drawEdgeLines
virtual void generatePrimitives(SoAction *action)
std::vector< float > m_normals