确定一个翼型的弧度和厚度-给定xy坐标

78次浏览(过去30天)
亲爱的所有,
我有翼型坐标,在一个封闭多边形的形式(xy点给出如下)。
我需要一个函数来确定多边形中每个点(顶点)的最大可能内切圆。
Ps:顶点处的内切圆定义为在多边形内部绘制且与顶点相切的最大可能圆。
下面给出的翼型包含33个点,我需要33个内切圆…
否则需要确定的弧度和厚度分布的翼型参考下面的评论。
任何帮助都非常感激。
提前谢谢你,
维贾伊·阿南德
%翼型坐标
Xy = [1.00000 0.94908 0.89816 0.79638 0.69491 0.59377 0.49322 0.39328 0.29389 0.14562 0.09650 0.07203 0.04764 0.02338 0.01143 0.00000 0.01330 0.02596 0.05095 0.07573 0.10048 0.14992 0.19932 0.29821 0.39752 0.49722 0.59742 0.69804 0.79883 0.89957 0.94979 1.00000;
0.00000 0.02835 0.05669 0.11138 0.15658 0.19180 0.20853 0.20678 0.18805 0.15733 0.13473 0.10764 0.09134 0.07255 0.04976 0.03287 0.00000 -0.02457 -0.02966 -0.02934 -0.02254 -0.01473 0.00237 0.02098 0.05519 0.07642 0.08566 0.07942 0.06019 0.03596 0.01324 0.00637 0.00000];
情节(xy (1:), xy(2:),“啊——”,“线宽”,2);网格;轴相等;
5个评论

登录评论。

答案(2)

为副总经理
为副总经理 2021年9月30日
这并不是一种很好的方式,但我更习惯于滥用图像处理工具,而不是多义词()等。提到Voronoi图表,我认为距离地图将是一个不错的开始。
轮廓线= [1.00000 0.94908 0.89816 0.79638 0.69491 0.59377 0.49322 0.39328 0.29389 0.14562 0.09650 0.07203 0.04764 0.02338 0.01143 0.00000 0.01330 0.02596 0.05095 0.07573 0.10048 0.14992 0.19932 0.29821 0.39752 0.49722 0.59742 0.69804 0.79883 0.89957 0.94979 1.00000;
0.00000 0.02835 0.05669 0.11138 0.15658 0.19180 0.20853 0.20678 0.18805 0.15733 0.13473 0.10764 0.09134 0.07255 0.04976 0.03287 0.00000 -0.02457 -0.02966 -0.02934 -0.02254 -0.01473 0.00237 0.02098 0.05519 0.07642 0.08566 0.07942 0.06019 0.03596 0.01324 0.00637 0.00000];
步长= 0.0001;有效分辨率%
Xrange = [-0.1 1.1];
Yrange = [-0.1 0.25];
%使用虚拟图像显示来生成配置文件的图像
X = xrange(1):步长:xrange(2);
Y = yrange(1):步长:yrange(2);
H = image(xrange,yrange,ones(numel(y),numel(x)));
L = images.roi.Polygon(gca);
L.Position = profileline.';
mask = ~createMask(L);
从距离地图的山脊线找到坎伯线坐标。
由于前缘角度的原因,这只是一个不完整的解决方案
Dmap = bwdist(掩码);
[~,idx] = max(dmap,[],1);
1 = [x;y (idx)];
%使用初始估计值来找到平分剖面的位置
%,这样就可以估计前沿
[~,breakpoint] = max(camberline1(2,:));
断点= round(Breakpoint /2);%避免浅斜坡
[~,idx] = max(dmap(:,1:断点),[],2);
Camberline2 = [x(idx);y);
用于演示的% plot估计
次要情节(2,1,1)
情节(profileline (1:), profileline (2:));持有;网格
情节(camberline1 (1:), camberline1 (2:)“:”);
情节(camberline2 (1:), camberline2 (2:)”乙:“);
xlim xrange ()
ylim (yrange)
%清理并合并估计
camberline1(:,camberline1(2,:)==yrange(1)) = NaN;
camberline2(:,camberline2(1,:)==xrange(1)) = NaN;
camberline2(:,camberline2(1,:)==x(断点))= NaN;
Camberline = [camberline2 camberline1(:,断点+1:结束)];
合并估计百分比
次要情节(2,1,2)
情节(profileline (1:), profileline (2:));持有;网格
情节(camberline (1:), camberline (2:)“b——”);
xlim xrange ()
ylim (yrange)
如前所述,前缘区域有问题。我怀疑这两种估计在这一区域都是正确的,但第二种估计看起来稍微合理一些,我想我至少证明了分段解决方案可能是一种选择。我需要更多的时间来思考一个更有力的方法。
5个评论
Vijay Anand
Vijay Anand 2021年10月7日
编辑:Vijay Anand 2021年10月7日
亲爱的先生。 @DGM 和其他人,
一个小小的突破……
就像我之前想的那样,这些圆不需要被刻字。
弧度线的定义说,厚度应该是正常的弧度线(在一点测量)…弧度线的顶部和底部的厚度是相等的。
请参阅图1、2、3 图1
数字1
虚线为y轴上垂直绘制的厚度线。
倾斜的线是垂直于局部弧度点的厚度线...
圆以厚度/2为半径,圆心为圆心...
图2
图2
图3
图3
从靠近前沿的图(图2)可以明显看出,圆是较大的…
请给你宝贵的反馈这个…
尽管如此,我还是对确定弧度线和厚度分布的算法感到震惊。
ps:这些数字是我从已知的弧度和厚度分布方程(NACA 4312 Aifoil)和坐标点生成的
提前谢谢你,
维贾伊·阿南德

登录评论。


布鲁诺陈德良
布鲁诺陈德良 2021年10月4日
如果你可以容忍一些有限的精度,你可以离散内部作为黑白图像,寻找骨架
对于骨架的每个点(圆心),半径是距离边界的最小值(不是很难计算)。

类别

了解更多图形对象属性帮助中心而且文件交换

s manbetx 845


释放

R2020a

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!