c++ 如何计算曲线的垂线偏移?

mo49yndu  于 2023-07-01  发布在  其他
关注(0)|答案(1)|浏览(325)

我有一组曲线的位置,即图像的红线,现在我必须计算其余曲线的位置,即图像的绿线。
我想把所有的线组合成多边形来绘制图像的蓝色线,我不能用线来做。因为我需要通过测量数据来渲染颜色。
现在我用三角形画蓝线。
如何计算垂直曲线线偏移?

xjreopfe

xjreopfe1#

所以这是局部投影到二维的
偏移线意味着您只需向其端点添加偏移。在2D中非常简单地计算垂直移位。你有一条线的端点P0,P1,想要一条线Q0,Q1,它与P0,P1平行,距离为l,所以:

dp = P1-P0                 // line direction vector
dp /= length(dp)           // make it unit
dq =  vec2( +dp.y, -dp.x ) // rotate by 90 deg in 2D so dq is perpendicular to dp
dq *= l                    // offset is now equal to size l
Q0 = P0 + dq
Q1 = P1 + dq

现在,如果你正在做曲线或多边形,你必须处理的边缘,请参阅:

如果这是3D的,那么你必须使用cross产品来获得dq沿着一些参考方向(如垂直于地球表面)

dq = cross (dp , some_refernce_direction_unit_vector)
dq *= l

相关问题