計算幾何 正多邊形的滾動與旋輪線

2021-07-11 22:21:48 字數 1877 閱讀 3528

今天在看matrix 大牛的部落格時, 發現乙個有趣的問題, 學習學習下  >.<

正多變形的滾動與旋輪線下方的面積

問題描述:

乙個圓盤在地面上滾動一周,那麼圓周上一點所形成的軌跡就叫做旋輪線(或者擺線).

旋輪線下方的面積是多少? 推廣至正多邊形, 旋輪線下方的面積又是多少?

問題分析:

1.在問題是圓的情況下, 顯然我們可以用引數方程的方法求得座標: (x-r*sin(x/r), r-r*cos(x/r));

定積分方法:

結果: 3πr^2

(我自己的想法是外接圓,當n無限大時, 正多邊形蛻變成圓的問題.)

以下是matrix證明方法:

2. 假設正多邊形的外接圓半徑為 r ,從外接圓上任意一點出發,依次與該多邊形的 n 個頂點相連,則這 n 條連線的長度的平方和等於 2n · r2 。我們來證明這個結論。

把正多邊形的中心放在平面直角座標系的原點處,把外接圓上的那個點記作 (u, v) ,

再假設多邊形 n 個頂點的位置分別是 (a1, b1), (a2, b2), …, (an, bn) ,則這 n 條連線的平方和為

σ((u - ai)2 + (v - bi)2)

= σ(u - ai)2 + σ(v - bi)2

= n · u2 - 2u · σai + σai

2 + n · v2 - 2v · σbi + σbi

2 = n · (u2 + v2) - 2u · σai - 2v · σbi + σ(ai

2 + bi2)

顯然, u2 + v2 以及所有的 ai

2 + bi

2 都等於 r2 ,因此上面的式子也就等於了 2n · r2 - 2u · σai - 2v · σbi .

接下來,我們只需要說明 σai 和 σbi 都為 0 即可。其實這是顯然的:

因為正多邊形 n 個頂點的重心在中心 (0, 0) 處,說明這 n 個頂點的所有橫座標之和就是 0 ,

所有縱座標之和也為 0 。

特別地,把外接圓上的那個點取成正多邊形的頂點,於是我們得到,

從正 n 邊形的某個頂點出發,連線其他 n - 1 個頂點,如果把這 n - 1 條連線分別

記作 d1, d2, …, dn-1 ,則有:

d12 + d2

2 + … + dn-1

2 = 2n · r2

3.現在,假設正多邊形的外接圓半徑為 r ,把這個正多邊形的面積記作 a 。如圖,折線段下方的面積可以被分成 n - 2 個藍色三角形和 n - 1 個紅色三角形(圖中所示的是 n = 9 的情況)。這 n - 2 個藍色三角形恰好能拼成乙個原多邊形,它們的面積和為 a 。下面,我們來看一下剩下的 n - 1 個紅色三角形都是怎麼形成的。正多邊形一共轉動了 n - 1 次,每一次都是繞著乙個新的頂點在轉動,這 n - 1 個紅色三角形就是在這 n - 1 次轉動中產生的。容易看出,每個紅色三角形都是等腰三角形,它們的腰長分別為 d1, d2, …, dn-1。同時,由於 n 次轉動後正多邊形將回到原來的方向,因此每一次正多邊形都轉過了 (360/n)° 。因此,每個紅色等腰三角形的頂角也都是 (360/n)° 。於是你會發現,第 i 個紅色三角形的形狀與正多邊形的其中 1/n 塊完全一樣,只不過有乙個 di : r 的相似比!注意到面積比是相似比的平方,於是所有紅色三角形的面積之和為:

(a/n) · d1

2 / r2 + (a/n) · d2

2 / r2 + … + (a/n) · dn-1

2 / r2

= (a/n) · (d1

2 + d2

2 + … + dn-1

2) / r2

= (a/n) · 2n · r2 / r2

= 2a

因此,折線下方的面積是 3a ,即原正多邊形面積的三倍.

計算幾何 多邊形的重心

1.1 累加和求重心 設平面上有n 個離散資料點 xi yi i 1,2,n 其 多邊形重心g x1,y1 為 這是求多邊形最簡單直觀的方法。可以直接利用離散數 據點的x,y座標就能求圖形重心。但是缺陷在於沒有對離散 資料點所圍圖形做任何處理和分析,精度不夠。1.2 演算法一 在講該演算法時,先要明...

計算幾何 多邊形的交與並

多邊形的交,多邊形的邊一定是要按逆時針方向給出 還要判斷是凸包還是凹包,呼叫相應的函式 面積並,只要和面積減去交即可 include using namespace std const int maxn 300 const double eps 1e 8 int dcmp double x stru...

《模板》《計算幾何》點與多邊形的位置關係

引數 點p 多邊形頂點 順時針或逆時針 pt 下標從0開始 多邊形頂點數n.返回 1 外面 1 裡面 0 邊上或頂點上 const int inf 0x7fffffff const double std 1e 10 struct point struct segment int dblcmp dou...