2010-05-21 75 views
8

Thực hiện một số công cụ 3D trong wpf- muốn sử dụng thử nghiệm đơn giản hơn để xem mọi thứ có hoạt động không (trước khi chuyển sang đường cong).Tìm tọa độ của một điểm giữa hai điểm?

Câu hỏi cơ bản được đưa ra hai điểm x1, y1, z1 và x2, y2, z2 Tôi đã tính khoảng cách giữa các điểm. Nhưng làm thế nào để tìm tọa độ của một điểm khác (x3, y3, z3) nằm trên đường đó ở khoảng cách nào đó?

I.e. nếu đường của tôi dài 100 từ -50,0,0 đến 50,0,0 thì tọa độ của điểm tại 100 * 0,1 dọc theo đường là bao nhiêu?

Tôi nghĩ đây là một công thức đơn giản nhưng tôi chưa tìm thấy nó ...

Trả lời

12

Đối với mỗi p giữa 0 và 1 thì điều này sẽ cung cấp cho bạn một điểm trên đoạn thẳng:

(x1, y1, z1) + p * ((x2, y2, z2) - (x1, y1, z1)) 
+0

+1. Trong ví dụ, người hỏi đã đưa ra chỉ đơn giản là cho p = 0,1 và điều này dịch độc đáo. Tốt công việc giữ nó đơn giản. –

+1

Điều này cũng rất hữu ích! Vì vậy, để giải quyết cho mỗi điểm của tôi, tôi đã làm: x3 = x1 + p (x2-x1). Lặp lại cho y và z. – Nicros

6

Điều này phải làm với toán học, nhưng ok. Hãy để PQ là hai điểm cho trước và X điểm bạn đang tìm kiếm.

P + r(Q - P) = X 

r cho biết yếu tố.

nếu 0 < r < 1: điểm x sẽ nằm trên đường giữa hai điểm.

Vậy đó!

EDIT:

Để tìm một điểm ở khoảng cách d cho từ P (p1/p2/p3):

d²/euclidian_square_distance(P,Q) = r 

Chèn r trong phương trình nêu trên và bạn sẽ có quan điểm của bạn ! :)

PS: Btw: P-Q = (Px - Qx, Py - Qy, Pz - Qz) ... tôi đặt cược bạn alread biết điều đó :)

+0

Điều này rất hữu ích! – Nicros

+0

@Simon Không phải phương trình là X = P + r (Q-P), tính từ bây giờ khi đặt r = 1, chúng ta nhận được 2P-Q, điều này không đúng. – kkk

+0

@kkk Cảm ơn bạn. Xem chỉnh sửa – Simon

1

Hãy t thay đổi từ 0 đến 1. Sử dụng như sau:

(x3, y3, z3) = (1-t)*(x1, y1, z1) + t*(x2, y2, z2)

Khi t = 0 bạn sẽ có được điểm đầu tiên. Khi t = 1 bạn nhận được thứ hai.

Phương pháp này được gọi là linear interpolation.

+0

Bạn có thể mô tả, sử dụng câu trả lời của bạn, làm thế nào để tìm các điểm phối hợp trung gian. –

0

một đường nối các điểm trong 3d được cho bởi phương trình:

(x - x1)/(x2 - x1) = (y - y1)/(y2 - y1) = (z - z1)/(z2 - z1)

Bạn có các giá trị x1, y1, z1, x2, y2, z2. Điều này sẽ cung cấp cho bạn một phương trình cho dòng.

phương trình khác sẽ

((x-x1)^2 + (y-y1)^2 + (z-z1)^2)^(1/2) = khoảng cách

Giải quyết 2 phương trình để nhận giá trị của các điểm.

Các vấn đề liên quan