确定平均弯度线

8

各位程序员们,

我知道这可能超出了你们的职责范围,但我想请问一下,如果你们有时间的话,是否能帮我处理一个“过程”。这并不涉及数学,而是最好的方法。

alt text alt text

这是一个翼型/剖面。通常,剖面需要用两组数据来定义。第一组是平均弯度线的位置,以x,y形式给出,其中x通常以弦长百分比的形式给出。第二组数据是弦长百分比处的厚度。厚度总是垂直于弯度线(!),这样就可以得到剖面点。

现在,我有一个反向问题-我有一个剖面的点,我需要确定弯度线的位置。插值方法可以不同,但这并不重要,因为我始终可以插值出所需的许多点,因此最终变成线性。

请记住,由于厚度垂直于弯度线,所以弯度线的位置不是位于剖面上下线(称为背面和正面)的点之间的平均值。


编辑(如何在纸上完成):哦,这很痛苦,需要大规模操作(我说的是长A0纸张,即1189x5945mm,在大绘图桌上)。您可以通过在相同x坐标处的面和背点之间的中点(平均点)绘制第一条弯度线(CL)迭代来开始。然后,您绘制许多垂直于该CL的垂线,并在面和背之间找到它们的中点(面和背上的那些点将不再具有相同的x值)。连接它们,这就是您的第二次迭代CL。之后,您只需重复程序的第二步,通过在第二个CL上绘制垂线...(通常在3或4次迭代后收敛)。


第二次编辑:用更好地显示厚度如何“绘制”到弯度线(CL)的图片替换了原来的图片。另一种呈现方法是像第2张图片那样。如果您绘制了许多圆,其圆心位于弯度线上,其半径为厚度,则这些圆的切线将构成剖面的曲线。

弯度线不是平均线(面和背点之间的平均值);它可以与其重合(因此通常会引起混淆)。在更弯曲的剖面上(更弯曲的剖面),这种差异很容易看出。


第三次编辑-为了生动地说明平均线和弯曲线的区别(很抱歉我花了这么长时间才画出来),以下是通常“在纸上”完成的过程。这是一个相当畸形的轮廓,因为这样可以更容易地显示两者之间的差异(尽管也存在这样的轮廓)。

在这张图片中,展示了平均线-它是由面和背面在相同x坐标上的平均值形成的线。

alt text

在这张图片中,垂直线被画到平均线上(绿色线)。这些垂直线的中点组成了弯曲线的第一次迭代(红色虚线)。看看这些圆圈如何与第一张图片相比更好地适应翼型内部。

alt text

在下面的图片中,展示了弯曲线的第二次迭代,同时展示了第一张图片中的平均线以说明两者之间的区别。现在,这些圆圈更好地适应于内部(除了那个飞出去的第一个,但不要介意他)。

alt text


1
这是一个很棒的问题。你可能会在http://math.stackexchange.com/上有些运气。 - mtrw
2
你现在如何在纸上完成它? - mtrw
1
@Rook:我怀疑唯一做到它的方式就是基本上模仿你手动使用的方法。好处在于大多数步骤都相当简单。虽然迭代很乏味,但这并不影响计算机... - Jerry Coffin
你应该将你的论文方法描述添加到主问题中。这绝对是可以转化为程序的东西! - mtrw
@Richard Cook - 是的,插值常常是样条函数,但也会使用其他类型。我不确定你所说的“样条算法”是否就是指这个。 - Rook
显示剩余6条评论
4个回答

4
据我理解你的图表,Camber线是一条切线将上下两条边缘的两条切线之间的角度平分的那条线。
换句话说,Camber线总是位于两条边缘之间的最短距离线上的中点。
因此,给定y坐标和,你为什么不:
<pseudocode>
for each x:
  find x2 where top(x)-bot(x2) is minimized
  camber( mean(x,x2) ) = mean( top(x),bot(x2) )
</pseudocode>

然后进行插值等操作?

alt text

编辑

抱歉!重新考虑后,我认为应该是这样

  find x2 where ( (top(x)-bot(x2))^2 + (x-x2)^2 ) is minimised

显然,你应该将那条垂线的长度最小化。
这样说对吗?

红线将切线之间的角度二等分。红线是凸度的切线,并且由于它与上切线和下切线的夹角相同,沿着距离上下最小的线确定。关键在于,标记为红色的两个角度是相同的。 - Sanjay Manohar
红线和横向曲率的切线之间怎么可能有区别呢?难道红线不就是切线吗? - Rook
是的,抱歉,你说得对,红线是切线。 - Sanjay Manohar
哈哈哈哈哈 :))) - 哦,我觉得这一分钟读到这个笑话是本周最好笑的事情了 :))) - Rook
1
我想画同样的图片。您可以选择下表面上的一个点,然后沿着上表面移动,直到找到一条垂线平分顶部和底部切线角度的线段(如此处所示)。这条线段将在凸度线上具有中点。 - phkahler
显示剩余3条评论

3
我是新来的Stack Overflow用户,但这是我经常处理的问题,我想发表一种替代方法来解决这个问题。这种方法使用了泰森多边形图的概念:http://en.wikipedia.org/wiki/Voronoi_diagram。本质上,创建了一个地图,将空间分割成包含一个输入点(您的翼型的x、y坐标)的区域。重要的是,该区域内的任何点都是该区域内最接近输入点的点。由此空间分割创建的节点与至少三个输入点等距。

有趣的部分在这里:从中心点开始,三个等距的点可以用来创建一个圆。正如您所提到的那样,内接圆的中心点用于绘制平均弯度线,因为内接圆测量厚度。

我们现在很接近了。在这种应用程序中,泰森多边形图的性质意味着我们的翼型区域内任何泰森多边形图节点都是其中一个“厚度圆”的中心点。(根据您的数据,这会在LE和TE非常接近时遇到一些问题。我通常在这里应用一些过滤器)。

基本结构:

Create Voronoi Diagram
Extract Voronoi Nodes
Determine Nodes Which Lie Within Airfoil
Construct Mean Camber Line From Interior Nodes

我的大部分工作都是在Matlab中完成的,它内置有voronoi和inpolygon函数。因此,在开发这些函数方面我不能提供太多帮助,但是它们应该在其他地方有很好的文档说明。
前缘/后缘问题
正如你已经经历或了解的那样,在靠近前缘/后缘时很难精确测量厚度。当厚度圆小于边缘半径时,这种方法将在节点处构建一个分叉。检查此分叉的数据将找到对凸线虚假的点。要构建凸线并一直延伸到翼型边缘,您可以外推凸线(2阶或3阶应该足够),并找到交点。

我很兴奋看到这个新方法,但是当我应用了这里的计算,并且看到非常曲折的MCL时,有点失望。然而,当我增加了我的剖面上的点密度后,结果明显更好了。只是想传达这一点。顺便说一句,我正在处理压缩机叶片和导叶气动叶片,在锻造/修剪后尝试安装LE曲线,你提到的那些 '边缘问题' 差点让我发疯。感谢您恢复我的理智! - subnivean
很高兴你尝试了一下并且它运行得相当不错。点密度是这个问题的一个重要限制。如果你想象一下将圆形拟合到顶部或底部的点上,点之间的距离将在轮廓外创建一个弧线。你可以通过以下公式计算出近似误差:(厚度)/2*(1-sqrt(1-(点间距/厚度)^2)))。我的主要应用是用于提取CMM数据的参数,用于涡轮叶片截面检测。幸运的是,我们使用的设备允许非常高的点密度,并且这种方法对我们非常有效。 - seahuston
我也是出于完全相同的目的在使用它,有时还用于低压涡轮段零件。我的点密度也可以非常高 - 我通常通过CMM点创建样条曲线,然后可以根据需要重新采样它们。说到样条曲线,我认为作为最终的“精加工”步骤,我会“走”MCL样条曲线:找到一个法线,找到与AF样条曲线(ccv和cvx)的(2)交点,并沿着法线调整MCL点以使距离相等。我想应该只需要一次就可以了。谢谢提供链接。 - subnivean
不,我看不到你。我在想你是否在我的公司电话簿里,但还没有找到。我敢打赌,如果你不在Hooksett的大型航空制造商工作,那么你肯定知道他们! - subnivean
显示剩余3条评论

2

我认为绘制翼型凸度线的最佳方法是在CATIA中加载轮廓。然后,在CATIA中,我们可以绘制与轮廓两侧(吸力面和压力面)相切的圆。接着,我们可以连接这些圆的中心,从而精确地找到凸度线。


1

平均弯度线是指与上线和下线等距离的点集吗?如果这是定义,那么它与Sanjay的定义不同,或者至少对我来说不明显相同。

计算最直接的方法:垂直于上线投射许多光线,以及垂直于下线投射许多光线,并查看从上方的光线与从下方的光线相交的位置。最近等距离的交点近似于平均弯度线(如此处所定义);用距离差影响权重进行插值。

但我敢打赌,你从评论中复制的迭代方法更容易编码,而且我猜会收敛到相同的曲线。


嗨。我不确定那是否有效,我需要在一个例子上检查一下。然而,我已经阐明了两者之间的区别(平均线和弧线),以消除混淆。希望这有助于理解。 - Rook
@Rook,所以,如果你看一下你的新黑色图表,你会发现圆的切线(和实际翼)被圆心平分,正如我所想。这难道不意味着,使用相似三角形,你实际上不需要下垂线,只需最小化边缘之间的距离吗? - Sanjay Manohar
@Sanjay - 坦白地说,我现在也不确定了。我得先查一下 - 但是,这不是你的第二种方法吗(你在答案中建议的那个)? - Rook

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接