如何逐个像素地绘制具有任意方向的椭圆?

amc*_*amc 9 algorithm graphics ellipse shapes

我必须逐个像素地绘制任意大小和方向的椭圆.绘制椭圆的主轴和副轴与x轴和y轴对齐似乎很容易,但是将椭圆旋转任意角度似乎比较棘手.最初我虽然可能会绘制未旋转的椭圆并将旋转矩阵应用于每个点,但似乎可能导致错误进行舍入,我需要相当高的精度.

我怀疑这种方法是否正确?我怎样才能更精确地完成这项任务?

我正在使用C++进行编程(尽管这不是真的重要,因为这是一个更加面向算法的问题).

编辑:大卫指出,我想我可能真的想知道如何进行像素插值.

Dav*_*nco 9

使用:

x = X cos(a) - Y sin(a)
y = Y cos(a) + X sin(a)
Run Code Online (Sandbox Code Playgroud)

a逆时针旋转的角度在哪里,(x, y)是新的坐标,(X, Y)是旧的.

您应该使用浮动来保持精度.只需经历每一点,应用转换,然后voil.

编辑:经过一些搜索后,这里有一些来自Microsoft的代码:http://research.microsoft.com/en-us/um/people/awf/graphics/bres-ellipse.html绘制了更快的圆锥曲线.