public void pan_lr(double amount) { // move cen to the left Vector v = up.Cross(eye - cen); v.normalize(); amount = 0.001 * amount * _r; cen.x += amount * v.x; cen.y += amount * v.y; cen.z += amount * v.z; recalc(); }
private void recalc() { // recalculate eye position eye.x = cen.x + _r * Math.Cos(_theta) * Math.Sin(_fi); eye.y = cen.y + _r * Math.Sin(_theta) * Math.Sin(_fi); eye.z = cen.z + _r * Math.Cos(_fi); // recalculate up-vector Vector n = new Vector(Math.Sin(_theta), -Math.Cos(_theta), 0); up = n.Cross(eye - cen); up.normalize(); // System.Console.WriteLine("Camera: cen=" + cen + " eye=" + eye); }