Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

# Finding inner normal of an edge using C

Posted on 1998-05-28
Medium Priority
517 Views
Hi,

How can we calculate the inner normal of a linear edge of a polygonal face ?
The data i have is some face data (its surface normal, face center and face boundary) and the vertices of the edge.
The vertices and other data are represented in the Cartesian form.
(only x,y coordinate is of the interest)

I have a routine to calculate the normal vector** to the edge, but no idea how to make sure it
is an inner normal.
** note: edge vector = <x1,y1>
normal vector = <-y1,x1>

thanks,
Sam
0
Question by:kutaksama
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points

LVL 5

Expert Comment

ID: 1251039
What's an inner normal? I mean, AFAIK, a normal is a normal... there should be no concept of direction. Also, since you talk about a face normal, we should be in 3D, so why z-coord in not of interest?

-julio
0

LVL 84

Expert Comment

ID: 1251040
How about just traversing the edges counterclockwise?
0

Author Comment

ID: 1251041
I am working in a 3D geometric problem, but i reduce the problem into 2D when i just focus my attention to a planar face of a 3D object. This planar face is in the xy plane of the Cartesian space. That's why z-coordinate can be omited.
Inner normal mean a normal vector to the edge in the direction towards the region bounded by the face, instead of directing away from the face region.

-Sam
0

Author Comment

ID: 1251042
Edited text of question
0

LVL 2

Expert Comment

ID: 1251043
If the face is in the x-y plane, then the normal should be in the z direction, and your only problem is whether it is (0,0,1) or (0,0,-1) - is that correct?
0

LVL 5

Accepted Solution

julio011597 earned 400 total points
ID: 1251044
Given the edge P1-P2 where:

P1(x1, y1);
P2(x2, y2);

The slope of the P1-P2 edge is:

m(P1,P2) = (y2 - y1) / (x2 - x1);

and the slope of *the* (ANY) normal is:

m'(P1,P2) = - (1 / m(P1,P2)) = - (x2 - x1) / (y2 - y1);

This is almost all you need to know of a normal... indeed there's a normal direction, not a normal vector.

Let's go a bit further. Now we want the normal straight line passing by the mid-point M of edge P1-P2.

M = M((x2 + x1) / 2, (y2 + y1) / 2);

so we need to work out our particular y=mx+q, by the following system:

{ m = m'(P1,P2) =  - (x2 - x1) / (y2 - y1);
{ (y2 + y1) / 2 = m (x2 + x1) / 2 + q;  (passage through M)

a couple of steps lead to:

{ m =  - (x2 - x1) / (y2 - y1);
{ q = (y2^2 - y1^2 + x2^2 - x1^2) / (2 (y2 - y1));

so the normal straight line to our edge, passing through M, is:

y =  - (x2 - x1) / (y2 - y1) x + (y2^2 - y1^2 + x2^2 - x1^2) / (2 (y2 - y1));

This is almost all analytic geometry has to tell about the problem.
Again, there's no concept of direction, that is, there's no concept of inner or outer normals.

I just wander if your final goal is actually related to analytic geometry...

-julio
0

LVL 5

Expert Comment

ID: 1251045
BTW, i say:

> indeed there's a normal direction, not a normal vector

It is hard for me since i don't know the exact English terms, but there's a distinction between "direction" and "way" (orientation?) Geometry tells "direction" is just - to put it *very* simply - the slope of a straight line. A "way" instead means which way you walk the straight line towards, which brings the concept of inner/outer... but, again, analytical geometry does not deal with "ways".

-julio
0

LVL 5

Expert Comment

ID: 1251046
So (sorry for so much comments), when i later say:

> Again, there's no concept of direction, that is, there's no concept of inner or outer normals.

i actually mean "there's no concept of way" (or "orientation"...).

Just to tell, we call them "direzione" and "verso".

-julio
0

LVL 5

Expert Comment

ID: 1251047
...BTW, i've seen the question you previously posted.

Also, i can give a C code that given P1 and P2 coords, gives back m' or... whatever you're looking for :)

Third, i've seen the answer you refer to, but i cannot understand what it is about. That is, <x,y> is not an edge, unless it means <P1,P2>... and, if so, <P2,-P1> is not its normal, AFAIK.

-julio
0

LVL 5

Expert Comment

ID: 1251048
kutaksama, did that help?

-julio
0

## Featured Post

Question has a verified solution.

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

This tutorial is posted by Aaron Wojnowski, administrator at SDKExpert.net.  To view more iPhone tutorials, visit www.sdkexpert.net. This is a very simple tutorial on finding the user's current location easily. In this tutorial, you will learn hoā¦
Summary: This tutorial covers some basics of pointer, pointer arithmetic and function pointer. What is a pointer: A pointer is a variable which holds an address.Ā This address might be address of another variable/address of devices/address of fuā¦
The goal of this video is to provide viewers with basic examples to understand and use pointers in the C programming language.
The goal of this video is to provide viewers with basic examples to understand opening and writing to files in the C programming language.
###### Suggested Courses
Course of the Month6 days, 3 hours left to enroll