Cho 4 điểm mô tả 2 phân đoạn dòng, làm thế nào để bạn tính toán nếu dòng A hướng tới hoặc cách xa dòng B?
2 dòng có độ dài cố định và có thể được đo là khoảng cách từ x1 / y1 đến x2 / y2.
Cho 4 điểm mô tả 2 phân đoạn dòng, làm thế nào để bạn tính toán nếu dòng A hướng tới hoặc cách xa dòng B?
2 dòng có độ dài cố định và có thể được đo là khoảng cách từ x1 / y1 đến x2 / y2.
Câu trả lời:
Cho A
và B
là hai điểm trên đường màu đen. Hãy để C
và D
là phân khúc màu xanh của bạn. Dấu hiệu z
tọa độ của sản phẩm chéo AB^AC
cho bạn biết liệu C
"trái" hay "phải" của đường màu đen. Tương tự, sản phẩm chéo AB^CD
cho bạn biết liệu CD
lái "trái" hay "phải" của đường màu đen.
Chúng tôi không thực sự muốn biết liệu nó trái hay phải; tất cả những gì chúng tôi muốn là đảm bảo chúng cùng hướng hoặc ngược chiều, đó là lý do tại sao chúng tôi nhân hai giá trị.
Do đó, mã giả sau đây sẽ hoạt động:
z1 = (xB-xA)*(yC-yA) - (yB-yA)*(xC-xA);
z2 = (xB-xA)*(yD-yC) - (yB-yA)*(xD-xC);
z3 = z1 * z2;
if (z3 < 0)
; /* Pointing towards (BUT maybe even crossing) */
else if (z3 > 0 || z2 != 0)
; /* Pointing away */
else
; /* Parallel */
Tôi sợ rằng tôi cần một chút thời gian để viết một giải pháp thích hợp cho đường cong Bezier. Là tình huống sau đây đối với hoặc đi?
Giả sử điểm bắt đầu là vòng tròn màu xanh lá cây và điểm kết thúc là mũi tên màu đỏ
Tính khoảng cách giữa điểm bắt đầu là DS và đoạn màu đen và thực hiện tương tự cho điểm cuối (mũi tên màu đỏ) là DE. Nếu DS> DE, thì đoạn đang chỉ về phía. nếu DE> DS, nó đang chỉ đi. Nếu cả hai đều bằng nhau, hai là song song.
Bạn có thể tìm cách tính khoảng cách từ một điểm đến một đoạn ở đây và đến một đường cong bậc hai ở đây . Tuy nhiên, tùy thuộc vào hình dạng của đường cong bezier, nó có thể trả về kết quả kỳ lạ (đường cong có thể tự vượt qua)