我的问题是我如何以及用什么数学来操纵椭圆方程来形成一个中点算法并尝试做出一个椭圆。我得到的代码,但不明白的数学,形成了在屏幕上绘制椭圆的基础。我想知道一些有经验的人可以告诉我数学步骤,比如从这两行减去两边的东西。我不想要求解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状态*我得到的代码,但不明白数学*这是一个数学问题,而不是编程问题。 –