1
私は、次の例については、「ギャップのない」アルファ形状を生成するためにトラブルを抱えています:MATLAB:ギャップのあるアルファシェイプ?
% surface points from: https://stackoverflow.com/questions/10655393
aminor = 1.; % Torus minor radius
Rmajor = 3.; % Torus major radius
sd = 24;
theta = linspace(-pi, pi, sd) ; % Poloidal angle
phi = linspace(0., 2.*pi, 2*sd) ; % Toroidal angle
[t, p] = meshgrid(phi, theta);
x = (Rmajor + aminor.*cos(p)) .* cos(t);
y = (Rmajor + aminor.*cos(p)) .* sin(t);
z = aminor.*sin(p);
私はあなたが見ることができるように、アルファがあるべき
alpha = 1;
shp = alphaShape(x(:),y(:),z(:), alpha);
plot(shp);
とアルファ形状を作成しています所望のサーフェスポイント間のすべての距離をカバーするのに十分な大きさですが、返されるアルファシェイプにはいくつかのギャップが含まれています。
私には何が欠けていますか?
トーラスそれがあるべきよう:私は問題があなたのアルファ半径がに(またはいくつかの許容範囲内)正確に等しいなってしまうということだと思いますalphaShape
私はアルファがすべての隣接点間の距離をカバーするのに十分に大きいと確信しています。ギャップに規則的なパターンがなく、ノード距離との関係を示すことになる。 – thengineer
ギャップに一般的なパターンがあります:極値(より外側の頂点、上下の頂点、チューブが結合する頂点)で頻繁に発生します。今度は['' Alpha''](https://www.mathworks.com/help/matlab/ref/alphashape.html#inputarg_a)プロパティの別の抜粋に注意してください: "アルファ半径はアルファの半径ですディスクや球が点を掃引してアルファの形を作ります」この場合、アルファは、ポイントを1つの連続ストリップに結合するためにトロイダルのスライス全体を囲む必要がある球の半径です。 – gnovice
...ええと、私はこのアルファ値の適切な定義を知らなかった。今やギャップは完全に意味をなさない(「1.0」でトーラスの小さな半径が与えられると)。 – thengineer