C# ArcSegment C公式以获取圆弧WPF上的特定点
我有一个从路径绘制的画布上的弧,带有以下细节。我要拿到115225分。请查看屏幕截图以获取更多详细信息。请帮助我获得公式,以达到115225点C# ArcSegment C公式以获取圆弧WPF上的特定点,c#,wpf,wpf-controls,C#,Wpf,Wpf Controls,我有一个从路径绘制的画布上的弧,带有以下细节。我要拿到115225分。请查看屏幕截图以获取更多详细信息。请帮助我获得公式,以达到115225点 startX=250 startY=250 ArcSegment Size (70,70) ArcSegment Point (250,200) Computation var meanX=(startX+startX)/2-rX;//(250+250)/2-70=180 var meanY=(startY+ArcSegment.Point.Y)/2
startX=250
startY=250
ArcSegment Size (70,70)
ArcSegment Point (250,200)
Computation
var meanX=(startX+startX)/2-rX;//(250+250)/2-70=180
var meanY=(startY+ArcSegment.Point.Y)/2-rY;//(250+200)/2-70=225
//center Point (180,225)
//What is the formula if I want to get Point(115,225)
XAML
截图
经过几个小时的研究,我发现一切都在这里
var geometry = path.Data as PathGeometry;
var leftX=geometry.Bounds.Location.X;
var topY=geometry.Bounds.Location.Y;
我一点也不确定我是否遵循了你想要实现的目标。但这看起来像一个圆的一部分,而不仅仅是任何一个旧的圆弧。在我看来,某种形式的平均角度,然后使用向量或方位角从中心平移将是一种方法。如果近似整数值可行,还有bresenham圆,您需要进行大量计算。如果您已经知道该值,为什么需要计算点115225?这将在路径的矩形边界上给出一个点,而不是圆。为了获得圆上的点,您需要计算其中心点,例如,在Cx,Cy处,半径为R时,从角度a x=Cx+R*cosA,y=Cy+R*sinA获得点。请注意,角度通常以弧度表示,即整圆为2*pi,a=0是正X轴上的一个点,即右侧。对于不同的起始角度,可能需要将常量值添加到。
private void Path_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
var curve = sender as Path;
var geometry = curve.Data as PathGeometry;
var figure = geometry.Figures.FirstOrDefault();
var arcSegment = figure.Segments.FirstOrDefault() as ArcSegment;
var startX = figure.StartPoint.X;
var yStart = figure.StartPoint.Y;
var startAngle = arcSegment.Point.X;
var sweepAngle = arcSegment.Point.Y;
var rX = arcSegment.Size.Width;
var rY = arcSegment.Size.Height;
var endAngle = startAngle + sweepAngle;
var meanX = (startX + startAngle) / 2 - rX;
var meanY = (yStart + sweepAngle) / 2 - rY;
}
var geometry = path.Data as PathGeometry;
var leftX=geometry.Bounds.Location.X;
var topY=geometry.Bounds.Location.Y;