gpt4 book ai didi

algorithm - 由一组基点描述的曲线(样条曲线、贝塞尔曲线路径等)

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:01:43 26 4
gpt4 key购买 nike

作为输入,我有一组“基”点(例如 9 个点),作为输出,我必须返回另一组点,它们描述了一条曲线。

A1-A9为输入;这些是“基础”点。我的任务是返回一组点,用户可以根据这些点构建描绘的曲线,即 A1-A9 的黑线

Puzzle piece

我的数学水平很低,谷歌搜索也不是很有帮助。据我了解,这可以是三次样条。我找到了一些基于 C 的源代码,但是当我尝试构建样条零件时,这段代码会无限循环,其中 nextPoint.x < currentPoint.x .

请解释一下,我应该为我的任务使用什么样的样条曲线、贝塞尔曲线路径或其他结构。如果您向我指出代码、算法或一本很好的傻瓜手册,那就太好了。

最佳答案

使用Interpolation methods生成曲线上的中间点。

例如,给定 CubicInterpolate 函数:

double CubicInterpolate(
double y0,double y1,
double y2,double y3,
double mu)
{
double a0,a1,a2,a3,mu2;

mu2 = mu*mu;
a0 = y3 - y2 - y0 + y1;
a1 = y0 - y1 - a0;
a2 = y2 - y0;
a3 = y1;

return(a0*mu*mu2+a1*mu2+a2*mu+a3);
}

要在三次样条上找到 point[1]point[2] 中间的点,您可以使用:

newPoint.X = CubicInterpolate(point[0].X, point[1].X, point[2].X, point[3].X, 0.5);
newPoint.Y = CubicInterpolate(point[0].Y, point[1].Y, point[2].Y, point[3].Y, 0.5);

point[0]point[3] 会影响 point[1]point 之间的曲线部分[2]。在曲线的任一端,只需再次使用终点即可。

为确保点之间的距离大致相等,您可以计算输入点之间的距离以确定要生成多少个中间点(和 mu 值)。因此,对于相距较远的点,您可以在 01 之间使用更多的 mu 值。相反,对于非常靠近的点,您可能根本不需要添加中间点。

关于algorithm - 由一组基点描述的曲线(样条曲线、贝塞尔曲线路径等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16572620/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com