今天在看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...