# Normal Vector Transformation

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

## Recommended Posts

Hi, community.

I wrote a new article about the Normal Vector Transformation

The post is the following

https://nbertoa.wordpress.com/2017/04/13/normal-vector-transformation/

If you have any suggestions (things to add, modify, things that are wrong, corrections, etc) please let me know, because the intention of this post (in addition to helping people with the same doubts than me) is to learn if my knowledge is correct or not.

Hope you find it useful!

##### Share on other sites

The last line needs a dot, just like the first one.

My other criticism of the article is that you are not consistent enough about whether the normal is a vector or not.

In 3D, the surface normal, or simply normal, to a surface at a point P is a vector that [...]

Although normals are superficially similar to vectors[...]

##### Share on other sites
Thanks, Alvaro. I will improve the article based on your feedback.

##### Share on other sites

If the block of math (pointed out by Alvaro) isn't self evident to a reader, then the article reads like this:

From a mathematical point of view, suppose N is the normal vector and V is the tangent vector. Since they are perpendicular their dot product is zero. Therefore, normals must be transformed by the inverse transpose of the transformation matrix.

Which doesn't read very well -- the "therefore" seems out of the blue. To me it feels like there should be an extra sentence below the block of math that explains it.

I'm personally not good at explaining this either -- I always draw pictures of spheres being scaled like you have too, and prove via example that M produces an incorrect normal while M-T works...

##### Share on other sites

Thanks Hodgman for your suggestions! Yes, you are right. I am not native English speaker, so sometimes my phrases are not the correct ones.

I just updated the post with a better explanation of that part.

##### Share on other sites

I think I would first show that the naive approach fails (e.g. either sphere or box under shear transform). The reason it doesn't work is that you are essentially transforming a vector which is a non-linear function of the underlying mesh surface. E.g. n = f( v1, v2, ...) and obviously R * n = R * f( v1, v2, ...) !=  f( R * v1, R * v2, ... )

The discussion if normals are vectors is not useful in this context. Eric gave a presentation about Grassman algebra here: http://www.terathon.com/gdc12_lengyel.pdf which covers this problem properly.

Edited by Dirk Gregorius

##### Share on other sites

Thanks Dirk for your suggestions! I did not know that presentation of Grassman algebra.

In my blog, I write mainly about 2 things: improvements in a little DirectX12 engine I am developing + new things I learn (like this article about normal vector transformation)

I try to show the things I learn, how I learned, how I implemented what I learned and what resources I used to learn them. Some topics are very well covered but in different papers, books, articles, etc. I try to make questions and answer them in a blog post. I do not know if that contributes or not to the community, but sharing knowledge + source code can help. When I share these posts, I get invaluable feedback from people with more experience than me.

And yes, I agree that these posts are also useful for me too because if for example, I forgot something about the geometry space transformations, I have a post about that that will help me to refresh the topic.

1. 1
2. 2
3. 3
Rutin
15
4. 4
5. 5

• 9
• 9
• 11
• 11
• 23
• ### Forum Statistics

• Total Topics
633678
• Total Posts
3013292
×