我想知道如果这里有人能帮助我与一些伪代码,或者至少指向我如何画一个圆段无抗锯齿正确的方向。绘制一个圆段
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