Pergunta

Eu estou trabalhando em um problema de geometria que requer encontrar a interseção de dois arcos parabólicos em qualquer rotação. Consegui intesect uma linha e um arco parabólico, rodando o avião para alinhar o arco com um eixo, mas duas parábolas não podem ambos alinhamento com um eixo. Eu estou trabalhando em derivar as fórmulas, mas eu gostaria de saber se já existe um recurso disponível para isso.

Foi útil?

Solução

Eu primeiro definir a equação para o arco parabólico em 2D sem rotações:

  x(t) = ax² + bx + c
  y(t) = t;

Você pode agora aplicar a rotação através da construção de uma matriz de rotação:

  s = sin(angle)
  c = cos(angle)

  matrix = | c -s |
           | s  c |

Aplicar essa matriz e você terá a equação paramétrica rodada:

x' (t) = x(t) * c - s*t;
y' (t) = x(t) * s + c*t;

Isto lhe dará duas equações (para x e y) de seus arcos parabólicos.

Do que, para ambos os arcos girados e subtrair-los. Isto dá-lhe uma equação como esta:

  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)

Cada um destes equação é apenas uma ordem de 2 polinomial. Estes são fáceis de resolver.

Para encontrar os pontos de intersecção que você resolve a equação acima (por exemplo, encontrar as raízes).

Você terá até duas raízes para cada eixo. Qualquer raiz que é igual em x e y é um ponto de interseção entre as curvas.

Obtendo a posição é fácil agora:. Basta ligar a raiz em sua equação paramétrica e você pode obter diretamente x e y

Outras dicas

Infelizmente, a resposta geral exige solução de um polinômio de quarta ordem. Se transformar as coordenadas assim uma das duas parábolas é na forma padrão y = x ^ 2, então o segundo satisfaz parábola (ax + by) ^ 2 + cx + dy + E == 0. Para encontrar o cruzamento, resolver ambos simultaneamente. Substituindo em y = x ^ 2, vemos que o resultado é uma polinomial de quarta ordem: (ax + bx ^ 2) ^ 2 + cx + dx ^ 2 + E == 0. solução Nils, portanto, não vai funcionar. (seu erro: cada um é um polinômio de ordem 2 em cada variável separadamente, mas juntos eles não são)

É fácil se você tem um CAS na mão.

Veja a solução no Mathematica.

Escolha de uma parábola e mudanças de coordenadas de modo a equação torna-se y (x) = a x ^ 2 (forma normal).

A outra parábola terá a forma geral:

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)  

vamos resolver um caso numérico:

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 -> -,641445}, {X -> 0.379567- 0,76948 I}, {X -> 0.379567+ 0,76948 I}}

Vamos enredo lo:

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 descrição da imagem aqui

A solução geral envolve o cálculo das raízes de:

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  

O que é feito facilmente em qualquer CAS.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top