// @(#)root/gl:$Id$
// Author:  Timur Pocheptsov  03/08/2004

/*************************************************************************
 * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_TArcBall
#define ROOT_TArcBall

#ifndef ROOT_Rtypes
#include "Rtypes.h"
#endif

class TPoint;

class TArcBall {
private:
   Double_t fThisRot[9];
   Double_t fLastRot[9];
   Double_t fTransform[16];
   Double_t fStVec[3];          //Saved click vector
   Double_t fEnVec[3];          //Saved drag vector
   Double_t fAdjustWidth;      //Mouse bounds width
   Double_t fAdjustHeight;     //Mouse bounds height
   //Non-copyable
   TArcBall(const TArcBall &);
   TArcBall & operator = (const TArcBall &);
   void ResetMatrices();
protected:
   void MapToSphere(const TPoint &NewPt, Double_t *NewVec)const;
public:
   TArcBall(UInt_t NewWidth = 100, UInt_t NewHeight = 100);
   virtual ~TArcBall() { }

   void SetBounds(UInt_t NewWidth, UInt_t NewHeight)
   {
      fAdjustWidth  = 1.0f / ((NewWidth  - 1.) * 0.5);
      fAdjustHeight = 1.0f / ((NewHeight - 1.) * 0.5);
   }
   //Mouse down
   void Click(const TPoint &NewPt);
   //Mouse drag, calculate rotation
   void Drag(const TPoint &NewPt);
   const Double_t *GetRotMatrix()const
   {
      return fTransform;
   }

   ClassDef(TArcBall,0) //ArcBall manipulator
};

#endif

 TArcBall.h:1
 TArcBall.h:2
 TArcBall.h:3
 TArcBall.h:4
 TArcBall.h:5
 TArcBall.h:6
 TArcBall.h:7
 TArcBall.h:8
 TArcBall.h:9
 TArcBall.h:10
 TArcBall.h:11
 TArcBall.h:12
 TArcBall.h:13
 TArcBall.h:14
 TArcBall.h:15
 TArcBall.h:16
 TArcBall.h:17
 TArcBall.h:18
 TArcBall.h:19
 TArcBall.h:20
 TArcBall.h:21
 TArcBall.h:22
 TArcBall.h:23
 TArcBall.h:24
 TArcBall.h:25
 TArcBall.h:26
 TArcBall.h:27
 TArcBall.h:28
 TArcBall.h:29
 TArcBall.h:30
 TArcBall.h:31
 TArcBall.h:32
 TArcBall.h:33
 TArcBall.h:34
 TArcBall.h:35
 TArcBall.h:36
 TArcBall.h:37
 TArcBall.h:38
 TArcBall.h:39
 TArcBall.h:40
 TArcBall.h:41
 TArcBall.h:42
 TArcBall.h:43
 TArcBall.h:44
 TArcBall.h:45
 TArcBall.h:46
 TArcBall.h:47
 TArcBall.h:48
 TArcBall.h:49
 TArcBall.h:50
 TArcBall.h:51
 TArcBall.h:52
 TArcBall.h:53
 TArcBall.h:54
 TArcBall.h:55
 TArcBall.h:56
 TArcBall.h:57
 TArcBall.h:58