svg弧的格式(xaml中的弧具有相同的args):
(rx ry x-axis-rotation large-arc-flag sweep-flag x y)
描述:
从当前点到(x,y)绘制一个椭圆弧 . 椭圆的大小和方向由两个半径(rx,ry)和x轴旋转定义,其指示椭圆作为整体如何相对于当前坐标系旋转 . 自动计算椭圆的中心(cx,cy)以满足其他参数施加的约束 . large-arc-flag和sweep-flag有助于自动计算并帮助确定如何绘制弧 .
我需要计算它的所有点(当然有一些步骤) . 我怎么能这样做?我想在C#或Java上编写代码 .
1 回答
Bresenham算法是为逐点绘制而发明的 . 找到旋转椭圆的一些代码:http://research.microsoft.com/en-us/um/people/awf/graphics/bres-ellipse.html
补充:如何将零中心椭圆变换为所需的隐式形式(A,B,C,D,E,F)
A:=(Cos(fi)/ rx)^ 2(Sin(fi)/ ry)^ 2;
C:=(Sin(fi)/ rx)^ 2(Cos(fi)/ ry)^ 2;
B:= Sin(2 * fi)(1 /(ryry)-1 /(rx * rx));
d = E = 0;
F:= - 1
检查rx = 100,ry = 60,fi = Pi / 6:
还有一步:Delphi函数获取 arbitrary 椭圆的隐式形式 . 我希望代码是可以理解的(Sqr(x)= x * x)