我的問題是我如何以及用什麼數學來操縱橢圓方程來形成一箇中點算法並嘗試做出一個橢圓。我得到的代碼,但不明白的數學,形成了在屏幕上繪製橢圓的基礎。我想知道一些有經驗的人可以告訴我數學步驟,比如從這兩行減去兩邊的東西。我不想要求解y的多項式方法,並繪製前半部分,然後再繪製下半部分。我明白那種尋找操縱方程所涉及的數學的很多方法。更多的是尋找數學步驟來操縱方程式,然後我可以使用它來形成算法。我該如何去操縱橢圓中點算法的方程
回答
我看到橢圓中點這樣的:
的dx,dy
是絕對的變化而非相對!!!
所以分別處理紅色和藍色曲線。紅色部分有|slope|<=1
這意味着對於每個軸x
單次遞增/遞減變化高達一個Y軸遞增/遞減變化。
所以對於紅色曲線:
我會使用隱式有那麼點內橢圓是如果(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橢圓算法。
我仍然不理解的步驟來操作方程 –
@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
你能不能解釋一下橢圓生成算法 –
- 1. Java中的中點橢圓算法
- 2. 是否有中點橢圓算法?
- 3. 橢圓中點算法逆時針版
- 4. 如何計算橢圓弧的點
- 5. 計算橢圓上的點
- 6. 改進我的橢圓擬合算法
- 7. 通過三點的橢圓方程?
- 8. 以橢圓軌道計算橢圓軌道上的點
- 9. 橢圓厚度算法
- 10. 橢圓方程的有限差分法
- 11. 將圓轉換爲橢圓,以便從橢圓邊框計算點的距離
- 12. 如何計算r中橢圓交點的體積
- 13. 橢圓曲線中的點乘法
- 14. SAGE中的橢圓點
- 15. 如何減去單位正方形外部的橢圓面積?
- 16. 如何計算橢圓的周長
- 17. 如何計算橢圓的直徑?
- 18. 求解橢圓方程
- 19. 橢圓如何與橢圓相交?
- 20. Matlab:橢圓的voronoi圖的算法
- 21. 我該如何操縱JList和JList?
- 22. 以橢圓形出現的圓 - 在Python中設置縱橫比
- 23. 如何在java swing中的兩點之間繪製橢圓或橢圓體
- 24. 橢圓幾何約束點
- 25. 橢圓曲線點
- 26. 使用Bresenham的圓形算法在Java中生成橢圓
- 27. 如何在我的camshift跟蹤算法中找到橢圓的質心?
- 28. 從點到橢圓弧的最短距離的算法
- 29. 圓點算法?
- 30. 點上傾斜的橢圓
我投票結束這個問題作爲題外話,因爲,作爲OP狀態*我得到的代碼,但不明白數學*這是一個數學問題,而不是編程問題。 –