2014-03-30 43 views
-2

這個C++代碼是什麼意思?這是什麼C++代碼來創建traingle的意思是?

我想弄清楚這段代碼是什麼意思,但是作爲編程的新手,沒有太多的運氣。這是創建等邊三角形的代碼。

static const float COS_60 = 0.5f; 
static const float COS_30 = 0.5f * sqrt(3.f); 

const float side = radius * 2.f * COS_30; 
const float bottomHeight = point.getY() - COS_60 * radius; 


this->vertices.push_back(Vertex(point.getX(), point.getY() + radius)); 
this->vertices.push_back(Vertex(point.getX() + COS_60 * side, bottomHeight)); 
this->vertices.push_back(Vertex(point.getX() - COS_60 * side, bottomHeight)); 
+1

莫非你澄清哪一部分是你不明白的?數學,將項目添加到矢量,或? –

+0

數學主要是@MatsPetersson – user3476655

回答

2

等邊三角形有三條邊長相等。角部(內側)的角度是60度,因此需要COS_60。恰恰是COS 60 = 0.5,所以程序員沒有編寫代碼來計算它,只是使用了這個「已知值」。

邊的長度爲radius * 2.f * COS_30(即從中心到最遠角的時間乘以30度的餘弦)。 COS_30正好是sqrt(3)/20.5f * sqrt(3.f)。再次,你可以使用計算器來計算,而不是寫成0.5 * sqrt(3)。或者,如果你想使用C++函數,你可以使用sin(30.0f * 2.f * pi/180.0f) [這是因爲計算機上的數學幾乎總是以弧度而不是度數來完成]。

從底部到中心的距離爲COS_60 * radius(半徑的一半)。

如果我們手動應用此數學,給定一個X,400,400 y中央和100爲半徑,我們得到:

side = 100 * 2 * COS_30 => 200*0.866 = 173; 
bottomheight = 400 - COS_60 * radius = 400 - 50 = 350 

然後將下面的座標:

400, (400 + radius) => 400, 500 
400 + COS_60 * side, 350 => 400 + 173 * 0.5, 350 => 486, 350 
400 - COS_60 * side, 350 => 400 - 173 * 0.5, 350 => 314, 350 
+0

在這種情況下,它意味着該值是一個「float」,編譯器將默認將浮點常量視爲「double」。特別是在做3D圖形和類似的時候,程序員傾向於使用'float'而不是'double',因爲它使用更少的空間。 –

+0

感謝您的幫助 – user3476655