38 : mWindowSize( aScreenSize )
41 mRadius =
std::min( (
float)mWindowSize.
x / 2, (
float)mWindowSize.
y / 2 );
48 mInitialMousePos = mousePos;
49 mInitialQuat = mCurrentQuat;
56 if( mUseConstraint ) {
57 from = constrainToAxis( from, mConstraintAxis );
58 to = constrainToAxis( to, mConstraintAxis );
62 mCurrentQuat = mInitialQuat *
Quatf( from.
dot( to ), axis.
x, axis.
y, axis.
z );
73 void setRadius(
float aRadius ) { mRadius = aRadius; }
83 result.
x = ( point.
x - mCenter.
x ) / ( mRadius * 2 );
84 result.
y = ( point.
y - mCenter.
y ) / ( mRadius * 2 );
104 Vec3f onPlane = loose - axis * axis.
dot( loose );
107 if( onPlane.
z < 0.0f )
123 Vec2i mInitialMousePos;
125 Quatf mCurrentQuat, mInitialQuat;
127 Vec3f mConstraintAxis;
void setQuat(const Quatf &quat)
Definition: Arcball.h:68
static T sqrt(T x)
Definition: CinderMath.h:63
Quatf getQuat()
Definition: Arcball.h:67
void resetQuat()
Definition: Arcball.h:66
T lengthSquared() const
Definition: Vector.h:443
Definition: CinderMath.h:40
void setConstraintAxis(const Vec3f &aConstraintAxis)
Definition: Arcball.h:75
Vec3f mouseOnSphere(const Vec2i &point)
Definition: Arcball.h:80
T dot(const Vec3< T > &rhs) const
Definition: Vector.h:418
void normalize()
Definition: Vector.h:484
Vec2< float > Vec2f
Definition: Vector.h:1314
T z
Definition: Vector.h:321
T x
Definition: Vector.h:321
static Quaternion< float > identity()
Definition: Quaternion.h:733
T x
Definition: Vector.h:71
T y
Definition: Vector.h:321
bool isUsingConstraint() const
Definition: Arcball.h:77
void setCenter(const Vec2f &aCenter)
Definition: Arcball.h:71
#define min(a, b)
Definition: AppImplMsw.cpp:36
Vec3< float > Vec3f
Definition: Vector.h:1317
void mouseDrag(const Vec2i &mousePos)
Definition: Arcball.h:52
void setWindowSize(const Vec2i &aWindowSize)
Definition: Arcball.h:70
Quaternion< float > Quatf
Definition: Quaternion.h:774
float getRadius() const
Definition: Arcball.h:74
Vec2f getCenter() const
Definition: Arcball.h:72
void normalize()
Definition: Quaternion.h:125
void setNoConstraintAxis()
Definition: Arcball.h:76
T y
Definition: Vector.h:71
Vec3< T > cross(const Vec3< T > &rhs) const
Definition: Vector.h:423
static Vec3< float > xAxis()
Definition: Vector.h:683
Vec3f getConstraintAxis() const
Definition: Arcball.h:78
void mouseDown(const Vec2i &mousePos)
Definition: Arcball.h:46
Arcball()
Definition: Arcball.h:32
Arcball(const Vec2i &aScreenSize)
Definition: Arcball.h:37
GLclampf f
Definition: GLee.h:15307
void setRadius(float aRadius)
Definition: Arcball.h:73
Vec2< int > Vec2i
Definition: Vector.h:1313
Vec3< T > normalized() const
Definition: Vector.h:492
static Vec3< float > zAxis()
Definition: Vector.h:685