点相对于贝塞尔曲线的位置

Ion*_*anu 9 language-agnostic geometry bezier

我有一个由4个点指定的贝塞尔曲线.我需要知道一个点是否位于贝塞尔曲线的左侧或右侧.你能给我一个算法吗?

编辑:我确信我生成贝塞尔曲线的方式不会形成循环.

后来编辑我意识到我的初始问题可以在不使用相对位置的情况下解决.当我发布这个问题时,我认为存在相对位置的数学公式,类似于检查点是否在圆的内部.看来这是不可能的.所以我会接受能够提出时间效率解决方案的答案.

Jer*_*ite 5

您可以使用非常简单的算法确定贝塞尔曲线上的最近点(与k细分相关.DeCastleju算法.)如果需要细节,请查看图形宝石.

此时,即使使用循环,您也可以通过确定距离最近点的测试点的矢量是否位于沿着曲线的矢量右侧的左侧(速度? - 不确定这里的正确术语...)在您确定的最近点处的贝塞尔曲线.

你可以通过两个向量的交叉乘积得到 - 那么.否定或正面将决定手性以及您所在线的哪一侧.

当然,在一个循环中,侧面将被定义为好像你是一辆沿着这条线行驶的汽车,当你走过时,你是否会在该点向右或向左看窗...如果你是在右边或者整个bezier波浪的左边.所以这取决于你如何定义"侧面"

对不起,如果我的条款关闭.已经有一段时间了,因为我不得不对贝齐尔做任何事情

绘制图片会更容易;)