我想知道如果這裏有人能幫助我與一些僞代碼,或者至少指向我如何畫一個圓段無抗鋸齒正確的方向。繪製一個圓段
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. Python PIL繪製一個圓形的陽光段
- 2. XNA繪製一個實心圓
- 3. 繪製一個填充的半圓
- 4. 根據兩點繪製一個圓
- 5. 在THREE.js中繪製一個橢圓
- 6. 在directx中繪製一個圓圈9
- 7. 如何繪製一個擾動的圓?
- 8. 繪製圓的一部分
- 9. 繪製20個圓弧創建一個圓圈
- 10. 繪製多個圓圈
- 11. 在paperjs中的圓段上繪製線
- 12. 繪製實心的圓形段
- 13. 在WPF/C中繪製一個半圓/半圓#
- 14. 是否可以使用System.Windows.Shapes.Path繪製一個圓(閉合圓弧)?
- 15. 繪製圓角框
- 16. 繪製圓Opencv4Android 3.1.0
- 17. 繪製圖像或繪製實心圓?
- 18. Android的 - 繪製一個圓每次按下一個按鈕
- 19. 將一個圓圈繪製成一個Jframe
- 20. 繪製一個橢圓恰好一個AWT面板
- 21. 如何繪製橢圓的一部分?
- 22. 畫布圓不一致繪製
- 23. PIXI.js - 如何繪製一半的圓?
- 24. 一個片段正在繪製另一個片段
- 25. 繪製使用Direct2D一個SVG路徑:不能繪製橢圓弧
- 26. 繪製橢圓等待幾秒鐘,並在處理中繪製另一個
- 27. wx python繪製圓弧和圓
- 28. OpenGL繪製橢圓而不是圓形
- 29. Pyqtgraph:如何繪製橢圓或圓形
- 30. 水平繪製多個圓HTML5
謝謝,懂了工作。但是這個算法只有一個整數數學的版本嗎? – 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