Sign in to follow this  

Quaternion Orbitting in C#

Recommended Posts

kuyawsadabaw    122
I know there's a bunch of posts here about Quaternions rotations, but I'm still a bit confused. I think there's two versions that I've read... #1 involves a camera rotating about an object and looking at it, and #2 involves a fixed camera with a target rotating about the fixed camera. I am desperately looking for code in C# that deals with #1. (Or can someone enlighten me a bit that i can write it). I'm taking really small steps here... Here's what I have:
Vector3 camLocation = new Vector3(0,0,20);
Vector3 camTarget = new Vector3(5,10,1);
Vector3 camUp = new Vector3(0,1,0);
Vector3 mouseInitialV3;
Vector3 mouseCurrentV3;
this.m_Device.Transform.View = Matrix.LookAtRH(camLocation , camTarget , camUp);
My 'camera' starts at a fixed point in space (camLocation) How do I get camLocation to rotate in a particular direction in a particular angle amount about camTarget? I'm planning on using the mouse and having a "grab and drag" type of feel to how the rotations are done. Up to this point, I only know how to get a ray from the mouse coordinates. My idea is I get an initial Vector3 on MouseDown for mouseInitialV3 and update mouseCurrentV3 on MouseMove. Then I think I can get an angle between those two positions with camTarget as the vertex. With mouseInitialV3 and mouseCurrentV3, I have a direction. I use the negative direction to move the 'camera' in the right direction to get the effect I want. All this plays well in my brain. I don't know if there's something wrong with it. What do you think? I don't know how to implement the Quaternion rotations with this idea, can someone help? How do I update camUp so that the view doesn't spin?

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this