如何计算曲线的垂直偏移量?含多边形绘制场景需求
曲线垂直偏移量计算方法
计算相邻点的切线方向
对于红色曲线上的连续三点 (P_0(x_0,y_0))、(P_1(x_1,y_1))、(P_2(x_2,y_2)),先计算两段线段的向量:vec1 = (x₁ - x₀, y₁ - y₀)vec2 = (x₂ - x₁, y₂ - y₁)
对中间点 (P_1) 的切线方向,取两段向量的和后归一化:tangent = normalize(vec1 + vec2)
首尾点直接用相邻单段向量归一化作为切线方向。获取垂直法向量
若切线向量为 ((tx, ty)),则垂直于切线的两个法向量为 ((-ty, tx)) 和 ((ty, -tx)),对应曲线的两侧偏移方向,根据你的多边形需求选择其中一个方向即可。生成偏移后的点位
设定需要的偏移距离为 (d),则偏移后的点坐标为:偏移点.x = 原点点.x + d * 法向量.x偏移点.y = 原点点.y + d * 法向量.y
注意所有点使用统一的偏移方向,避免最终多边形出现交叉或扭曲。可选:平滑偏移曲线
如果偏移后的点列出现折线突兀的情况,可以对偏移点列做二次平滑处理,比如用Catmull-Rom样条插值,让最终的多边形边缘更流畅。
内容的提问来源于stack exchange,提问作者Hunk
相关产品推荐
相关产品推荐

