12 #ifndef ROOT7_REvePolygonSetProjected
13 #define ROOT7_REvePolygonSetProjected
23 namespace Experimental {
30 class REvePolygonSetProjected :
public REveShape,
34 REvePolygonSetProjected(
const REvePolygonSetProjected &);
35 REvePolygonSetProjected &operator=(
const REvePolygonSetProjected &);
39 std::vector<int> fPnts;
41 Polygon_t() =
default;
42 Polygon_t(std::vector<int> &&pnts) : fPnts(pnts){};
43 ~Polygon_t() =
default;
45 int NPoints()
const {
return (
int)fPnts.size(); }
49 auto dist = std::distance(fPnts.begin(), std::find(fPnts.begin(), fPnts.end(), pi));
50 return (dist >= (
int) fPnts.size()) ? -1 : (
int) dist;
54 typedef std::list<Polygon_t> vpPolygon_t;
57 std::unique_ptr<TBuffer3D> fBuff;
59 Bool_t IsFirstIdxHead(Int_t s0, Int_t s1);
60 Float_t AddPolygon(std::list<Int_t> &pp, std::list<Polygon_t> &p);
62 std::vector<Int_t> ProjectAndReducePoints();
63 Float_t MakePolygonsFromBP(std::vector<Int_t> &idxMap);
64 Float_t MakePolygonsFromBS(std::vector<Int_t> &idxMap);
71 std::vector<REveVector> fPnts;
73 void SetDepthLocal(Float_t d)
override;
75 Float_t PolygonSurfaceXY(
const Polygon_t &poly)
const;
78 REvePolygonSetProjected(
const std::string &n =
"REvePolygonSetProjected",
const std::string &t =
"");
79 virtual ~REvePolygonSetProjected();
81 void ComputeBBox()
override;
84 void SetProjection(REveProjectionManager *mng, REveProjectable *model)
override;
85 void UpdateProjection()
override;
86 REveElement *GetProjectedAsElement()
override {
return this; }
88 void ProjectBuffer3D();
90 virtual void DumpPolys()
const;
93 Int_t WriteCoreJson(nlohmann::json &j, Int_t rnr_offset)
override;
94 void BuildRenderData()
override;