我正在尝试创建如下形状:
对于螺旋曲线,我使用了二次贝塞尔曲线段.
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类中的内置函数轻松实现.