133 for (
Int_t i=0; i<3*
n; i++) {
152 for (
Int_t i=0; i<3*
n; i++) {
172 for (
Int_t i=0; i<
n;i++) {
196 for (
Int_t i=0; i<
n;i++) {
211 pl.TPolyLine3D::Copy(*
this);
220 if (
fP)
delete []
fP;
228 polyline.TPolyLine3D::Copy(*
this);
262 const Int_t inaxis = 7;
271 if (px < puxmin - inaxis)
return dist;
272 if (py > puymin + inaxis)
return dist;
273 if (px > puxmax + inaxis)
return dist;
274 if (py < puymax - inaxis)
return dist;
277 if (!view)
return dist;
282 for (i=0;i<
Size()-1;i++) {
290 if (dsegment < dist) dist = dsegment;
398 for (
Int_t i=0; i<
size;i++) { newpolyline->
fP[i] =
p[i];}
412 if (
gPad->GetView())
gPad->GetView()->ExecuteRotateView(event, px, py);
421 std::cout <<
"PolyLine3D N=" <<
fN<<
" Option="<<
option<<std::endl;
437 Error(
"Add",
"Attempt to add object of class: %s to a %s",pl->
ClassName(),this->ClassName());
440 npoints += pl->
Size();
467 if (
Size() <= 0)
return;
485 if (!viewer3D)
return;
493 Int_t nbSegs = nbPnts-1;
494 if (!buffer.
SetRawSizes(nbPnts, 3*nbPnts, nbSegs, 3*nbSegs, 0, 0)) {
502 for (i=0; i<3*buffer.
NbPnts(); i++) {
511 dlocal[0] = buffer.
fPnts[3*j];
512 dlocal[1] = buffer.
fPnts[3*j+1];
513 dlocal[2] = buffer.
fPnts[3*j+2];
515 buffer.
fPnts[3*j] = dmaster[0];
516 buffer.
fPnts[3*j+1] = dmaster[1];
517 buffer.
fPnts[3*j+2] = dmaster[2];
526 for (i = 0; i < buffer.
NbSegs(); i++) {
528 buffer.
fSegs[3*i+1] = i;
529 buffer.
fSegs[3*i+2] = i+1;
545 printf(
" TPolyLine3D N=%d, Option=%s\n",
fN,
option);
550 printf(
" x[%d]=%g, y[%d]=%g, z[%d]=%g\n",i,
fP[3*i],i,
fP[3*i+1],i,
fP[3*i+2]);
565 out<<
" TPolyLine3D *";
568 out<<
"pline3D = new TPolyLine3D("<<
fN<<
","<<quote<<
fOption<<quote<<
");"<<std::endl;
574 out<<
" pline3D->SetPoint("<<i<<
","<<
fP[3*i]<<
","<<
fP[3*i+1]<<
","<<
fP[3*i+2]<<
");"<<std::endl;
576 out<<
" pline3D->Draw();"<<std::endl;
598 if (!
fP ||
n >=
fN) {
604 memset(&savepoint[3*
fN],0,(newN-
fN)*
sizeof(
Float_t));
631 if (
fP)
delete []
fP;
652 if (
fP)
delete []
fP;
657 fP[3*i+1] =
p[3*i+1];
658 fP[3*i+2] =
p[3*i+2];
681 if (
fP)
delete []
fP;
702 b.ReadVersion(&R__s, &R__c);
704 b.ClassMember(
"TObject");
706 b.ClassMember(
"TAttLine");
708 b.ClassMember(
"fN",
"Int_t");
712 b.ClassMember(
"fP",
"Float_t", 3 *
fN);
713 b.ReadFastArray(
fP, 3 *
fN);
715 b.ClassMember(
"fOption",
"TString");
723 b.ClassMember(
"TObject");
725 b.ClassMember(
"TAttLine");
727 b.ClassMember(
"fN",
"Int_t");
731 b.ClassMember(
"fP",
"Float_t", 3 *
size);
732 b.WriteFastArray(
fP, 3 *
size);
734 b.ClassMember(
"fOption",
"TString");
737 b.SetByteCount(R__c,
kTRUE);
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
winID h TVirtualViewer3D TVirtualGLPainter p
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t np
Option_t Option_t TPoint TPoint const char x2
Option_t Option_t TPoint TPoint const char x1
Option_t Option_t TPoint TPoint const char y2
Option_t Option_t TPoint TPoint const char y1
R__EXTERN TGeometry * gGeometry
Use this attribute class when an object should have 3D capabilities.
virtual void Streamer(TBuffer &)
virtual Color_t GetLineColor() const
Return the line color.
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
virtual Width_t GetLineWidth() const
Return the line width.
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual Style_t GetLineStyle() const
Return the line style.
virtual void Modify()
Change current line attributes if necessary.
void Copy(TAttLine &attline) const
Copy this line attributes to a new TAttLine.
Int_t DistancetoLine(Int_t px, Int_t py, Double_t xp1, Double_t yp1, Double_t xp2, Double_t yp2)
Compute distance from point px,py to a line.
virtual void SaveLineAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1, Int_t widdef=1)
Save line attributes as C++ statement(s) on output stream out.
Generic 3D primitive description class.
Bool_t SectionsValid(UInt_t mask) const
void ClearSectionsValid()
Clear any sections marked valid.
void SetSectionsValid(UInt_t mask)
Bool_t SetRawSizes(UInt_t reqPnts, UInt_t reqPntsCapacity, UInt_t reqSegs, UInt_t reqSegsCapacity, UInt_t reqPols, UInt_t reqPolsCapacity)
Set kRaw tessellation section of buffer with supplied sizes.
Buffer base class used for serializing objects.
Collection abstract base class.
virtual void Local2Master(Double_t *local, Double_t *master)
Convert one point from local system to master reference system.
TObject * After(const TObject *obj) const override
Returns the object after object obj.
void Add(TObject *obj) override
TObject * First() const override
Return the first object in the list. Returns 0 when list is empty.
Mother of all ROOT objects.
virtual void Streamer(TBuffer &)
Stream an object of class TObject.
virtual const char * ClassName() const
Returns name of class to which the object belongs.
virtual void AppendPad(Option_t *option="")
Append graphics object to current pad.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
virtual void Copy(TObject &object) const
Copy this to obj.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
@ kCanDelete
if object in a list can be deleted
A 3-dimensional polyline.
TPolyLine3D & operator=(const TPolyLine3D &polylin)
assignment operator
TPolyLine3D()
3-D polyline default constructor.
static void DrawOutlineCube(TList *outline, Double_t *rmin, Double_t *rmax)
Draw cube outline with 3d polylines.
void Paint(Option_t *option="") override
Paint a TPolyLine3D.
virtual void SetPoint(Int_t point, Double_t x, Double_t y, Double_t z)
Set point n to x, y, z.
virtual Int_t SetNextPoint(Double_t x, Double_t y, Double_t z)
Set point following LastPoint to x, y, z.
virtual Int_t Merge(TCollection *list)
Merge polylines in the collection in this polyline.
Int_t fLastPoint
The index of the last filled point.
Int_t fN
Number of points.
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save primitive as a C++ statement(s) on output stream.
~TPolyLine3D() override
3-D polyline destructor.
void ExecuteEvent(Int_t event, Int_t px, Int_t py) override
Execute action corresponding to one event.
virtual Int_t Size() const
void ls(Option_t *option="") const override
List this 3-D polyline.
void Draw(Option_t *option="") override
Draw this 3-D polyline with its current attributes.
virtual void SetPolyLine(Int_t n, Option_t *option="")
Re-initialize polyline with n points (0,0,0).
void Copy(TObject &polyline) const override
Copy polyline to polyline obj.
void Streamer(TBuffer &) override
Stream a 3-D polyline object.
virtual void DrawPolyLine(Int_t n, Float_t *p, Option_t *option="")
Draw 3-D polyline with new coordinates.
void Print(Option_t *option="") const override
Dump this 3-D polyline with its attributes on stdout.
TClass * IsA() const override
Int_t DistancetoPrimitive(Int_t px, Int_t py) override
Compute distance from point px,py to a 3-D polyline.
Float_t * fP
[3*fN] Array of 3-D coordinates (x,y,z)
static void IndentLevel()
Functions used by ls() to indent an object hierarchy.
void ToLower()
Change string to lower-case.
virtual void Streamer(TBuffer &)
Stream a string object.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
virtual void WCtoNDC(const Float_t *pw, Float_t *pn)=0
Abstract 3D shapes viewer.
virtual Int_t AddObject(const TBuffer3D &buffer, Bool_t *addChildren=nullptr)=0
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.