Added Zmode for moving objects along the perpendicular to the viewplane
This commit is contained in:
parent
c01d03e1ee
commit
07613df38d
|
@ -24,6 +24,10 @@
|
||||||
History
|
History
|
||||||
|
|
||||||
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
||||||
|
Revision 1.15 2006/01/12 15:40:05 cignoni
|
||||||
|
Corrected small bugs on rotating after scaling+translating
|
||||||
|
changed void PlaneMode::Apply and void SphereMode::Apply
|
||||||
|
|
||||||
Revision 1.14 2005/07/15 16:39:30 callieri
|
Revision 1.14 2005/07/15 16:39:30 callieri
|
||||||
in SphereMode::Hit added a check on the sphere intersection, if no intersection, calculating distance could generate a NAN exception
|
in SphereMode::Hit added a check on the sphere intersection, if no intersection, calculating distance could generate a NAN exception
|
||||||
|
|
||||||
|
@ -294,9 +298,17 @@ Point3f SphereMode::Hit(Trackball *tb, const Point3f &p) {
|
||||||
void PlaneMode::Apply(Trackball *tb, Point3f new_point) {
|
void PlaneMode::Apply(Trackball *tb, Point3f new_point) {
|
||||||
Point3f hitOld = HitViewPlane(tb, tb->last_point);
|
Point3f hitOld = HitViewPlane(tb, tb->last_point);
|
||||||
Point3f hitNew = HitViewPlane(tb, new_point);
|
Point3f hitNew = HitViewPlane(tb, new_point);
|
||||||
Matrix44f m; tb->track.rot.ToMatrix(m);
|
//Matrix44f m; tb->track.rot.ToMatrix(m);
|
||||||
//tb->track.tra = tb->last_track.tra + Inverse(m)*Point3f(hitNew- hitOld);// orig 2006 01 12
|
//tb->track.tra = tb->last_track.tra + Inverse(m)*Point3f(hitNew- hitOld);// orig 2006 01 12
|
||||||
tb->track.tra = tb->last_track.tra + Inverse(m)*Point3f(hitNew- hitOld)/tb->track.sca;;
|
//tb->track.tra = tb->last_track.tra + Inverse(m)*Point3f(hitNew- hitOld)/tb->track.sca;;
|
||||||
|
tb->Translate(hitNew- hitOld);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ZMode::Apply(Trackball *tb, Point3f new_point) {
|
||||||
|
float ScreenHeight= float(tb->camera.viewport[3]-tb->camera.viewport[1]);
|
||||||
|
float dist=(new_point[1]-tb->last_point[1])/ScreenHeight;
|
||||||
|
//Matrix44f m; tb->track.rot.ToMatrix(m);
|
||||||
|
//tb->track.tra = tb->last_track.tra + Inverse(m)*Point3f(0,0,-2*dist)/tb->track.sca;;
|
||||||
|
tb->Translate(Point3f(0,0,-2*dist));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,9 @@
|
||||||
History
|
History
|
||||||
|
|
||||||
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
||||||
|
Revision 1.8 2004/07/18 06:54:08 cignoni
|
||||||
|
Added Scaling
|
||||||
|
|
||||||
Revision 1.7 2004/07/11 22:06:56 cignoni
|
Revision 1.7 2004/07/11 22:06:56 cignoni
|
||||||
Added scaling by wheel
|
Added scaling by wheel
|
||||||
|
|
||||||
|
@ -96,6 +99,13 @@ protected:
|
||||||
Plane3f plane;
|
Plane3f plane;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Move the object along the Z of the Camera
|
||||||
|
// complement of the Plane mode
|
||||||
|
class ZMode: public TrackMode {
|
||||||
|
public:
|
||||||
|
void Apply(Trackball *trackball, Point3f new_point);
|
||||||
|
};
|
||||||
|
|
||||||
class LineMode: public TrackMode {
|
class LineMode: public TrackMode {
|
||||||
public:
|
public:
|
||||||
LineMode(const Line3f &/*line*/) {}
|
LineMode(const Line3f &/*line*/) {}
|
||||||
|
|
Loading…
Reference in New Issue