Solved

How do i rotate a quad by its origen/pivot point? direct3d

Posted on 2007-11-21
10
673 Views
Last Modified: 2013-12-26
How do i rotate a quad by its origen/pivot point? direct3d

i use the following: for define my quad i know how to rotate it by it rotates by the top-left point and not by his origen point? any help?

i really need this.

vertexarray[0].x := 0;
vertexarray[0].y := 0;
vertexarray[0].z := 0.0;

vertexarray[1].x := 0;
vertexarray[1].y := 64;
vertexarray[1].z := 0.0;

vertexarray[2].x :=  0;
vertexarray[2].y :=  0;
vertexarray[2].z := 0.0;
vertexarray[2].rhw := 1.0;

 vertexarray[3].x :=  64;
vertexarray[3].y :=  0;
vertexarray[3].z := 0.0;


 vertexarray[4].x :=  64;
vertexarray[4].y :=  0;
vertexarray[4].z := 0.0;


 vertexarray[5].x :=  64;
vertexarray[5].y :=  64;
vertexarray[5].z := 0.0;

 vertexarray[6].x :=  0;
vertexarray[6].y :=  64;
vertexarray[6].z := 0.0;
0
Comment
Question by:becoolnike
10 Comments
 
LVL 84

Expert Comment

by:ozo
ID: 20332008
shift the to left point to the origin, rotate around  the origin, translate back
0
 

Author Comment

by:becoolnike
ID: 20332719
i want to shift the to left point to the origin but i dont know how lol.
0
 
LVL 84

Expert Comment

by:ozo
ID: 20332733
subtract the coordinates of the top left point from all the points
0
3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

 
LVL 20

Expert Comment

by:ikework
ID: 20333062
if your *origin is the center, then substract every x- and y-component of each vertex with 32 and rotate it then:

vertexarray[0].x := 0-32;
vertexarray[0].y := 0-32;
vertexarray[0].z := 0.0;

vertexarray[1].x := 0-32;
vertexarray[1].y := 64-32;
vertexarray[1].z := 0.0;

vertexarray[2].x :=  0-32;
vertexarray[2].y :=  0-32;
vertexarray[2].z := 0.0;
vertexarray[2].rhw := 1.0;

 vertexarray[3].x :=  64-32;
vertexarray[3].y :=  0-32;
vertexarray[3].z := 0.0;


 vertexarray[4].x :=  64-32;
vertexarray[4].y :=  0-32;
vertexarray[4].z := 0.0;


 vertexarray[5].x :=  64-32;
vertexarray[5].y :=  64-32;
vertexarray[5].z := 0.0;

 vertexarray[6].x :=  0-32;
vertexarray[6].y :=  64-32;
vertexarray[6].z := 0.0;


good luck :)
ike
0
 
LVL 84

Expert Comment

by:ozo
ID: 20333110
I thought you said you wanted to rotate around the top-left point rather than around (0,0,0)
Do you want to rotate around its midpoint?
0
 

Author Comment

by:becoolnike
ID: 20333255
yeah by his midpoint called povot. anyway without locking vertex/
there must be a fucntion using direct3d utils.
0
 

Author Comment

by:becoolnike
ID: 20333258
vertex locking takes takes off mush speed of a game.
0
 
LVL 84

Accepted Solution

by:
ozo earned 500 total points
ID: 20333337
multiply the
translate by povot matrix
*
rotate matrix
*
translate by -povot matrix
The resulting matrix id a rotation around povot
Apply that matrix to your vertexarray
0
 
LVL 1

Expert Comment

by:Computer101
ID: 20521694
Forced accept.

Computer101
EE Admin
0

Featured Post

Enterprise Mobility and BYOD For Dummies

Like “For Dummies” books, you can read this in whatever order you choose and learn about mobility and BYOD; and how to put a competitive mobile infrastructure in place. Developed for SMBs and large enterprises alike, you will find helpful use cases, planning, and implementation.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

As game developers, we quickly learn that Artificial Intelligence (AI) doesn’t need to be so tough.  To reference Space Ghost: “Moltar, I have a giant brain that is able to reduce any complex machine into a simple yes or no answer. (http://www.youtu…
Recently, in one of the tech-blogs I usually read, I saw a post about the best-selling video games through history. The first place in the list is for the classic, extremely addictive Tetris. Well, a long time ago, in a galaxy far far away, I was…

831 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question