简介
三角化
参考链接
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\)表示三角形边的长度。
缺点,在不好的三角形不明感,尤其是在三维空间中
---------------------------我的天空里没有太阳,总是黑夜,但并不暗,因为有东西代替了太阳。虽然没有太阳那么明亮,但对我来说已经足够。凭借着这份光,我便能把黑夜当成白天。我从来就没有太阳,所以不怕失去。
--------《白夜行》