#### Archived

This topic is now archived and is closed to further replies.

# Flipping a vertex

This topic is 6236 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

hi there, im currently working on my reflective surfaces which are now working however i would like them to rotate etc which in order to do i need to flip the vertex around the quad. Currently im just scaling by -1 in the Y direction to do the flip but I cant see how this would work around any plane. Does anyone know of a matrix which i can apply to perform this transformation. Thanks Mark.

##### Share on other sites
I take it you have the normal to the quad? Doesn't matter if the normal is pointing to the reflective side or away from the reflective side. Then lets do a little analysis to figure this out:

Lets say the point you want to reflect is A = (Ax, Ay, Az).

And lets say that a point on the quad is B = (Bx, By, Bz). (It can be any point on the quad, but you *must* have this point to reflect about an arbitrary quad.)

And lets say that the normal of the quad is N = (Nx, Ny, Nz). It needs to be a unit vector.

And lets say that the *reflected* version of A is R = (Rx, Ry, Rz). This is what we want to calculate.

You can do the reflection like this:

First, calculate D = vector = (Ax - Bx, Ay - By, Az - Bz)

D is a temporary vector that points from the quad to the point we want reflected. D may not be perpendicular to the quad. We're actually going to reflect D about the plane, and then add B back to get the reflection of A. A portion of D points along the normal vector N, and a portion points parallel to the plane. We're really just splitting D into two components. The component of D that is normal to the plane is:

D_normal_to_quad = N * DotProduct(D, N)

where DotProduct(D, N) = (Ax-Bx)*Nx + (Ay-By)*Ny + (Az-Bz)*Nz

And the other part of D is:

See what we did. To project D into the plane of the quad, we merely removed the portion of D pointing outside the quad and we are left with a point inside the quad.

Now, to find the *reflection* of D about the quad just take the opposite of D_normal_to_quad:

which you can expand to see is the same as:

D_reflected = D - 2 * D_normal_to_quad

And D_reflected is a vector, measured relative to point B, that is reflected about the quad from the original vector D.

Now that we have D_reflected, just add B back to get R:

R = B + D_reflected

And R is the answer!

Graham Rhodes
Senior Scientist
Applied Research Associates, Inc.

Edited by - grhodes_at_work on September 24, 2001 6:45:59 PM

Edited by - grhodes_at_work on September 24, 2001 6:46:47 PM

##### Share on other sites
cheers Graham

works like a dream.

Just need to sort the clipplane and im there!!.

Thanks again

Mark.

##### Share on other sites
Excellent....

Graham Rhodes
Senior Scientist
Applied Research Associates, Inc.

1. 1
Rutin
47
2. 2
3. 3
4. 4
5. 5

• 13
• 10
• 12
• 10
• 13
• ### Forum Statistics

• Total Topics
632993
• Total Posts
3009765
• ### Who's Online (See full list)

There are no registered users currently online

×