Javascript如何找到两个quadraticCurveTo函数的交集

时间:2016-07-26 04:34:30

标签: javascript math

正如标题所说的那样。我试图使用2个垂直交叉圆的二次曲线来创建3d的幻觉,以显示它是向内或向外弯曲。如果我能弄清楚如何找到相交并在该点周围做一个较小的圆圈,我认为这种错觉就会完成。 What I have so far

编辑:因为它似乎太难做了,所以我可以用一个函数来替换quadraticCurve来起作用,从一个点开始,经过一个点,然后在一个点结束?

1 个答案:

答案 0 :(得分:0)

你基本上有两个变量的两个二次方程组,即两条曲线的参数。您可以使用例如消除其中一个变量。 resultants,然后检查一个参数的所有可能选择,以查看它和其他参数的相应值是否为实数且在[0,1]范围内。结果将是4阶多项式,所以你需要相当多的数学来解决这个问题,尽管可以不用数值方法来做到这一点。

如果所有这些听起来太复杂,并且你知道只有一个交点,我建议采用一些二分法。将您的一条二次曲线转换为隐式形式(可能再次使用结果来消除参数)。这样,您可以轻松检查给定点所在曲线的哪一侧。然后将另一条曲线的参数一分为二:从两个端点开始,在两个端点之间选取一个点,然后使用其中一个端点的插入点,使得您保持的两个点始终位于另一个曲线的不同侧。继续,直到您的参数范围足够小。

你也可以将你的曲线转换为隐式形式,然后按照these instructions计算两个二次曲面之间的交点,只需要计算三次多项式的根,而不是四次多项式。