问题描述
|
我正在尝试使用XAML的ArcSegment元素的属性来计算弧的边界矩形。
ArcSegment元素具有以下属性:
1)起点:弧的起点
2)点:圆弧的终点
3)大小:椭圆的X和Y半径
4)RotationAngle:定义圆弧相对于X轴的椭圆的旋转角
5)IsLargeArc:标记,指示要绘制椭圆的哪一部分(即小圆弧或大圆弧)
5)SweepDirection:指定顺时针或逆时针。
提到如果无法使用Size属性中指定的半径和RotationAngle属性中指定的旋转角度的组合渲染圆弧,则将缩放椭圆。
谁能说出他们实际上是如何计算上述情况的比例因子的。
解决方法
他们实际上是在参考半长轴和半短轴,而不是半径。端点是固定的。这意味着如果以下两个角度都固定(并且都是固定的),则必须调整比例尺:圆弧对角和长轴与x轴对角。您无法指定所有这些参数,但仍然可以在下面自由选择a和b,这只是椭圆的参数形式[旋转回以与Y和X轴对齐]
x(θ),y(θ)=(a cosθ,b sinθ)
这意味着缩放因子只是值c,使得
对于φ的初始值,x(φ),y(φ)=(ca cosφ,cb sinφ)=(x1,y1)
和
对于φ的最终值,(ca cosφ,cb sinφ)=(x2,y2)。显然,此处给出的解释仅在椭圆旋转之前是正确的。但是,将一个点围绕另一个点旋转可能不会给您带来太多麻烦。