12#include "RConfigure.h" 
  118   for (i = 0; i < 3; i++) {
 
 
  168   if (
gPad) 
gPad->Range(-1, -1, 1, 1);
 
  172   for (i = 0; i < 3; i++) {
 
 
  198   fLatitude(
tv.fLatitude),
 
  199   fLongitude(
tv.fLongitude),
 
  206   fOutline(
tv.fOutline),
 
  207   fDefaultOutline(
tv.fDefaultOutline),
 
  208   fAutoRange(
tv.fAutoRange),
 
  209   fChanged(
tv.fChanged)
 
  211   for (
Int_t i=0; i<16; i++) {
 
  217   for(
Int_t i=0; i<3; i++) {
 
  227   for(
Int_t i=0; i<4; i++)
 
 
  250      for(
Int_t i=0; i<16; i++) {
 
  256      for(
Int_t i=0; i<3; i++) {
 
  266      for(
Int_t i=0; i<4; i++)
 
 
  310      { 2,3,4,1, 6,7,8,5 }, 
 
  311      { 3,4,1,2, 7,8,5,6 }, 
 
  312      { 1,2,3,4, 5,6,7,8 }, 
 
  341   for (
Int_t i=0; i<8; ++i) {
 
 
  588   for (i = 1; i <= 3; ++i) {
 
  589      for (k = 1; k <= 4; ++k) {
 
  607   for (i = 1; i <= 3; ++i) {
 
  608      for (k = 1; k <= 4; ++k) {
 
  609         tback[k + (i << 2)] = 
tran[(i << 2) - 4]*
rota[(k << 2) - 4] +
 
  610            tran[(i << 2) - 3]*
rota[(k << 2) - 3] + 
tran[(i << 2) -2]
 
  611            *
rota[(k << 2) - 2] + 
tran[(i << 2) - 1]*
rota[(k <<2) - 1];
 
 
  652   if (!
gPad->IsEditable()) 
return;
 
  673      x      = 
gPad->PixeltoX(px);
 
  674      y      = 
gPad->PixeltoY(py);
 
  700      x = 
gPad->PixeltoX(px);
 
  701      y = 
gPad->PixeltoY(py);
 
  728      if (
gROOT->IsEscaped()) {
 
  750            gPad->ReleaseViewer3D();
 
 
  824   for (i = 1; i <= 
kphi; ++i) {
 
  829      if (
x1 >= 0 && 
x2 > 0) 
continue;
 
  830      if (
x1 <= 0 && 
x2 < 0) 
continue;
 
  836      Error(
"FindPhiSectors", 
"something strange: num. of critical sector not equal 2");
 
 
  891   for (i = 1; i <= 
kth; ++i) {
 
  896      if (
z1 >= 0 && 
z2 > 0) 
continue;
 
  897      if (
z1 <= 0 && 
z2 < 0) 
continue;
 
  903      Error(
"FindThetaSectors", 
"Something strange: num. of critical sectors not equal 2");
 
 
  937   for (
Int_t i = 0; i < 3; i++) {
 
 
  983   } 
else if (axis == 2) {
 
 1003   if (
c <= 0) 
return 9999;
 
 
 1030   for (
Int_t i = 0; i < 3; max[i] = 
fRmax[i], min[i] = 
fRmin[i], i++) { }
 
 
 1038   for (
Int_t i = 0; i < 3; max[i] = 
fRmax[i], min[i] = 
fRmin[i], i++) { }
 
 
 1101   Double_t x, 
y, z, 
a1, 
a2, 
a3, b1, b2, b3, 
c1, 
c2, 
c3;
 
 
 1129   Double_t x, 
y, z, 
a1, 
a2, 
a3, b1, b2, b3, 
c1, 
c2, 
c3;
 
 
 1163   for (i = 1; i <= 2; ++i) {
 
 1165      for (k = 1; k <= 3; ++k) {
 
 1166         if (
fTnorm[k + (i << 2) - 5] < 0) {
 
 1209      for (i = 1; i <= 8; ++i) {
 
 1226         if (i % 2 == 0) 
r2 = -
r2;
 
 
 1238   for (
Int_t i=0;i<3;i++) {
 
 
 1329   for (
Int_t i = 0; i < 3; 
fRmax[i] = max[i], 
fRmin[i] = min[i], i++) { }
 
 1333      Error(
"SetRange", 
"problem setting view");
 
 
 1445      Error(
"ResetView", 
"Error in min-max scope");
 
 
 1484      for (
Int_t i=0; i<3; i++) {
 
 
 1516      for (
Int_t i=0; i<3; i++) {
 
 
 1625   for (i=0;i<3; i++) max[i] += 
maxSide - (max[i]-min[i]);
 
 
 1639   for (i=0;i<3; i++) {
 
 1640      if (max[i] > 0) min[i] = -max[i];
 
 1641      else            max[i] = -min[i];
 
 
 1665   for (i=0;i<3; i++) {
 
 
 1693   for (i=0; i<3; i++) {
 
 1711   for (i=0; i<
nsteps; i++) {
 
 1718      for (
j=0; 
j<3; 
j++) {
 
 
 1740   if (count <= 0) count = 1;
 
 
 1863   if (
R__b.IsReading()) {
 
 1874      if (
R__b.GetParent() && 
R__b.GetVersionOwner() < 22500) { 
 
 1883         R__b.ReadStaticArray(sa);   
for (i=0;i<12;i++) 
fTN[i] = sa[i];
 
 1884         R__b.ReadStaticArray(sa);   
for (i=0;i<12;i++) 
fTB[i] = sa[i];
 
 1885         R__b.ReadStaticArray(sa);   
for (i=0;i<3;i++)  
fRmax[i] = sa[i];
 
 1886         R__b.ReadStaticArray(sa);   
for (i=0;i<3;i++)  
fRmin[i] = sa[i];
 
 1887         R__b.ReadStaticArray(sa);   
for (i=0;i<12;i++) 
fTnorm[i] = sa[i];
 
 1888         R__b.ReadStaticArray(sa);   
for (i=0;i<12;i++) 
fTback[i] = sa[i];
 
 1889         R__b.ReadStaticArray(sa);   
for (i=0;i<3;i++)  
fX1[i] = sa[i];
 
 1890         R__b.ReadStaticArray(sa);   
for (i=0;i<3;i++)  
fX2[i] = sa[i];
 
 1891         R__b.ReadStaticArray(sa);   
for (i=0;i<3;i++)  
fY1[i] = sa[i];
 
 1892         R__b.ReadStaticArray(sa);   
for (i=0;i<3;i++)  
fY2[i] = sa[i];
 
 1893         R__b.ReadStaticArray(sa);   
for (i=0;i<3;i++)  
fZ1[i] = sa[i];
 
 1894         R__b.ReadStaticArray(sa);   
for (i=0;i<3;i++)  
fZ2[i] = sa[i];
 
int Int_t
Signed integer 4 bytes (int)
 
short Version_t
Class version identifier (short)
 
char Char_t
Character 1 byte (char)
 
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int)
 
float Float_t
Float 4 bytes (float)
 
double Double_t
Double 8 bytes.
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
winID h TVirtualViewer3D TVirtualGLPainter p
 
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 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 MoveWindow
 
Option_t Option_t TPoint TPoint const char y1
 
virtual void Streamer(TBuffer &)
 
static TAxis3D * ToggleRulers(TVirtualPad *pad=nullptr)
Turn ON / OFF the "Ruler", TAxis3D object attached to the current pad.
 
static TAxis3D * ToggleZoom(TVirtualPad *pad=nullptr)
Turn ON / OFF the "Ruler" and "zoom mode" of the TAxis3D object attached to the current pad (if pad =...
 
Buffer base class used for serializing objects.
 
void Delete(Option_t *option="") override=0
Delete this object.
 
void Paint(Option_t *option="") override
Paint all objects in this collection.
 
TObject & operator=(const TObject &rhs) noexcept
TObject assignment operator.
 
virtual void Streamer(TBuffer &)
Stream an object of class TObject.
 
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
@ kMustCleanup
if object destructor must call RecursiveRemove()
 
static void DrawOutlineCube(TList *outline, Double_t *rmin, Double_t *rmax)
Draw cube outline with 3d polylines.
 
TView3D()
Default constructor.
 
void NDCtoWC(const Float_t *pn, Float_t *pw) override
Transfer point from normalized to world coordinates.
 
void ToggleRulers(TVirtualPad *pad=nullptr) override
Turn on /off 3D axis.
 
void FindPhiSectors(Int_t iopt, Int_t &kphi, Double_t *aphi, Int_t &iphi1, Int_t &iphi2) override
Find critical PHI sectors.
 
void ZoomIn() override
Zoom in.
 
Int_t GetSystem() override
 
void ZoomOut() override
Zoom out.
 
void FindNormal(Double_t x, Double_t y, Double_t z, Double_t &zn) override
Find Z component of NORMAL in normalized coordinates.
 
TView3D & operator=(const TView3D &)
Assignment operator.
 
void ExecuteRotateView(Int_t event, Int_t px, Int_t py) override
Execute action corresponding to one event.
 
void SetPerspective() override
Set perspective option.
 
Double_t GetPsi() override
 
void SetParallel() override
Set the parallel option (default).
 
void DrawOutlineCube(TList *outline, Double_t *rmin, Double_t *rmax) override
Draw the outline of a cube while rotating a 3-d object in the pad.
 
Int_t GetDistancetoAxis(Int_t axis, Int_t px, Int_t py, Double_t &ratio) override
Return distance to axis from point px,py.
 
void ResetView(Double_t longitude, Double_t latitude, Double_t psi, Int_t &irep)
Set view direction (in spherical coordinates).
 
void FrontView(TVirtualPad *pad=nullptr) override
Set to front view.
 
void MoveFocus(Double_t *center, Double_t dx, Double_t dy, Double_t dz, Int_t nsteps=10, Double_t dlong=0, Double_t dlat=0, Double_t dpsi=0) override
Move focus to a different box position and extent in nsteps.
 
Bool_t IsPerspective() const override
 
void SetRange(const Double_t *min, const Double_t *max) override
Set Range function.
 
void Centered3DImages(TVirtualPad *pad=nullptr) override
Move view into the center of the scene.
 
void NormalWCtoNDC(const Float_t *pw, Float_t *pn) override
Transfer vector of NORMAL from word to normalized coordinates.
 
void FindScope(Double_t *scale, Double_t *center, Int_t &irep) override
Find centre of a MIN-MAX scope and scale factors.
 
void GetWindow(Double_t &u0, Double_t &v0, Double_t &du, Double_t &dv) const override
Get current window extent.
 
void SetView(Double_t longitude, Double_t latitude, Double_t psi, Int_t &irep) override
Set view parameters.
 
void SetWindow(Double_t u0, Double_t v0, Double_t du, Double_t dv) override
Set viewing window.
 
void GetRange(Float_t *min, Float_t *max) override
Get Range function.
 
void DefinePerspectiveView() override
Define perspective view.
 
void MoveViewCommand(Char_t chCode, Int_t count=1) override
 
void ToggleZoom(TVirtualPad *pad=nullptr) override
Turn on /off the interactive option to Zoom / Move / Change attributes of 3D axis correspond this vie...
 
~TView3D() override
TView3D default destructor.
 
Double_t GetExtent() const override
Get maximum view extent.
 
void AdjustScales(TVirtualPad *pad=nullptr) override
Adjust all sides of view in respect of the biggest one.
 
void ZoomView(TVirtualPad *pad=nullptr, Double_t zoomFactor=1.25) override
ZOOM this view.
 
void UnzoomView(TVirtualPad *pad=nullptr, Double_t unZoomFactor=1.25) override
unZOOM this view.
 
static void AdjustPad(TVirtualPad *pad=nullptr)
Force the current pad to be updated.
 
void WCtoNDC(const Float_t *pw, Float_t *pn) override
Transfer point from world to normalized coordinates.
 
Bool_t IsClippedNDC(Double_t *p) const override
Check if point is clipped in perspective view.
 
void SetAxisNDC(const Double_t *x1, const Double_t *x2, const Double_t *y1, const Double_t *y2, const Double_t *z1, const Double_t *z2) override
Store axis coordinates in the NDC system.
 
void PadRange(Int_t rback) override
Set the correct window size for lego and surface plots.
 
void ExecuteEvent(Int_t event, Int_t px, Int_t py) override
Execute action corresponding to one event.
 
void FindThetaSectors(Int_t iopt, Double_t phi, Int_t &kth, Double_t *ath, Int_t &ith1, Int_t &ith2) override
Find critical THETA sectors for given PHI sector.
 
void TopView(TVirtualPad *pad=nullptr) override
Set to top view.
 
void SetOutlineToCube() override
This is a function which creates default outline.
 
void MoveWindow(Char_t option) override
Move view window :
 
TSeqCollection * fOutline
 
void RotateView(Double_t phi, Double_t theta, TVirtualPad *pad=nullptr) override
API to rotate view and adjust the pad provided it the current one.
 
void ResizePad() override
Recompute window for perspective view.
 
void DefineViewDirection(const Double_t *s, const Double_t *c, Double_t cosphi, Double_t sinphi, Double_t costhe, Double_t sinthe, Double_t cospsi, Double_t sinpsi, Double_t *tnorm, Double_t *tback) override
Define view direction (in spherical coordinates)
 
void SideView(TVirtualPad *pad=nullptr) override
Set to side view.
 
void AxisVertex(Double_t ang, Double_t *av, Int_t &ix1, Int_t &ix2, Int_t &iy1, Int_t &iy2, Int_t &iz1, Int_t &iz2) override
Define axis vertices.
 
void SetDefaultWindow() override
Set default viewing window.
 
TVirtualPad is an abstract base class for the Pad and Canvas classes.
 
Abstract 3D shapes viewer.
 
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.
 
Double_t Sqrt(Double_t x)
Returns the square root of x.
 
Double_t Cos(Double_t)
Returns the cosine of an angle of x radians.
 
Double_t Sin(Double_t)
Returns the sine of an angle of x radians.
 
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.