两个抛物线在任何旋转中相交的代码或者公式
时间:2020-03-06 14:41:17 来源:igfitidea点击:
我正在研究一个几何问题,该问题要求在任何旋转中都找到两个抛物线的交点。通过旋转平面以使圆弧与轴对齐,我能够检测直线和抛物线弧,但是两个抛物线不能同时与轴对齐。我正在努力推导公式,但是我想知道是否已经有可用的资源。
解决方案
首先,我要定义不带旋转的2D抛物线弧方程:
x(t) = ax2 + bx + c y(t) = t;
现在,我们可以通过构建旋转矩阵来应用旋转:
s = sin(angle) c = cos(angle) matrix = | c -s | | s c |
应用该矩阵,我们将获得旋转的参数方程式:
x' (t) = x(t) * c - s*t; y' (t) = x(t) * s + c*t;
这将为我们提供抛物线弧的两个方程式(对于x和y)。
对两个旋转圆弧都这样做,然后减去它们。这为我们提供了一个等式:
xa'(t) = rotated equation of arc1 in x ya'(t) = rotated equation of arc1 in y. xb'(t) = rotated equation of arc2 in x yb'(t) = rotated equation of arc2 in y. t1 = parametric value of arc1 t2 = parametric value of arc2 0 = xa'(t1) - xb'(t2) 0 = ya'(t1) - yb'(t2)
这些方程式中的每一个只是2阶多项式。这些很容易解决。
要找到相交点,我们可以求解上述方程式(例如,找到根)。
每个轴最多可以有两个根。 x和y相等的任何根都是曲线之间的交点。
现在轻松获得位置:只需将根插入参数方程式,就可以直接获得x和y。
不幸的是,一般的答案需要四阶多项式的解。如果我们转换坐标,以使两个抛物线之一处于标准形式y = x ^ 2,则第二个抛物线满足(ax + by)^ 2 + cx + dy + e == 0。要找到交点,请同时解决这两个问题。代入y = x ^ 2,我们看到结果是四阶多项式:(ax + bx ^ 2)^ 2 + cx + dx ^ 2 + e == 0。因此,Nils解决方案将不起作用(他的错误:每个变量分别是每个变量中的2阶多项式,但在一起却不是)。