136 for (
Int_t i=0; i<3*
n; i++) {
159 for (
Int_t i=0; i<3*
n; i++) {
183 for (
Int_t i=0; i<
n;i++) {
211 for (
Int_t i=0; i<
n;i++) {
242 if (
fP)
delete []
fP;
285 const Int_t inaxis = 7;
294 if (px < puxmin - inaxis)
return dist;
295 if (py > puymin + inaxis)
return dist;
296 if (px > puxmax + inaxis)
return dist;
297 if (py < puymax - inaxis)
return dist;
300 if (!view)
return dist;
305 for (i=0;i<
Size()-1;i++) {
313 if (dsegment < dist) dist = dsegment;
376 pl3d->
SetPoint(0, xmin, ymin, zmin);
377 pl3d->
SetPoint(1, xmax, ymin, zmin);
378 pl3d->
SetPoint(2, xmax, ymax, zmin);
379 pl3d->
SetPoint(3, xmin, ymax, zmin);
385 pl3d->
SetPoint(0, xmax, ymin, zmin);
386 pl3d->
SetPoint(1, xmax, ymin, zmax);
387 pl3d->
SetPoint(2, xmax, ymax, zmax);
388 pl3d->
SetPoint(3, xmax, ymax, zmin);
394 pl3d->
SetPoint(0, xmax, ymin, zmax);
395 pl3d->
SetPoint(1, xmin, ymin, zmax);
396 pl3d->
SetPoint(2, xmin, ymax, zmax);
397 pl3d->
SetPoint(3, xmax, ymax, zmax);
403 pl3d->
SetPoint(0, xmin, ymin, zmax);
404 pl3d->
SetPoint(1, xmin, ymin, zmin);
405 pl3d->
SetPoint(2, xmin, ymax, zmin);
406 pl3d->
SetPoint(3, xmin, ymax, zmax);
421 for (
Int_t i=0; i<size;i++) { newpolyline->
fP[i] = p[i];}
435 if (
gPad->GetView())
gPad->GetView()->ExecuteRotateView(event, px, py);
444 std::cout <<
"PolyLine3D N=" <<
fN<<
" Option="<<option<<std::endl;
463 npoints += pl->
Size();
474 for (
Int_t i=0;i<np;i++) {
475 SetPoint(i,p[3*i],p[3*i+1],p[3*i+2]);
490 if (
Size() <= 0)
return;
508 if (!viewer3D)
return;
516 Int_t nbSegs = nbPnts-1;
517 if (!buffer.
SetRawSizes(nbPnts, 3*nbPnts, nbSegs, 3*nbSegs, 0, 0)) {
525 for (i=0; i<3*buffer.
NbPnts(); i++) {
534 dlocal[0] = buffer.
fPnts[3*j];
535 dlocal[1] = buffer.
fPnts[3*j+1];
536 dlocal[2] = buffer.
fPnts[3*j+2];
538 buffer.
fPnts[3*j] = dmaster[0];
539 buffer.
fPnts[3*j+1] = dmaster[1];
540 buffer.
fPnts[3*j+2] = dmaster[2];
549 for (i = 0; i < buffer.
NbSegs(); i++) {
550 buffer.
fSegs[3*i ] = c;
551 buffer.
fSegs[3*i+1] = i;
552 buffer.
fSegs[3*i+2] = i+1;
568 printf(
" TPolyLine3D N=%d, Option=%s\n",
fN,option);
573 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]);
588 out<<
" TPolyLine3D *";
591 out<<
"pline3D = new TPolyLine3D("<<
fN<<
","<<quote<<
fOption<<quote<<
");"<<std::endl;
596 for (
Int_t i=0;i<size;i++)
597 out<<
" pline3D->SetPoint("<<i<<
","<<
fP[3*i]<<
","<<
fP[3*i+1]<<
","<<
fP[3*i+2]<<
");"<<std::endl;
599 out<<
" pline3D->Draw();"<<std::endl;
621 if (!
fP || n >=
fN) {
627 memset(&savepoint[3*
fN],0,(newN-fN)*
sizeof(
Float_t));
654 if (
fP)
delete []
fP;
675 if (
fP)
delete []
fP;
680 fP[3*i+1] = p[3*i+1];
681 fP[3*i+2] = p[3*i+2];
704 if (
fP)
delete []
fP;
721 void TPolyLine3D::Streamer(
TBuffer &
b)
726 TObject::Streamer(b);
727 TAttLine::Streamer(b);
738 TObject::Streamer(b);
739 TAttLine::Streamer(b);
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
double dist(Rotation3D const &r1, Rotation3D const &r2)
TPolyLine3D()
3-D polyline default constructor.
static double p3(double t, double a, double b, double c, double d)
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to one event.
Float_t * fP
[3*fN] Array of 3-D coordinates (x,y,z)
virtual void WCtoNDC(const Float_t *pw, Float_t *pn)=0
virtual void SetPolyLine(Int_t n, Option_t *option="")
Re-initialize polyline with n points (0,0,0).
Use this attribute class when an object should have 3D capabilities.
Buffer base class used for serializing objects.
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
void ClearSectionsValid()
Clear any sections marked valid.
void ToLower()
Change string to lower-case.
A 3-dimensional polyline.
virtual Int_t Merge(TCollection *list)
Merge polylines in the collection in this polyline.
virtual UInt_t WriteVersion(const TClass *cl, Bool_t useBcnt=kFALSE)=0
virtual void Modify()
Change current line attributes if necessary.
virtual Width_t GetLineWidth() const
Return the line width.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
if object in a list can be deleted
virtual void AppendPad(Option_t *option="")
Append graphics object to current pad.
virtual Style_t GetLineStyle() const
Return the line style.
static const double x2[5]
virtual const char * ClassName() const
Returns name of class to which the object belongs.
virtual void ls(Option_t *option="") const
List this 3-D polyline.
void Copy(TAttLine &attline) const
Copy this line attributes to a new TAttLine.
virtual void Copy(TObject &object) const
Copy this to obj.
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.
virtual ~TPolyLine3D()
3-D polyline destructor.
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute distance from point px,py to a 3-D polyline.
static double p2(double t, double a, double b, double c)
virtual void Local2Master(Double_t *local, Double_t *master)
Convert one point from local system to master reference system.
Abstract 3D shapes viewer.
TObject & operator=(const TObject &rhs)
TObject assignment operator.
void SetSectionsValid(UInt_t mask)
static void DrawOutlineCube(TList *outline, Double_t *rmin, Double_t *rmax)
Draw cube outline with 3d polylines.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
Bool_t SectionsValid(UInt_t mask) const
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
virtual void Print(Option_t *option="") const
Dump this 3-D polyline with its attributes on stdout.
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
Collection abstract base class.
TPolyLine3D & operator=(const TPolyLine3D &polylin)
assignment operator
virtual Int_t AddObject(const TBuffer3D &buffer, Bool_t *addChildren=0)=0
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
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.
Generic 3D primitive description class.
static void IndentLevel()
Functions used by ls() to indent an object hierarchy.
virtual void SetByteCount(UInt_t cntpos, Bool_t packInVersion=kFALSE)=0
virtual TObject * After(const TObject *obj) const
Returns the object after object obj.
Int_t fN
Number of points.
static double p1(double t, double a, double b)
virtual void ReadFastArray(Bool_t *b, Int_t n)=0
virtual void WriteFastArray(const Bool_t *b, Int_t n)=0
virtual Color_t GetLineColor() const
Return the line color.
virtual void Draw(Option_t *option="")
Draw this 3-D polyline with its current attributes.
virtual void SetPoint(Int_t point, Double_t x, Double_t y, Double_t z)
Set point n to x, y, z.
static const double x1[5]
Int_t fLastPoint
The index of the last filled point.
virtual Int_t SetNextPoint(Double_t x, Double_t y, Double_t z)
Set point following LastPoint to x, y, z.
virtual void Paint(Option_t *option="")
Paint a TPolyLine3D.
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.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
virtual void Copy(TObject &polyline) const
Copy polyline to polyline obj.
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
Binding & operator=(OUT(*fun)(void))
Mother of all ROOT objects.
you should not use this method at all Int_t Int_t z
virtual void Add(TObject *obj)
Short_t Max(Short_t a, Short_t b)
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitive as a C++ statement(s) on output stream.
virtual void DrawPolyLine(Int_t n, Float_t *p, Option_t *option="")
Draw 3-D polyline with new coordinates.
R__EXTERN TGeometry * gGeometry
virtual Int_t Size() const
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0