Delaunay Triangle 学习1

简介

三角化

参考链接

https://www.cnblogs.com/zhiyishou/p/4430017.html

三角化

求一个二维的三角形的面积也可以通过这个方法

首先要保证逆时针方向,三角形点的分布。

[S_{K}=frac{1}{2}left|egin{array}{cc} x_{2}-x_{1} & x_{3}-x_{1} \ y_{2}-y_{1} & y_{3}-y_{1} end{array} ight| ]

举个例子

    BMesh::Point2D a(0,0);
    BMesh::Point2D b(1,0);
    BMesh::Point2D c(0,1);
    Eigen::Matrix2d cc;
    cc << (b.x - a.x), (c.x - a.x),
         (b.y - a.y), (c.y - a.y);
    std::cout << "[DEBUG] area of a triangle " << 0.5 * cc.determinant() << std::endl;

理论解释

向量的叉乘就是平行四边形的面积然后你懂得。

求解外接圆的坐标

求解一个方程

[left(egin{array}{ll} x_{3}-x_{1} & y_{3}-y_{1} \ x_{3}-x_{2} & y_{3}-y_{2} end{array} ight)left(egin{array}{l} x_{C} \ y_{C} end{array} ight)=frac{1}{2}left(egin{array}{l} left(x_{3}^{2}+y_{3}^{2} ight)-left(x_{1}^{2}+y_{1}^{2} ight) \ left(x_{3}^{2}+y_{3}^{2} ight)-left(x_{2}^{2}+y_{2}^{2} ight) end{array} ight) ]

直接求解圆心使用公式

[r_{K}=frac{L_{1} L_{2} L_{3}}{4 S_{K}} ]

(L_i) 是边界的长度。
(S_K) 是三角形的面积。

内切圆的半径是

[ ho_{K}=frac{S_{K}}{p_{K}} ]

(p_{K}) 是三角形的半周长
( ho_{K}) 是三角形内切圆的半径

三角形网格的质量

[Q_{K}=alpha frac{h_{max }}{ ho_{K}}=alpha frac{h_{max } p_{K}}{S_{K}} ]

其中
(alpha = frac {sqrt{3}}{6})

,
(h_{max})是三角形的最长的边。
(P_{K})是其内切圆的半径。

其上值从1开始到无穷。等边三角形逻辑上是无穷。为了返回从0-1开始的测量质量。所以

[Q_K=etafrac{h^2_s}{S_K} ]

其中(eta)是一个标准化的因子表示一个单位质量对于一个等边三角形(eta = frac{sqrt{3}}{12})
其中,(h_s = sqrt{sum^3_{i=1}L_i^2})
(L_i)表示三角形边的长度。

缺点,在不好的三角形不明感,尤其是在三维空间中

Hope is a good thing,maybe the best of things,and no good thing ever dies.----------- Andy Dufresne
原文地址:https://www.cnblogs.com/eat-too-much/p/14099282.html