2015-12-02 70 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

你能不能解釋一下橢圓生成算法 –