Bresenham算法是爲逐點繪圖而發明的。 找到的旋轉橢圓某些代碼: http://research.microsoft.com/en-us/um/people/awf/graphics/bres-ellipse.html
加了: 如何變換零爲中心的橢圓所需隱形式(A,B,C,d,E,F)
甲:=(COS (fi)/ rx)^ 2 +(Sin(fi)/ ry)^ 2; (Sin(fi)/ rx)^ 2 +(Cos(fi)/ ry)^ 2;其中, B:= Sin(2 * fi)(1 /(ry ry)-1 /(rx * rx));其中,
D = E = 0;
F:= - 1
檢查RX = 100,RY = 60,FI =π/ 6:
一個步驟:Delphi函數以獲得隱形式爲任意橢圓。 我希望代碼是可以理解的(SQR(x)= X * X)
//calc implicit ellipse equation
//semiaxes rx, ry; rotated at fi radians; centered at (cx,cy)
//x = rx * Cos(t) * Cos(fi) - ry * Sin(t) * Sin(fi) + cx
//y = rx * Cos(t) * Sin(fi) + ry * Sin(t) * Cos(fi) + cy
//To obtain implicit equation, exclude t
//note: implicit form Ax^2+Bxy+Cy^2+Dx+Ey+F=0 (not 2B,2D,2E)
procedure CalcImplicitEllipseEquation(rx, ry, fi, cx, cy: Double;
var A, B, C, D, E, F: Double);
begin
B := Sin(2 * Fi) * (ry * ry - rx * rx);
A := Sqr(ry * Cos(fi)) + Sqr(rx * Sin(fi));
C := Sqr(rx * Cos(fi)) + Sqr(ry * Sin(fi));
D := -B * cy - 2 * A * cx;
E := -2 * C * cy - B * cx;
F := C * cy * cy + A * cx * cx + B * cx * cy - rx * rx * ry * ry;
end;
來源
2011-11-20 15:48:57
MBo
但如何變換(RX RY x軸旋轉的大圓弧標誌掃描標誌X Y)至(A B C dëF)? – AndreyAkinshin