2012-06-13 4 views
2

이것은 숙제가 아닙니다. 프로젝트를 위해 원 사이에 이중 연결선을 만들려고합니다.삼각형의 세 번째 좌표를 찾는 방법

이 (가 회전되기 때문에)

  • AB는
  • AB는 BC 동일 알려져있다
  • BC 알려져있다
  • AC 알려진 모든 종류의 삼각형 (그들이 주어진 원의 반경 둘 다)

점 A는 (x1, y1)이며 알려져 있습니다. 원의 중심점입니다. 점 B는 (x2, y2)이며 알려져 있습니다. 먼 원의 중심에 연결하는 원의 가장자리에있는 점입니다.

포인트 C는 알 수 없습니다 (x3, y3). 우리가 알아 내려고하는 것입니다. 나는 코사인 법칙을 사용할 필요가 있다고 생각하지만 지금까지는 효과가 없습니다.

도움을 주실 수있는 분들께 감사드립니다! 당신이 답을 얻기 위해 필요한 것보다

+0

AB가 BC와 동등한 경우 (둘 다 원의 반지름) 다음에 A가 원의 중심 인 경우 http://math.stackexchange.com/ – lanzz

+0

에 질문이있을 것입니다. 내가 맞습니까? –

+0

죄송합니다 B는 원의 중심입니다. –

답변

2

당신은 더 많은 정보를 가지고 있고 그것은 코사인의 법칙과 아무 상관이

은 기본적으로 당신은 단지 A, B, AC 및 BC

  1. 을 필요로 당신 가장자리

  2. 당신은 가장자리

,369로 센터와 BC로 B와 또 다른 원을 그리로 센터와 AC 같이에 원을 그립니다

이 두 개의 원이 개 교차하는 지점이있을 것이다, 그들은 C

의 두 가지 위치에있는 수학에 넣어 :

  • (x 축 : 두 개의 이진 차 방정식이

    X1)^2 + (Y-Y1)^2 = AC^2

  • (X-X2)^2 + (Y-Y2)^2 = BC^2

하면 받아야 (x, y) 두 방정식

+0

그래서 내가 전에 붙잡 았던 곳입니다. 나는 공백을 그리고있다 sqrt (BC^2 - (y-y2)^2) + x2 = sqrt (AC^2 - (y-y1)^2) - x1 나는 여기서 Y를 풀 필요가있다. 그러나 나는 그렇게하지 못하고있다. 나는 대수학이 실패한 것을 안다. 나는 sqrts가 어떻게 조건을 통해 배포하는지 잊는다. –

+0

@SeanClark ok 그러면 순수한 수학 문제입니다. http://math.stackexchange.com/이 더 좋은 장소라고 생각합니다. – xvatar

+0

Wolfram Alpha는 일반적으로 이런 종류의 일에 좋지만, 이것에 대한 아주 불쾌한 표현 (http://tinyurl.com/cj7at7q). –

1

은 삼각형 (AB), (BC) 및 (AC)의 세 변의 길이를 알고 있기 때문에 코사인 법칙을 사용합니다. 코사인의 법칙 세타가 정점 A.이 재 배열에서 삼각형의 내부 각도입니다

(BC)^2 = (AC)^2 + (AB)^2 - 2 (AC)(AB) cos theta 

을 제공한다고 다음

theta = acos(((BC)^2 - (AC)^2 - (AB)^2)/(-2 (AC)(AB))) 

답이다 (벡터 표기) :

(x,y) = (x1,y1) + (AC)*(v1,v2) 

여기서, (v1,v2)은 A에서 C 방향의 단위 벡터입니다 (ie, 스칼라 표기, x=x1+(AC)*v1y=y1+(AC)*v2). 우리는 각 (9)에 의하여 A와 B에서의 단위 벡터를 회전하여 V1 및 V2를 구할 수

v1 = (cos(theta)*(x2-x1) + sin(theta)*(y2-y1))/(AB) 
v2 = (cos(theta)*(y2-y1) - sin(theta)*(x2-x1))/(AB) 

은 두 용액의 나머지를 얻을 세타의 부호를 반전. 하나는 해당 관찰에 의해 계산 적 세타 피할 수

참고

cos(theta) = ((BC)^2 - (AC)^2 - (AB)^2)/(-2 (AC)(AB)) 
sin(theta) = sqrt(1-((BC)^2 - (AC)^2 - (AB)^2)/(-2 (AC)(AB))^2) 

삼각 함수보다 빠르게 평가할 수있다.

+0

그래서 자바에서는 v1과 v2 부분에이 ... var v1 = (Math.cos (theta) * (x2 - x1) + Math. sin (theta) * (y1 - y1))/AB; var v2 = (Math.cos (theta) * (y2 - y1) + Math.sin (theta) * (x2 - x1))/AB; 그러나 (x, y) = (x1, y1) + (AC) * (v1, v2) 부분을 JavaScript로 어떻게 변환합니까? 괄호 안의 쉼표가 나를 혼란스럽게합니다. 그래서 나는 같은 것을 할 것입니다 ... var x = x1 + AC * v1; var y = y1 + AC * v2; ? – Allen

+0

@Allen - [이렇게하면 ... var x = x1 + AC * v1; var y = y1 + AC * v2;] - 맞습니다. 괄호 안의 쉼표는 벡터 표기법입니다.이 표기법은 이제 답변에서 분명히했습니다. –

관련 문제