Should work as before. I didn't test cylinder and other exotic modes.
This commit is contained in:
parent
82635287c7
commit
654452b177
|
@ -24,6 +24,10 @@
|
||||||
History
|
History
|
||||||
|
|
||||||
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
||||||
|
Revision 1.26 2008/02/24 14:37:00 ponchio
|
||||||
|
Restored trackball functionality. Not very much tested, and code will need some
|
||||||
|
cleanup.
|
||||||
|
|
||||||
Revision 1.25 2008/02/22 18:57:46 benedetti
|
Revision 1.25 2008/02/22 18:57:46 benedetti
|
||||||
first attempt to correct after quaternion ToMatrix() inversion (does not work yet)
|
first attempt to correct after quaternion ToMatrix() inversion (does not work yet)
|
||||||
|
|
||||||
|
@ -198,10 +202,9 @@ void Trackball::Scale(const float s)
|
||||||
|
|
||||||
void Trackball::Translate(Point3f tr)
|
void Trackball::Translate(Point3f tr)
|
||||||
{
|
{
|
||||||
// Matrix44f m;
|
Quaternionf irot = track.rot;
|
||||||
// track.rot.ToMatrix(m);
|
irot.Invert();
|
||||||
// track.tra = last_track.tra + m*tr/track.sca;
|
track.tra = last_track.tra + irot.Rotate(tr)/track.sca;
|
||||||
track.tra = last_track.tra + tr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/***************************************************************/
|
/***************************************************************/
|
||||||
|
|
|
@ -24,6 +24,10 @@
|
||||||
History
|
History
|
||||||
|
|
||||||
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
||||||
|
Revision 1.27 2008/02/24 14:37:00 ponchio
|
||||||
|
Restored trackball functionality. Not very much tested, and code will need some
|
||||||
|
cleanup.
|
||||||
|
|
||||||
Revision 1.26 2008/02/15 20:56:41 benedetti
|
Revision 1.26 2008/02/15 20:56:41 benedetti
|
||||||
removed some variable initialization related warning, added snap to CylinderMode
|
removed some variable initialization related warning, added snap to CylinderMode
|
||||||
|
|
||||||
|
@ -170,7 +174,7 @@ void SphereMode::Apply (Trackball * tb, Point3f new_point)
|
||||||
Point3f hitOld = HitSphere (tb, tb->last_point);
|
Point3f hitOld = HitSphere (tb, tb->last_point);
|
||||||
Point3f hitNew = HitSphere (tb, new_point);
|
Point3f hitNew = HitSphere (tb, new_point);
|
||||||
tb->Hits.push_back (hitNew);
|
tb->Hits.push_back (hitNew);
|
||||||
Point3f center = tb->center + tb->track.tra;
|
Point3f center = tb->center;
|
||||||
Point3f axis = (hitNew - center) ^ (hitOld - center);
|
Point3f axis = (hitNew - center) ^ (hitOld - center);
|
||||||
// Figure out how much to rotate around that axis.
|
// Figure out how much to rotate around that axis.
|
||||||
float phi = Distance (hitNew, hitOld) / tb->radius;
|
float phi = Distance (hitNew, hitOld) / tb->radius;
|
||||||
|
|
|
@ -24,6 +24,10 @@
|
||||||
History
|
History
|
||||||
|
|
||||||
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
||||||
|
Revision 1.10 2008/02/24 14:37:00 ponchio
|
||||||
|
Restored trackball functionality. Not very much tested, and code will need some
|
||||||
|
cleanup.
|
||||||
|
|
||||||
Revision 1.9 2008/02/22 18:57:47 benedetti
|
Revision 1.9 2008/02/22 18:57:47 benedetti
|
||||||
first attempt to correct after quaternion ToMatrix() inversion (does not work yet)
|
first attempt to correct after quaternion ToMatrix() inversion (does not work yet)
|
||||||
|
|
||||||
|
@ -221,7 +225,7 @@ eq cono y=x+sqrt(2);
|
||||||
*/
|
*/
|
||||||
Point3f HitSphere (Trackball * tb, const Point3f & p)
|
Point3f HitSphere (Trackball * tb, const Point3f & p)
|
||||||
{
|
{
|
||||||
Point3f center = tb->center + tb->track.tra;
|
Point3f center = tb->center;
|
||||||
Line3fN ln = tb->camera.ViewLineFromWindow (Point3f (p[0], p[1], 0));
|
Line3fN ln = tb->camera.ViewLineFromWindow (Point3f (p[0], p[1], 0));
|
||||||
Plane3f vp = GetViewPlane (tb->camera, center);
|
Plane3f vp = GetViewPlane (tb->camera, center);
|
||||||
Point3f hitPlane(0,0,0), //intersection view plane with point touched
|
Point3f hitPlane(0,0,0), //intersection view plane with point touched
|
||||||
|
@ -674,7 +678,8 @@ void DrawSphereIcon (Trackball * tb,bool active)
|
||||||
glPushAttrib (GL_TRANSFORM_BIT |GL_ENABLE_BIT | GL_LINE_BIT | GL_CURRENT_BIT | GL_LIGHTING_BIT);
|
glPushAttrib (GL_TRANSFORM_BIT |GL_ENABLE_BIT | GL_LINE_BIT | GL_CURRENT_BIT | GL_LIGHTING_BIT);
|
||||||
glMatrixMode(GL_MODELVIEW);
|
glMatrixMode(GL_MODELVIEW);
|
||||||
glPushMatrix ();
|
glPushMatrix ();
|
||||||
glTranslate (tb->center);
|
Point3f center = tb->center + tb->track.InverseMatrix()*tb->center;
|
||||||
|
glTranslate(center);
|
||||||
glScale (tb->radius);
|
glScale (tb->radius);
|
||||||
|
|
||||||
float amb[4] = { .3f, .3f, .3f, 1.0f };
|
float amb[4] = { .3f, .3f, .3f, 1.0f };
|
||||||
|
|
Loading…
Reference in New Issue