2008-09-24 28 views
5

我正在研究几何问题,需要找到任何旋转中的两个抛物线弧的交点。通过旋转平面使弧线与轴线对齐,我能够将线条和抛物线弧线合并,但是两个抛物线不能与轴线对齐。我正致力于推导公式,但我想知道是否有可用于此的资源。任何旋转中两个抛物线相交的代码或公式

回答

6

我首先定义公式在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。

+0

如何在C++中解决这个方程组(因此不用内置的Matlab函数) http://math.stackexchange.com/questions/1894043/solve-squared-non-linear-system-with-two -Equations – 2016-08-16 14:43:33

1

不幸的是,一般的答案需要解四阶多项式。如果我们转换坐标使得两个抛物线中的一个处于标准形式y = x^2,那么第二个抛物线满足(ax + by)^ 2 + cx + dy + e == 0。要找到交集,同时解决两个问题。代入y = x^2,我们看到结果是一个四阶多项式:(ax + bx^2)^ 2 + cx + dx^2 + e == 0。因此Nils解决方案将不起作用(他的错误:每个变量都是分别在每个变量中的二阶多项式,但是它们不在一起)。

1

如果您手边有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 = {[email protected]@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}, {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]]] 
    }]}] 

enter image description here

一般的解决方法包括计算的根:这是在任何CAS轻松完成

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