Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm ảnh phản chiếu của một điểm trong mặt phẳng 2-D trong C ++


Trong bài toán này, chúng ta cho một điểm P trong mặt phẳng 2-D và các điểm a, b, cof có phương trình ax + by + c =0. Nhiệm vụ của chúng ta là tìm hình ảnh phản chiếu của mặt phẳng 2-D điểm.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào

P = (2, 1), a = 1, b = -1, c = 0

Đầu ra

(1, 2)

Giải thích

Máy bay trông giống như,

Tìm ảnh phản chiếu của một điểm trong mặt phẳng 2-D trong C ++

Phương pháp tiếp cận giải pháp

Để giải bài toán, ta cần tìm phương trình điểm P 'có tọa độ (x', y '). Vì vậy, chúng ta có R, trung điểm nơi đường thẳng P - P 'cắt đường gương.

Đường thẳng P-R-P 'vuông góc với gương. Do đó, phương trình của đường sẽ là,

ay - by + d = 0

Các điểm là P (x, y); P '(x', y '); R (xm, ym).

Các điểm P và R đã biết. Vì vậy, sử dụng các phương trình, chúng ta sẽ tìm thấy P ’là,

$$ \ left (\ frac {?? '- ??} {??} \ right) =\ left (\ frac {??' - ??} {??} \ right) =\ left (\ frac { ???? - ???? + ??} {?? ^ 2 + x ^ 2} \ right) $$

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

Ví dụ

#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;
}

Đầu ra

Image of point (1, 0) using mirror (-1)x + (1)y + (0) = 0, is :(0,1)