【问题标题】:Finding equations of planes of Convex Hull in MATLAB在 MATLAB 中查找凸壳平面的方程
【发布时间】:2020-11-18 16:03:49
【问题描述】:

我是 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}};

【问题讨论】:

    标签: matlab computational-geometry convex-hull convex-polygon


    【解决方案1】:

    首先您需要将数据转换为 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-28
      • 2018-12-30
      • 2013-06-05
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      • 2013-02-12
      • 1970-01-01
      相关资源
      最近更新 更多