任意旋转中两个抛物线交叉的代码或公式

我正在研究一个几何问题,需要在任何旋转中找到两个抛物线弧的交点。通过旋转平面以使弧与轴对齐,我能够通过线和抛物线弧进行交叉,但是两个抛物线不能与轴对齐。我正在努力推导公​​式,但我想知道是否有资源已经可用。     
已邀请:
我首先在没有旋转的2D中定义抛物线弧的方程:
  x(t) = ax² + 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解决方案不起作用(他的错误:每个变量分别是每个变量中的二阶多项式,但它们一起不是)。     
如果您手头有CAS,这很容易。 请参阅Mathematica中的解决方案。 选择一个抛物线并更改坐标,使其方程式为y(x)= a x ^ 2(正规形式)。 另一个抛物线将具有一般形式:
A x^2 + B x y + CC y^2 + DD x + EE y + F == 0 

where B^2-4 A C ==0 (so it's a parabola)  
让我们解决一个数字案例:
p = {a -> 1, A -> 1, B -> 2, CC -> 1, DD -> 1, EE -> -1, F -> 1};
p1 = {ToRules@N@Reduce[
       (A x^2 + B x y + CC y^2 + DD x + EE y +F /. {y -> a x^2 } /. p) == 0, x]}
{{x - > -2.11769},{x - > -0.641445},     {x - > 0.379567- 0.76948 I},     {x - > 0.379567+ 0.76948 I}} 让我们绘制它:
Show[{
  Plot[a x^2 /. p, {x, -10, 10}, PlotRange -> {{-10, 10}, {-5, 5}}], 
  ContourPlot[(A x^2 + B x y + CC y^2 + DD x + EE y + F /. p) == 
    0, {x, -10, 10}, {y, -10, 10}],
  Graphics[{
    PointSize[Large], Pink, Point[{x, x^2} /. p /. p1[[1]]],
    PointSize[Large], Pink, Point[{x, x^2} /. p /. p1[[2]]]
    }]}]
一般解决方案涉及计算以下因素:
4 A F + 4 A DD x + (4 A^2 + 4 a A EE) x^2 + 4 a A B x^3 + a^2 B^2 x^4 == 0  
在任何CAS中都可以轻松完成。     

要回复问题请先登录注册