Bạn có thể làm điều này bằng cách tính toán các góc.
Giả sử điểm cuối của bạn là (x1, y1) và (x2, y2) và điểm của bạn là (x, y).
Sau đó, bạn tạo hai vectơ, từ một thiết bị đầu cuối để khác, và một thiết bị đầu cuối để quan điểm của bạn:
vec1 = (x - x1, y - y1);
vec2 = (x2 - x1, y2 - y1);
Tính chấm sản phẩm:
double dotp = (x-x1) * (x2-x1) + (y-y1) * (y2 - y1);
Bây giờ chấm sản phẩm chia cho cường độ cho phép bạn cosin của góc:
double theta = Math.acos((dtop)/(Math.sqrt((x-x1) * (x-x1) + (y-y1) * (y-y1))
* Math.sqrt((x2-x1) * (x2-x1) + (y2-y1) * (y2-y1))));
Bây giờ, mẹo là nếu góc của bạn là tuyệt vời er hơn PI/2
, bạn đang 'ra'
public static boolean check(double x, double y, double x1, double y1,
double x2, double y2) {
// vectors are (dx1, dy1) and (dx2, dy2)
double dx1 = x - x1, dx2 = x2 - x1, dy1 = y - y1, dy2 = y2 - y1;
double dotp = dx1 * dx2 + dy1 * dy2;
double theta = Math.acos(dotp/(Math.sqrt(dx1 * dx1 + dy1 * dy1)
* Math.sqrt(dx2 * dx2 + dy2 * dy2)));
theta = Math.abs(theta);
if (theta > (Math.PI/2))
return false;
dx1 = x - x2;
dx2 = x1 - x2;
dy1 = y - y2;
dy2 = y1 - y2;
dotp = dx1 * dx2 + dy1 * dy2;
theta = Math.acos(dotp/(Math.sqrt(dx1 * dx1 + dy1 * dy1)
* Math.sqrt(dx2 * dx2 + dy2 * dy2)));
theta = Math.abs(theta);
if (theta > (Math.PI/2))
return false;
return true;
}
Cảm ơn bạn, đã làm việc như một sự quyến rũ, đơn giản và hiệu quả – Xkynar