获得弧线上的点,包括中心,起点和终点

时间:2016-05-08 12:55:58

标签: c# wpf telerik

我正在尝试找到一个简单的解决方案,以获得弧上的一组点 我的程序使用c#,wpf和telerik运行。

在我的程序中,我有一张地图,上面有相机的FOV(视野) 直到现在我有了三角形fov,但是客户想要它有一个圆弧 我有一个中心点(摄像机的原点),有两个点代表左右FOV边界 这些点表示为坐标。

A draw of what I wish to accomplish

我的目标是在弧顶上收集一组连接FOV限制(左点和右点)的点,然后我将发送给telerik绘制。

一些评论:

  1. 我知道telerik可以绘制弧线,但它有奇怪的binding problems
  2. 我看到一些答案(不是很有帮助)说要计算圆方程并从那里继续。如果可能,我希望尽量避免。
  3. c#和Math类是否有一些可以提供帮助的工具? 我试着自己计算一下,但这对我来说太复杂了。

    谢谢, NAOR。

1 个答案:

答案 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>

您当然也可以在后面的代码中创建这样的几何体。