简介

三角化

参考链接

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

三角化

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

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

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

举个例子

    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(\begin{array}{ll} x_{3}-x_{1} & y_{3}-y_{1} \\ x_{3}-x_{2} & y_{3}-y_{2} \end{array}\right)\left(\begin{array}{l} x_{C} \\ y_{C} \end{array}\right)=\frac{1}{2}\left(\begin{array}{l} \left(x_{3}^{2}+y_{3}^{2}\right)-\left(x_{1}^{2}+y_{1}^{2}\right) \\ \left(x_{3}^{2}+y_{3}^{2}\right)-\left(x_{2}^{2}+y_{2}^{2}\right) \end{array}\right) \]

直接求解圆心使用公式

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

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

内切圆的半径是

\[\rho_{K}=\frac{S_{K}}{p_{K}} \]

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

三角形网格的质量

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

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

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

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

\[Q_K=\beta\frac{h^2_s}{S_K} \]

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

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

posted on 2020-12-07 19:58  HDU李少帅  阅读(104)  评论(0编辑  收藏  举报