Xác định vị trí điểm T(xt, yt) so với đường thẳng L nối hai điểm M(x1,y1), N(x2,y2) bằng giá trị:
Y = (y2-y1)*xt + (x1-x2)*yt + (x2*y1 - x1*y2)
Y < 0→ T nằm nửa mặt phẳng theo chiều kim đồng hồ (bên trái/dưới)Y > 0→ T nằm nửa mặt phẳng ngược chiều kim đồng hồ (bên phải/trên)Y = 0→ T nằm trên đường thẳng
Ví dụ minh họa
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
srand(time(0));
int x1 = rand()%21, y1 = rand()%21;
int x2 = rand()%21, y2 = rand()%21;
cout << "Duong thang: (" << y2-y1 << ")x + (" << x1-x2 << ")y + (" << x2*y1-x1*y2 << ") = 0" << endl;
int x, y; cout << "Nhap diem (x y): "; cin >> x >> y;
int s = (y2-y1)*x + (x1-x2)*y + (x2*y1 - x1*y2);
if (s < 0) cout << "Diem nam DUOI/BEN TRAI duong thang";
else if (s > 0) cout << "Diem nam TREN/BEN PHAI duong thang";
else cout << "Diem nam TREN duong thang";
return 0;
}
Kết quả (ví dụ)
Duong thang: (7)x+(0)y+(-105) = 0 Nhap diem (x y): 7 6 Diem nam DUOI/BEN TRAI duong thang