我想知道如果這裏有人能幫助我與一些僞代碼,或者至少指向我如何畫一個圓段無抗鋸齒正確的方向。繪製一個圓段
Q
繪製一個圓段
-1
A
回答
1
用於在圓點的公式是:
x = xcenter + radius * sin(theta)
y = ycenter + radius * cos(theta)
其中xcenter
和ycenter
是圓的中心,radius
是半徑,theta
是角度。
您只需遍歷從您的出發角度theta
在足夠小的步驟,您的終止角度,並繪製提取x
和y
價值觀,牢記最三角函數把他們的論據,弧度(0通過2 * PI),而不是度(0到360) - 調整開始和結束角度和您theta
步驟考慮到這一點。
僞代碼將是類似以下內容:
def plotCirle (xc, yc, rad, start, end):
theta = start
while theta <= end:
x = xc + rad * sin (theta)
y = yc + rad * cos (theta)
plot (x, y)
theta = theta + 0.01
雖然你可能要規範化的角度爲0和2 * PI之間,如果然後交換的開始和結束的角度前者大於後者。
如果你想更有效的代碼,你可以看看到midpoint circle algorithm。數學更重要,並且由於只需要一個段(這意味着您需要知道角度,通常對於該算法而言通常不需要使用整圈)的要求會稍微複雜一些,但如果上面的簡單算法速度不夠快。
0
僅適用於整圈拉,看到維基百科的文章midpoint circle algorithm。它用代碼呈現了Bresenham的線算法的一種圓形變體。參見codecircle與中點圓算法,Bresenham圓算法和優化的第三種方法進行比較(帶代碼)。
0
Result.X := Round(fCenter.X + cos(Angle/180*pi)* Radius);
Result.Y := Round(fCenter.Y + sin(Angle/180*pi)* Radius);
+0
請解釋如何回答這個問題。 – 2018-02-15 07:30:01
相關問題
- 1. 繪製一個圓-matplotlib
- 2. Python PIL繪製一個圓形的陽光段
- 3. 繪製一個不完美的圓圈
- 4. 繪製一個半圓形按鈕iOS
- 5. 從一個數組中繪製橢圓
- 6. 根據兩點繪製一個圓
- 7. 在THREE.js中繪製一個橢圓
- 8. 在directx中繪製一個圓圈9
- 9. 在android中繪製一個圓for android
- 10. 如何繪製一個擾動的圓?
- 11. 自定義JLabel繪製一個圓圈
- 12. 繪製一個圓角矩形編程
- 13. Swift:圍繞標籤繪製一個圓
- 14. XNA繪製一個實心圓
- 15. 繪製一個簡單的圓圈uiimage
- 16. 繪製的弧是一個圓圈
- 17. 繪製一個填充的半圓
- 18. 繪製圓的一部分
- 19. HTML5畫布 - 繪製線段和圓圈 - 一個圓圈的不同顏色
- 20. 繪製一個圓角矩形一側倒圓
- 21. 繪製20個圓弧創建一個圓圈
- 22. 繪製多個圓圈
- 23. 在C++中繪製一個圓,但是繪製菱形代替
- 24. 繪製橢圓
- 25. 繪製圓周線段上的點
- 26. 在paperjs中的圓段上繪製線
- 27. 如何在iOS中繪製分段圓?
- 28. 繪製實心的圓形段
- 29. cv:圓圈函數用一次調用繪製多個圓圈
- 30. 在R中繪製一個圓的圓弧
謝謝,懂了工作。但是這個算法只有一個整數數學的版本嗎? – Mattivc 2012-01-17 01:58:42
如果需要,可以使用整數,但標準的trig函數將會獲得浮點值。在使用放大的值(0-360變爲0-3600)和值的查找表之前,我已經構建了整數trig函數,但是這些函數在嵌入式空間中的舊時代中,這些函數在時間上非常昂貴。還有更有效的圈子繪製算法(查找bresenham或中點圓圈),但這需要更多的數學,而不是我可以輕鬆適應的答案。 – paxdiablo 2012-01-17 02:06:57
'plot(int(x),int(y))' – 2012-01-17 04:21:43