简体   繁体   English

使用 python 中的 nurbs / geomdl 找到 3D b 样条曲线上一点的曲率中心

[英]Find the center of Curvature of a point on 3D b-spline using nurbs / geomdl in python

Once again I am in over my head so please bear with me.我再一次在我的头上,所以请多多包涵。

I have a B-spline (imported from Solidworks) that I can analyze with geomdl in python.我有一个 B 样条曲线(从 Solidworks 导入),我可以在 python 中使用 geomdl 进行分析。
From geomdl I can extract the first and second derivatives as well as the tangent, normal, and binormal vectors for any given point on the spline.从 geomdl 中,我可以提取样条曲线上任何给定点的一阶和二阶导数以及切线、法线和副法线向量。

From there I can calculate the curvature at that point from the first and second derivatives.从那里我可以从一阶和二阶导数计算该点的曲率。

However I am not able to determine which way the curve is turning.但是我无法确定曲线转向的方向。

I would like to find the point that is at the center of curvature of current point of interest on the bspline.我想在 bspline 上找到当前感兴趣点的曲率中心的点。

I 'think' that the tangent vector and the normal vector both lie on the osculating plane of interest.我“认为”切线向量和法线向量都位于感兴趣的密切平面上。 The cross product would then give me the normal to the osculating plane.然后,叉积将为我提供密切平面的法线。 However I can not make this work.但是我无法完成这项工作。

At a minimum I need to know which way the curve is bending.至少我需要知道曲线弯曲的方向。 ie CW or CCW.即CW或CCW。

But if I have the point at the center of curvature I would know pretty much everything about that point.但是如果我在曲率中心有一点,我就会知道关于那个点的几乎所有事情。

Is this correct?这个对吗?

To restate the question:重申问题:

Given a point, the derivatives of the curve at that point, and and the Tangent, Normal, and BiNormal vectors, how do I find the center of curvature?给定一个点,曲线在该点的导数,以及切线、法线和双法线向量,我如何找到曲率中心?

Given a parametric curve C(t) and the first and 2nd derivatives C'(t) and C"(t), the curvature vector can be found给定参数曲线 C(t) 以及一阶和二阶导数 C'(t) 和 C"(t),可以找到曲率向量

K(t) = m1*C"(t) - m2*C'(t)

where在哪里

m1 = 1.0/||C'(t||^2 and m2 = m1*m1 * C'(t) \dot C"(t). 

From K(t), you can find the radius of curvature R(t) as从 K(t),您可以找到曲率半径 R(t) 为

R(t) = K(t)/||K(t)||^2

and then the center of curvature is C(t)+R(t).然后曲率中心是C(t)+R(t)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM