| How to fing the normal to a curve ?? |
 |
| Msaaf Omar |
2000/05/04 17:48 |
| Hello, I am trying to calculate the normal and the tangent to a curve belonging to a surface in a given point. COuld some one point me out which package of classes to use ??? I tried using BRepLProp, and GeomProp, but it didn't work. Any help would be appreciated. Thanxs. Omar Msaaf |
 |
| |
 | | Thomas |
2000/05/04 19:41 |
Hi Omar,
Have a look at the following classes: GeomLProp_CLProps and GeomLProp_SLProps.
For example: gp_Pnt p1(0,0,1);
gp_Pnt p2(1,2,2);
gp_Pnt p3(2,3,3);
gp_Pnt p4(4,3,4);
gp_Pnt p5(5,5,5);
TColgp_Array1OfPnt array1(1,5); // sizing array
array1.SetValue(1,p1);
array1.SetValue(2,p2);
array1.SetValue(3,p3);
array1.SetValue(4,p4);
array1.SetValue(5,p5);
Handle(Geom_BezierCurve) Curve1 = new Geom_BezierCurve(array1);
gp_Pnt P1 = Curve1->EndPoint();
GeomLProp_CLProps analyse1(Curve1,
Curve1->LastParameter(),
1,
Precision::Confusion());
gp_Dir T1;
analyse1.Tangent(T1);
It should be similar with a surface (GeomLProp_SLProps)
Regards, Thomas |
 |
| |
 | | Maxim ZVEREV |
2000/05/05 05:53 |
Hello!
The simpliest way is to use directly the methods of Geom_Curve and Geom_Surface:
for the Curves : see the method Geom_Curve::D1 (which returns vector of first derivative, i.e tangent).
for the Surfaces : see the method Geom_Surface::D1 (which returns two tangent vectors D1U and D1V). Normal is the vector product of two tangencies:
gp_Vec aNorm = aD1U^aD1V;
Best regards. |
 |
| |
 | | Michael Gandyra |
2000/05/05 07:16 |
Normally you want to have the main normal. You are able to compute it with a given parameter u:
gp_Pnt aPnt;
gp_Vec d1u, d2u;
Handle_Geom_Curve aCurv=aCertainCurve;
Standard_Real u=aCertainValue;
// get 1st and 2nd derivative in u
aCurv->D2(u, aPnt, d1u, d2u);
Standard_Real nu_dot = d1u.Dot(d2u)/d1u.Magnitude();
gp_Vec t_vec = d1u.Divided(d1u.Magnitude());
// compute the main normal (not the bi normal)
gp_Vec mainn = d2u-(nu_dot*t_vec);
with regards,
Michael
------------------------------------------------------------------
University of Kaiserslautern
Research Group for Computer Application in Engineering Design
------------------------------------------------------------------ |
 |
| |
 | | maneesh |
2013/01/02 16:38 |
Can we compute the normal in case of line.
bcz for line the 2nd derivative becomes (0, 0, 0).
Pls. Help ??
Thanks in Advance. |
 |
| |
 | | Msaaf Omar |
2000/05/05 14:06 |
| NT = Nothing To Tell Omar Msaaf |
 |
| | | |