模拟Arcs / Arch,Matlab(概念)

时间:2012-12-17 13:21:48

标签: matlab geometry

请参阅附件图片enter image description here

在图像中,可以看到两条弧(蓝色和绿色)和连接它们的红线。这给了我们表面(我认为它的圆拱,但如果它是错的,请纠正我。)

我的问题是如何模拟这种结构。

1 - 如何使用此结构的函数f(x,y,z)

2 - 如何获得线(拱面)交叉点

3分?

简而言之,我希望从给定的立场/视点获得此结构上的点(x,y,z)。例如,P = [19,-62,-1.2]

enter image description here

Matlab代码会更有帮助。

更多信息:

第1条曲线上的点

p2 = [17.9463,-59.7586,-1.0200]; % start [x,y,z]
p0 = [19.1163,-58.5886,-1.0200]; % center
p1 = [20.2863,-59.7586,-1.0200]; % End

第二条曲线上的点

p4 = [17.9463,-59.7586,-1.78]; 
p0_ = [19.1163,-58.5886,-1.78]; 
p3 = [20.2863,-59.7586,-1.78];

半径: R = 1.17;

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

从曲线图中获取精确函数是一项有点不精确的任务。但是,如果你做出假设和近似,你仍然可以做出很好的近似。

我们假设这是一个半圆柱形状。圆形横截面位于x-z平面,意味着3-D曲线为:

  

F(x,y,z)=( x - x 0 2 +(< i> z - z 0 2 = r 2

其中 x 0 z 0 是中心坐标和 r 是半径。

我假设图中的左轴是y轴,z轴在右边。据我所知,它们的近似值是:

  

x 0 ≈19.1
   z 0 ≈-59.6
   r ≈1.2    y 似乎在-1和-1.7之间变化

您可以使用meshgridsurf轻松制作三维图:

r = 1.2;
x0 = 19.1;
z0 = -59.6;
[X, Y] = meshgrid(17.9:0.05:20.3, -1.7:0.05:-1);
Z = z0 + abs(sqrt(r ^ 2 - (X - x0) .^ 2));
surf(X, Y, Z)

注意两件事:

  1. 我在x轴和y轴上都将分辨率设置为0.05。
  2. 我已对abs的结果应用了sqrt,以消除任何不必要的复杂结果。
  3. 结果应该是这样的:

    enter image description here