Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++로 한쪽 끝점과 중점이 주어진 선분의 나머지 끝점 구하기

이 문제에서는 한 선분의 시작점 A(xA, yA)와 중점 M(xM, yM)의 좌표가 주어집니다. 우리의 과제는 한쪽 끝점과 중점이 주어졌을 때 선분의 다른 끝점을 찾는 것입니다.

문제를 이해하기 위해 예시를 살펴보겠습니다.

입력

A = [1, 2], M = [3, 0]

출력

[5, -2]

설명

해당 선분은 다음과 같습니다.


해결 방법

이 문제는 수학 시간에 배운 기하학 개념을 활용하여 해결할 수 있습니다. 기억하시겠지만 모든 선분에는 중점 공식이 존재합니다.

mid(x) = (x1 + x2) / 2
mid(y) = (y1 + y2) / 2

하지만 이 문제에서는 중점의 값이 주어져 있고, x2와 y2의 값을 구해야 합니다. 따라서 공식을 위와 같은 상황에 맞게 변형합니다.

x2 = 2*mid(x) - x1
y2 = 2*mid(y) - y1

위 공식을 사용하면 중점과 선분의 한 점만으로도 나머지 끝점의 값을 구할 수 있습니다.

예제

다음은 솔루션의 동작을 보여주는 프로그램입니다.

#include <iostream>
using namespace std;
void findMissingPointLine(float x1, float y1, float xm, float ym){
   float x2 = (2 * xm) - x1;
   float y2 = (2 * ym) - y1;
   cout<<"B(x, y) = "<<"( "<<x2<<", "<<y2<<" )";
}
int main()
{
   float x1 = -4, y1 = -1, xm = 3, ym = 5;
   cout<<"선분의 다른 끝점은 다음과 같습니다 \n";
   findMissingPointLine(x1, y1, xm, ym);
   return 0;
}

출력 결과

선분의 다른 끝점은 다음과 같습니다
B(x, y) = ( 10, 11 )