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).

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

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

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

For now, I will study your reccomended book.