이 문제에서 2차원 평면의 점 P와 방정식 ax + by + c =0의 점 a, b가 주어집니다. 우리의 임무는 다음을 찾는 것입니다. pointin 2-D 평면의 미러 이미지입니다.
문제를 이해하기 위해 예를 들어보겠습니다.
입력
P = (2, 1), a = 1, b = -1, c = 0
출력
(1, 2)
설명
비행기는 다음과 같습니다.
솔루션 접근 방식
문제를 해결하려면 좌표(x', y')가 있는 방정식 점 P'를 찾아야 합니다. 따라서 선 형태 P - P'가 거울 선과 교차하는 중간점인 R이 있습니다.
선 P-R-P'는 거울에 수직입니다. 따라서 선의 방정식은 다음과 같습니다.
ay - by + d = 0
점은 P(x, y) 입니다. P'(x', y'); R(xm, ym).
점 P와 R이 알려져 있습니다. 따라서 방정식을 사용하여 P'를 다음과 같이 찾을 수 있습니다.
$$\left(\frac{??'-??}{??}\right)=\left(\frac{??'-??}{??}\right)=\left(\frac{ ????-????+??}{??^2+x^2}\right)$$
우리 솔루션의 작동을 설명하는 프로그램
예시
#include <iostream> using namespace std; void findMirrorImage( double a, double b, double c, double x, double y){ double points = -2 * (a * x + b * y + c) / (a * a + b * b); double xm = points * a + x; double ym = points * b + y; cout<<"("<<xm<<","<<ym<<")"; } int main(){ double a = -1.0; double b = 1.0; double c = 0.0; double x = 1.0; double y = 0.0; cout<<"Image of point ("<<x<<", "<<y<<") using mirror ("<<a<<")x + ("<<b<<")y + ("<<c<< ") = 0, is :"; findMirrorImage(a, b, c, x, y); return 0; }
출력
Image of point (1, 0) using mirror (-1)x + (1)y + (0) = 0, is :(0,1)