【发布时间】:2021-12-02 06:24:48
【问题描述】:
我有一个由 3 个点定义的线带,每个点都有一个 x 和 y 坐标。
我正在尝试平滑中间(点 2)角,如下图所示:
灰色的线是原始的线带,黑色的线是平滑的。 平滑区域在多个值之间应该是恒定的(因为它不依赖于 p1 和 p2 或 p2 和 p3 之间的线的长度)。
我最初使用的是贝塞尔曲线和简单的样条曲线,但这并没有奏效,因为平滑曲线在多个值之间显然不一样。
我该怎么做?
【问题讨论】:
-
我正要建议贝塞尔曲线。但是当您说“平滑曲线在多个值之间显然不一样”时,您失去了我。也许这部分对我来说不是那么明显。你能更详细地解释一下为什么贝塞尔没有做到这一点吗?
-
这里相同:您能否进一步解释一下“平滑区域应该在多个值之间保持不变(因为它不依赖于 p1 和 p2 或 p2 和 p3 之间的线的长度)。”
-
如果您对在线条长度增长到无穷大时保持“角”的形状保持不变感到满意,您可以简单地选择原始端点或相应线条上的点在一定距离处
x从十字路口,以更靠近十字路口的为准,如有必要,其余部分使用直线。如果您想对任意短的线执行此操作,则可能仅限于原始直线,因为随着长度收敛到零,您需要越来越接近交叉点。 -
让我们看看你是不是这个意思:在每条线上选择 2 个与拐角距离相同的点。在这些点上绘制两条与您已有的线成直角的线(法线向量指向左下角)。它们将在一个圆心的点交叉,这个圆的一部分将成为平滑的角。
-
您可以取每个线段的中心点并在它们之间制作贝塞尔曲线。这样连续的线不会在它们之间相互作用。
标签: c++ math opengl curve spline