문제

회전에서 두 개의 포물선 아크의 교차점을 찾아야하는 기하학적 문제를 해결하고 있습니다. 아크를 축과 정렬하기 위해 평면을 회전시켜 선과 포물선 아크를 막을 수 있었지만 두 개의 포물선은 축과 정렬 될 수 없습니다. 공식을 도출하기 위해 노력하고 있지만 이미 사용할 수있는 자원이 있는지 알고 싶습니다.

도움이 되었습니까?

해결책

먼저 회전없이 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를 직접 얻을 수 있습니다.

다른 팁

불행히도 일반적인 답변에는 4 차 다항식의 해결책이 필요합니다. 두 개의 포물선 중 하나가 표준 형태의 y = x^2이므로 좌표를 변환하면 두 번째 포물선은 (Ax+by)^2+cx+dy+e == 0을 만족시킵니다. 교차로를 찾으려면 동시에 둘 다 해결하십시오. y = x^2로 대체하면 결과는 4 차 다항식이라는 것을 알 수 있습니다. (AX+BX^2)^2+CX+DX^2+E == 0. 따라서 NILS 솔루션은 작동하지 않습니다 (그의 실수 : 각각은 각 변수에서 두 번째 순서 다항식이지만 함께 그렇지 않습니다).

CAS가 있으면 쉽습니다.

Mathematica의 해결책을 참조하십시오.

하나의 포물선을 선택하고 좌표를 변경하여 방정식이 y (x) = ax^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]]]
    }]}]

enter image description here

일반적인 해결책은 다음의 뿌리를 계산하는 것입니다.

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에서 쉽게 수행됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top