gpt4 book ai didi

c++ - 使用 C 语言通过贝塞尔曲线平滑粗糙多边形的算法

转载 作者:行者123 更新时间:2023-11-30 17:56:42 33 4
gpt4 key购买 nike

我正在制作一个 map 程序,我通过轮廓跟踪得到了粗糙的轮廓,现在我想用贝塞尔曲线平滑这些轮廓。我不知道如何让终点顺利。你知道,我必须混合起点和终点以获得相同的切线。我找到了几种算法,但没有一个解决这个问题。我知道这可以通过微分来解决,但我不喜欢那件事。所以我希望有人能给我关键部分一个明显的代码演示。

最佳答案

我不明白你的应用程序,但我会回答如何匹配两条贝塞尔曲线:如果您有两 strip 有控制点 (A1,A2,..,AN-1,AN) 和 (B1,B2,..,BN-1,BN) 的贝塞尔曲线,并且希望将 A 的结尾与 A 的开头匹配B,首先您必须确保 AN=B1(例如将两者都设置为 (AN+B1)/2)。

要使其切线连续,AN-1,(AN/B1),B2 必须在一条直线上。通过平均 A 的最后一段和 B 的第一段的方向即可求出直线的方向:d = ((AN - AN-1) + (B2 - AN))/2。

在二维中:通过找到线 (AN,d) 分别与线 (AN-2,AN-1) 和 (B2,B3) 的交点来重新定位 AN-1 和 B2。对于 3D,您可能需要将直线与由 (B2,B3) 和通过计算 (B2-B3) 和 d 的叉积找到的第三个点构建的平面相交。

关于c++ - 使用 C 语言通过贝塞尔曲线平滑粗糙多边形的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13319910/

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