22#include <nlohmann/json.hpp>
44 while (phi < phiEnd ) {
88 return TClass::GetClass<REveEllipsoidProjected>();
99 j[
"fSecondarySelect"] =
false;
128 float phi = phiStart;
131 while (phi < phiEnd ) {
167 return (p1-p0).Mag2()+ (p2-p0).Mag2();
209 printf(
"REveEllipsoidProjected::OutlineProjected, printing axes %s\n",
GetCName());
255 for (
size_t i = 0; i <
fArchPnts.size(); i+=2 )
300 j[
"fSecondarySelect"] =
false;
void Reset(Int_t atom_size, Int_t chunk_size)
Empty the container and reset it with given atom and chunk sizes.
void Refit()
Refit the container so that all current data fits into a single chunk.
const char * GetCName() const
virtual REveTrans * PtrMainTrans(Bool_t create=kTRUE)
Return pointer to main transformation.
virtual void BuildRenderData()
Write transformation Matrix to render data.
virtual void OutlineProjected()
Find longest projection of axes and draw an arch.
std::vector< REveVector > fArchPnts
void SetProjection(REveProjectionManager *mng, REveProjectable *model) override
This is virtual method from base-class REveProjected.
float GetEllipseSurface(const REveVector &v1, const REveVector &v2)
Get surface size of projected ellipse.
~REveEllipsoidProjected() override
Destructor.
REveEllipsoidProjected(const REveEllipsoidProjected &)=delete
Int_t WriteCoreJson(nlohmann::json &j, Int_t rnr_offset) override
Fill core part of JSON representation.
void DrawArchProjected(float phiStart, float phiEnd, float phiStep, REveVector &v0, REveVector &v1, REveVector &v2)
Draw archade around base vectors.
void BuildRenderData() override
Crates 3D point array for rendering.
void UpdateProjection() override
Callback that actually performs the projection.
void SetBaseVectors(REveVector &v0, REveVector &v1, REveVector &v3)
Three defining base vectors of ellipse.
Int_t WriteCoreJson(nlohmann::json &j, Int_t rnr_offset) override
Fill core part of JSON representation.
void DrawArch(float phiStart, float phiEnd, float phiStep, REveVector &v0, REveVector &v1, REveVector &v2)
Draw archade as straight line set.
TClass * ProjectedClass(const REveProjection *p) const override
Virtual from REveProjectable, returns REveEllipsoidProjected class.
virtual void Outline()
Draw archade around base vectors.
void SetPhiStep(float ps)
Set size of phi step in archade drawing.
REveEllipsoid(const REveEllipsoid &)=delete
virtual void SetProjection(REveProjectionManager *mng, REveProjectable *model)
Sets projection manager and reference in the projectable object.
REveProjectable * fProjectable
REveProjectionManager * fManager
REveProjectionManager Manager class for steering of projections and managing projected objects.
REveProjection * GetProjection()
REveProjection Base for specific classes that implement non-linear projections.
void ProjectPointfv(Float_t *v, Float_t d)
Project float array.
virtual Bool_t HasSeveralSubSpaces() const
virtual Bool_t AcceptSegment(REveVector &, REveVector &, Float_t) const
virtual void BisectBreakPoint(REveVector &vL, REveVector &vR, Float_t eps_sqr)
Find break-point on both sides of the discontinuity.
REveStraightLineSetProjected Projected copy of a REveStraightLineSet.
REveStraightLineSet Set of straight lines with optional markers along the lines.
Line_t * AddLine(Float_t x1, Float_t y1, Float_t z1, Float_t x2, Float_t y2, Float_t z2)
Add a line.
Marker_t * AddMarker(Float_t x, Float_t y, Float_t z, Int_t line_id=-1)
Add a marker with given position.
Int_t WriteCoreJson(nlohmann::json &j, Int_t rnr_offset) override
Fill core part of JSON representation.
REveChunkManager fMarkerPlex
void CopyVizParams(const REveElement *el) override
Copy visualization parameters from element el.
REveChunkManager fLinePlex
REveChunkManager & GetMarkerPlex()
void GetPos(Double_t &x, Double_t &y, Double_t &z) const
Get position (base-vec 4).
void MultiplyIP(TVector3 &v, Double_t w=1) const
Multiply vector in-place.
void Dump() const
Dump to stdout as "(x, y, z)\n".
TClass instances represent classes, structs and namespaces in the ROOT type system.
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.
constexpr Double_t TwoPi()
Bool_t next()
Go to next atom.