我的问题是我如何以及使用什么数学来操纵椭圆方程以形成中点算法并尝试制作椭圆。我得到了代码,但不理解构成在屏幕上绘制椭圆的基础的数学。我想知道有经验的人能告诉我数学步骤,比如从两边减去一些东西。我不想要求解 y 并绘制前半部分的多项式方法,然后再通过另一遍来绘制后半部分。我了解该方法的大部分内容是在寻找操纵方程式所涉及的数学。更多地沿着寻找操纵方程式的数学步骤,然后我可以使用这些步骤来形成算法。
问问题
439 次
1 回答
0
我看到这样的椭圆中点:
是绝对变化而dx,dy
不是相对变化!!!
所以分别处理红色和蓝色曲线。红色部分|slope|<=1
表示每个x
轴的单个增量/减量变化最多为一个 y 轴增量/减量变化。
所以对于红色曲线:
我会使用隐式方程,所以椭圆内的点是 if (x/a)^2 + (y/b)^2<=1
。如果你通过乘以将它移植到整数,(a*a*b*b)
你会得到我在下面使用的术语......
- 将起点设置为
(0,b)
在每次通过时执行一个 for 循环
- 点 (x,y) 被渲染并且它的所有镜像
x
在每次通过时递增y
仅当(b*b*x*x+a*a*y*y>a*a*b*b)
这意味着您的新(x,y)
点在椭圆之外时才会递减。- 如果
y
更改后仍然(b*b*x*x+a*a*y*y>a*a*b*b)
停止,因为您到达了中点(绿线)。
蓝色曲线
几乎相同,您只是从开始(a,0)
并始终递增y
轴而不是x
...
如果您优化增量更改的条款,而不是每次x,y
更改完全重新计算(乘法),您将获得Bresenham ellipse algorithm。
于 2015-12-02T10:51:06.590 回答