c#-在二次贝塞尔曲线路径上查找点

我正在尝试创建如下形状:

对于螺旋曲线,我使用了二次贝塞尔曲线段.

    PathGeometry pg1 = new PathGeometry();
    PathFigure pf1 = new PathFigure()
    {
        StartPoint = new Point(Convert.ToDouble(middle) + 500, Convert.ToDouble(middle) + 500)
    };
    PathSegmentCollection psc1= new PathSegmentCollection();
    QuadraticBezierSegment arcs1 = new QuadraticBezierSegment()
    {
        Point1 = new Point(100, 560),
        Point2 = new Point(pf.StartPoint.X - 300, pf.StartPoint.Y + 200)
    };
    psc1.Add(arcs1);
    pf1.Segments = psc1;
    pg1.Figures.Add(pf1);
    Path spiral1 = new Path()
    {
        Data = pg1,
        Stroke = Brushes.White,
        StrokeThickness = 1.5
    };
    MainScrn.Children.Add(spiral1);

它为其中一条路径输出适当的曲线:

我确定我将其标记为错误,但这是上面的变量与贝塞尔曲线关联的位置和方式.

现在我想要的是曲线上的点.

而且我无法从对象中接收到该信息.我正在尝试收集这些点,以便可以使对象沿Bezier曲线的路径进行动画处理,并使它们停在曲线的不同点上.我该如何实现?

解决方法:

假设您要计算从控制点arcs1.Point1(P2)沿三次贝塞尔曲线从pf1.StartPoint(P1)到arcs1.Point2(P3)的五分之一(或任意数量)的点.

您可以这样做:

>计算沿从P1到P2的直线的五分之一的点,并将其称为A
>计算沿从P2到P3的直线的五分之一的点,并将其称为B
>计算沿A到B的直线的五分之一的点,这就是您的答案.

您可以将其减少到polynomial formula,您可以将其插入值中并从中得出答案,但这在几何上可能更直观,并且可以使用Point类中的内置函数轻松实现.

上一篇:Vulnerable Kerbals CodeForces - 772C【拓展欧几里得建图+DAG上求最长路】


下一篇:如何在mySQL表中插入点