zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    ARP攻击及原理
    用C#语言构造蜘蛛程序
    在C#中调用VC编写的dll库
    关于ToolBar和MDI背景的问题
    修改IP和Mac地址的另类方法
    C#调用C++编写的COM DLL
    ARP欺骗技术实现原理分析
    获取本机的MAC的方法
    常用的攻击软件源代码(c)
    c#产生验证图片
  • 原文地址:https://www.cnblogs.com/eat-too-much/p/14099282.html
Copyright © 2011-2022 走看看