2015-12-31 112 views
1

我正在研究一個基於PHP GD的web應用程序,我需要一些多邊形繪圖的幫助。在同一位置繪製幾個八角形的PHP函數

我有一個函數可以繪製一個n邊多邊形。在這種情況下,我只是對繪製八角形感興趣。

簡化的功能如下:

function drawoctagon($ourimage,$xpoint,$ypoint,$radius,$color){ 

    $sides= 8; 
    $points = array(); 
    for ($i = 1; $i <= $sides; $i++) { 
     $points[] = round($radius * cos($i*2 * pi()/$sides) + $radius +$xpoint); // x 
     $points[] = round($radius * sin($i*2 * pi()/$sides) + $radius + $ypoint); // y 
    } 

    imagefilledpolygon($ourimage, $points, $sides, $color); 

} 

//////////////////////////

我打電話在這個函數這樣上面:

drawoctagon($png1,$xpoint,$ypoint,$radius,$linecolor44); 

不過,假設我執行上面的3倍此行,用各種不同的半徑,在八角形的arent同心......他們並排等

當創建$ points數組時,我分別添加了+ $ xpoint和$ ypoint,以便將繪製的八邊形從創建它的左上角移開。

我希望我已經正確地解釋了這一點......但基本上,我的問題是: 如何重寫此函數以繪製CONCENTRIC八邊形,以便如果使用相同的xpoint和ypoint調用多次(作爲多邊形的中心),儘管改變了半徑,它會在同一個點上創建八角形。

如果您仍然可以對任何n邊多邊形進行調整,則可以獲得額外的點數。

非常感謝!

回答

0

您的八角形與功能中心是

x=$radius+ $xpoint 
    y=$radius+$ypoint 

你可以嘗試從中心表達

for ($i = 1; $i <= $sides; $i++) { 
    $points[] = round($radius * cos($i*2 * pi()/$sides) + $xpoint); // x 
    $points[] = round($radius * sin($i*2 * pi()/$sides) + $ypoint); // y 
} 

,並輸入每一樣$xpoint$ypoint多邊形您刪除$半徑創建。