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