C++ 网格曲面三角形的纵横比
我需要计算三角形的纵横比。我有3个点,因此我有长度和中点。我试图使用教程(虽然在我看来它不是很多),但它是非常模糊的,并没有提供太多的信息。有人可以详细阐述,特别是矩形创建部分,或者共享一点C++代码来解决这个问题? 对于詹姆斯的解决方案:C++ 网格曲面三角形的纵横比,c++,math,mesh,C++,Math,Mesh,我需要计算三角形的纵横比。我有3个点,因此我有长度和中点。我试图使用教程(虽然在我看来它不是很多),但它是非常模糊的,并没有提供太多的信息。有人可以详细阐述,特别是矩形创建部分,或者共享一点C++代码来解决这个问题? 对于詹姆斯的解决方案: double s = (a + b + c) / 2.0; double AR = (a * b * c) / (8.0 * (s - a) * (s - b) * (s - c)); @詹姆斯: Cubit报告如下: Function Name Ave
double s = (a + b + c) / 2.0;
double AR = (a * b * c) / (8.0 * (s - a) * (s - b) * (s - c));
@詹姆斯:
Cubit报告如下:
Function Name Average Std Dev Minimum Maximum
------------- --------- --------- --------- ---------
Aspect Ratio 1.000e+00 7.371e-04 1.000e+00 1.010e+00
--------------------------------------------------------------
Function Name Average Minimum Maximum
------------- --------- -------- -------
Aspect Ratio 1.00006 1.000000 1.00972
--------------------------------------------
您的公式报告了以下内容:
Function Name Average Std Dev Minimum Maximum
------------- --------- --------- --------- ---------
Aspect Ratio 1.000e+00 7.371e-04 1.000e+00 1.010e+00
--------------------------------------------------------------
Function Name Average Minimum Maximum
------------- --------- -------- -------
Aspect Ratio 1.00006 1.000000 1.00972
--------------------------------------------
以下是我知道的三角形纵横比的定义: 三角形的纵横比是最长边与最短边的比值(因此等边三角形的纵横比为1) 三角形的纵横比是外圆半径与其半径的两倍之比,因此
AR=abc/(8(s-a)(s-b)(s-c))
其中a,b,c
是三角形边的长度s=(a+b+c)/2
。因此,如果a=b=c
,则纵横比为1
这些比你给出的要容易得多。外接圆半径与内半径的两倍之比是正确的定义。有一个稍微简单的公式:
AR=abc/((b+c-a)(c+a-b)(a+b-c))定义“三角形的纵横比”。这是最窄的尺寸/直径到最长的吗?啊哈,最长边的长度,到高度(如果我们把三角形放在那一边,可以这么说)。我要做的是把一条较短的边(作为向量)投影到较长的边上。投影向量和原始向量之间的增量是一个向量,其长度是三角形的高度。@Kaz这与网格曲面有关,只是为了澄清。找到最大纵横比的用处是确定网格的质量,以用于计算电磁解算器。比率越接近于1,网格与其所代表的几何体积之间的关系就越好、越精确。谢谢,如果我没记错的话,有人向我简要地提到,我提供的示例不正确,但有人顺便说,这是谷歌返回的唯一有用/有意义的东西。我得到的最小比率为~.02,最大比率为49。我的平均值是1.1,所以平均值大致正确(大多数三角形是等边的)。但最小值不应该接近1,最大值不应该太高吗?如果我只取最短边和最长边的比率,我分别得到~1.0001和~4.5。@Drise你确定你正确地实现了公式吗?纵横比应大于等于1。根据三角形的不同,最大值可能相当高。检查我上面的实现。我已经添加了Cubit的精确报告,一个建模和网格程序,以及您的公式生成的内容。