我正在尝试找到一个简单的解决方案,以获得弧上的一组点 我的程序使用c#,wpf和telerik运行。
在我的程序中,我有一张地图,上面有相机的FOV(视野) 直到现在我有了三角形fov,但是客户想要它有一个圆弧 我有一个中心点(摄像机的原点),有两个点代表左右FOV边界 这些点表示为坐标。
A draw of what I wish to accomplish
我的目标是在弧顶上收集一组连接FOV限制(左点和右点)的点,然后我将发送给telerik绘制。
一些评论:
c#和Math类是否有一些可以提供帮助的工具? 我试着自己计算一下,但这对我来说太复杂了。
谢谢, NAOR。
答案 0 :(得分:1)
您可以将Path
控件与包含PathGeometry
的相应ArcSegment
一起使用。
在下面的示例中,(100,100)
是中心点,(50,50)
和(150,50)
是弧的起点和终点。请注意,弧是椭圆的一段,其中ArcSegment的Size
属性指定椭圆半径。这是一个半径为50*sqrt(2)
的圆圈。
<Path Stroke="Black">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="100,100" IsClosed="True">
<LineSegment Point="50,50"/>
<ArcSegment Point="150,50" Size="70.7,70.7" SweepDirection="Clockwise"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
或更短:
<Path Stroke="Black" Data="M100,100 L50,50 A70.7,70.7 0 0 1 150,50Z" />
假设您的视图模型有四个描述弧形图的属性,如
public Point Center { get; private set; } = new Point(100, 100);
public Point Start { get; private set; } = new Point(50, 50);
public Point End { get; private set; } = new Point(150, 50);
public Size Size { get; private set; } = new Size(70.7, 70.7);
你可以用这样的Bindings编写XAML:
<PathFigure StartPoint="{Binding Center}" IsClosed="True">
<LineSegment Point="{Binding Start}"/>
<ArcSegment Point="{Binding End}" Size="{Binding Size}" SweepDirection="Clockwise"/>
</PathFigure>
您当然也可以在后面的代码中创建这样的几何体。