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();
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++) {
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) {
626 memcpy(savepoint,
fP,3*fN*
sizeof(
Float_t));
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 Style_t GetLineStyle() const
virtual void SetLineWidth(Width_t lwidth)
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.
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
ClassImp(TSeqCollection) Int_t TSeqCollection TIter next(this)
Return index of object in collection.
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).
void Copy(TAttLine &attline) const
Copy this line attributes to a new TAttLine.
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 Int_t Size() const
virtual UInt_t WriteVersion(const TClass *cl, Bool_t useBcnt=kFALSE)=0
virtual void Modify()
Change current line attributes if necessary.
virtual void Print(Option_t *option="") const
Dump this 3-D polyline with its attributes on stdout.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual void AppendPad(Option_t *option="")
Append graphics object to current pad.
static const double x2[5]
virtual TObject * After(const TObject *obj) const
Returns the object after object 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.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
void SetSectionsValid(UInt_t mask)
virtual void Copy(TObject &object) const
Copy this to obj.
static void DrawOutlineCube(TList *outline, Double_t *rmin, Double_t *rmax)
Draw cube outline with 3d polylines.
virtual void SetLineColor(Color_t lcolor)
virtual const char * ClassName() const
Returns name of class to which the object belongs.
Collection abstract base class.
TPolyLine3D & operator=(const TPolyLine3D &polylin)
assignment operator
virtual Int_t AddObject(const TBuffer3D &buffer, Bool_t *addChildren=0)=0
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.
virtual void SetByteCount(UInt_t cntpos, Bool_t packInVersion=kFALSE)=0
static double p1(double t, double a, double b)
virtual Color_t GetLineColor() const
virtual void ReadFastArray(Bool_t *b, Int_t n)=0
virtual void WriteFastArray(const Bool_t *b, Int_t n)=0
virtual void Draw(Option_t *option="")
Draw this 3-D polyline with its current attributes.
virtual void Copy(TObject &polyline) const
Copy polyline to polyline obj.
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]
ClassImp(TMCParticle) void TMCParticle printf(": p=(%7.3f,%7.3f,%9.3f) ;", fPx, fPy, fPz)
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.
virtual void ls(Option_t *option="") const
List this 3-D polyline.
virtual void SetLineStyle(Style_t lstyle)
Binding & operator=(OUT(*fun)(void))
Mother of all ROOT objects.
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
virtual void Add(TObject *obj)
Short_t Max(Short_t a, Short_t b)
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitive as a C++ statement(s) on output stream.
static void IndentLevel()
Functions used by ls() to indent an object hierarchy.
virtual void DrawPolyLine(Int_t n, Float_t *p, Option_t *option="")
Draw 3-D polyline with new coordinates.
virtual Width_t GetLineWidth() const
R__EXTERN TGeometry * gGeometry
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
Bool_t SectionsValid(UInt_t mask) const