0

我是 MATLAB 新手。我想找到一组平面的方程,这些平面是我使用计算的凸包的一部分convhulln。它是一个凸多面体。我试图搜索很多,但找不到任何东西。任何帮助表示赞赏。

这是我找到凸包的一组点。代码不在 MATLAB 中,但很容易理解。所有点都是 3D 点。

pts = {{-0.00033004023134713956, 0, 0},{-0.00033004023134713956, -0.001, 0},
{0.00033004023134713956, -0.001, 0},{0.00033004023134713956, -0.00033004023134713956, 0},
{0,0,0},{-0.00033004023134713956, 0.001, -0.00033004023134713956},{0.00033004023134713956, 
0.001, 0.00033004023134713956},{0.00033004023134713956, 0, 0.00033004023134713956},
{-0.00033004023134713956, 0.00033004023134713956, -0.00033004023134713956},{0,0,0},
{-0.00033004023134713956, 0, 0},{-0.00033004023134713956, 0.00033004023134713956, 
-0.00033004023134713956},{0,0,0},{0.00033004023134713956, 0, 0.00033004023134713956},
{0.00033004023134713956, -0.00033004023134713956, 0},{0,0,0}};
4

1 回答 1

0

首先,您需要将数据转换为 N×3 数值数组:

pts = ...
[[-0.00033004023134713956, 0, 0]; [-0.00033004023134713956, -0.001, 0]; ...
[0.00033004023134713956, -0.001, 0];...
[0.00033004023134713956, -0.00033004023134713956, 0]; [0,0,0];...
[-0.00033004023134713956, 0.001, -0.00033004023134713956];...
[0.00033004023134713956, 0.001, 0.00033004023134713956];...
[0.00033004023134713956, 0, 0.00033004023134713956];...
[-0.00033004023134713956, 0.00033004023134713956, -0.00033004023134713956];...
[0,0,0]; [-0.00033004023134713956, 0, 0];...
[-0.00033004023134713956, 0.00033004023134713956, -0.00033004023134713956];...
[0,0,0];[0.00033004023134713956, 0, 0.00033004023134713956];...
[0.00033004023134713956, -0.00033004023134713956, 0];[0,0,0]];

(数值数组用括号定义,用分号分隔行)

然后就可以调用convhulln函数了

K = convhulln(pts);

结果是一个包含多面体面索引的 NF×3 数组。要获得包含第一个面的平面的原点和方向向量,您可以按原样处理:

indF = 1;
pnt1 = pts(K(indF, 1), :);
pnt2 = pts(K(indF, 2), :);
pnt3 = pts(K(indF, 3), :);
origin = pnt1;
vect1 = pnt2 - pnt1;
vect2 = pnt3 - pnt1;
于 2020-08-03T15:46:07.830 回答