Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาภาพสะท้อนของจุดในระนาบ 2 มิติใน C++


ในปัญหานี้ เราได้รับจุด P ในระนาบ 2 มิติ และจุด a, b, cof สมการ ax + โดย + c =0 งานของเราคือค้นหา ภาพสะท้อนของระนาบ pointin 2 มิติ

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

อินพุต

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

ผลลัพธ์

(1, 2)

คำอธิบาย

เครื่องบินดูเหมือน

ค้นหาภาพสะท้อนของจุดในระนาบ 2 มิติใน C++

แนวทางการแก้ปัญหา

ในการแก้ปัญหา เราต้องหาจุดสมการ P' ที่มีพิกัด (x', y') ดังนั้น เรามี R จุดกึ่งกลางที่เส้นรูปแบบ P - P' ตัดกับเส้นกระจก

เส้น 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)