我一直在努力寻找一种可以理解的方法来做到这一点.我有四个点,一个StartPt,EndPoint和Intersection点来表示贝塞尔曲线中的峰值和谷值.
C#中的BezierSegment需要start,controlPoint 1,controlPoint 2,endpoint - 但是我没有任何控制点我只有这两个点位于贝塞尔曲线上(我称之为上面的交点)...我可以计算出两个控制点吗?
在此先感谢,这一直让我发疯.
这里有一些解释:http://www.tinaja.com/glib/nubz4pts1.pdf,但它是用postscript写的,而且这种语言对我来说毫无意义 - 这是我的头脑.
给出n分:
p0,p1,p2,...,pn;
如何得到点c1,c2以便定义的三次贝塞尔曲线
p0,c1,c2,pn
最接近给定点?
我试过最小二乘法.我在http://www.mathworks.com/matlabcentral/fileexchange/15542-cubic-bezier-least-square-fitting上阅读pdf文档后写了这篇文章.但我找不到一个好的t(i)功能.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
namespace BezierFitting
{
class CubicBezierFittingCalculator
{
private List<Point> data;
public CubicBezierFittingCalculator(List<Point> data)
{
this.data = data;
}
private double t(int i)
{
return (double)(i - 1) / (data.Count - 1);
// double s = 0.0, d = 0.0;
//
// for (int j = 1; j < data.Count; j++)
// {
// if (j < i)
// {
// s += (data[j] - data[j …Run Code Online (Sandbox Code Playgroud)