# How to get normal vectors accurately ?

I want to accurately calculate the normal vector of a point on the shell from a stp file.

I searched this forum, and for doing it everyone seems to convert the shell from a stp file to the faces at first.

But, in my limited experience, converting the shell to the face(s) reduces topological accuracy and accurate normal vectors cannot be obtained.

Does anyone know how to get normal vectors accurately without converting  the shell to the face(s).

Thanks in advance :D Hello Takeshi,

Shell is a collection of faces with shared edges. There is conversion but accessing to underlying structures. In CAD there is no surface associated with a shell. The normal calculation is possible on a surface (geometrically) or on a face (topologically).

qa qa Hi, qa qa -san(Mr./Ms.) :D

Thank you for replying.

But, for ray-shape intersection calculations within OCCT,  I can see differences between using BRepExtrema_DistShapeShape/RepIntCurveSurface_Inter (for intersection between shell and curve) and using GeomAPI_IntCS (for intersection between face and curve).

How do you think about it ? Hi,

In CAD we have two kinds of objects:

1. Geometrical (point, curve, curve on surface, surface)
2. Topological (vertex, edge, wire, face, shell, solid)

In general, when you deal with a face, it has a reference to underlying surface, edge to a curve, vertex to a point. BRep package works on topological level, GeomAPI on geometrical. Usually, functionality is duplicated in geometry and topology levels. You can study relationships between geometry and topology in "Introduction to solid modeling" by Martti Mantyla. It gives some good introduction in this topic.

qa qa Hi, qa qa -san :D

Your comments seem to be very very reasonable.

But  BRep package and GeomAPI one actually yield different solutions in my calculations.

For now, I will study your reccomended book.

Thanks for your cordial reply :D Well,

BRepExtrema_DistShapeShape - solves mathematical problem of minimum distance between two topological objects.

RepIntCurveSurface_Inter - calculates intersection points between curve and surface.

So, result can be different in general.

qa qa