2015-12-02 33 views
-1

我的问题是我如何以及用什么数学来操纵椭圆方程来形成一个中点算法并尝试做出一个椭圆。我得到的代码,但不明白的数学,形成了在屏幕上绘制椭圆的基础。我想知道一些有经验的人可以告诉我数学步骤,比如从这两行减去两边的东西。我不想要求解y的多项式方法,并绘制前半部分,然后再绘制下半部分。我明白那种寻找操纵方程所涉及的数学的很多方法。更多的是寻找数学步骤来操纵方程式,然后我可以使用它来形成算法。我该如何去操纵椭圆中点算法的方程

+0

我投票结束这个问题作为题外话,因为,作为OP状态*我得到的代码,但不明白数学*这是一个数学问题,而不是编程问题。 –

回答

0

我看到椭圆中点这样的:

ellipse midpoint

dx,dy是绝对的变化而非相对!!!

所以分别处理红色和蓝色曲线。红色部分有|slope|<=1这意味着对于每个轴x单次递增/递减变化高达一个Y轴递增/递减变化。

所以对于红色曲线:

我会使用隐式有那么点内椭圆是如果(x/a)^2 + (y/b)^2<=1。如果端口这整数由(a*a*b*b)你会得到我用低于这个术语乘...

  1. 设定起点(0,b)
  2. 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椭圆算法

+0

我仍然不理解的步骤来操作方程 –

+0

@deathreverse仅存在一个步骤...那是'((X/A)^ 2 +(Y/B)^ 2 <= 1)*(A * a * b * b)'所以你得到了'(b * b * x * x + a * a * y * y <= a * a * b * b)'这可以用整数计算......如果它是真的然后点'(X,Y)'里面椭圆否则之外这是所有 – Spektre

+0

你能不能解释一下椭圆生成算法 –