2010-08-06 35 views
5

Tôi đang cố gắng tìm ra cách để thực hiện điều này. Về cơ bản tôi có điểm A và B mà tôi biết vị trí của. Sau đó tôi có điểm C và điểm D mà tôi chỉ biết tọa độ của C. Tôi biết chiều dài của C-D và biết rằng C-D phải song song với A-B. Làm thế nào tôi có thể nói chung giải quyết cho D cho A, B, C và chiều dài của C-D. Cảm ơnTrợ giúp với vấn đề này?

alt text http://img706.imageshack.us/img706/4494/imgclr.png

+3

nhu cầu "thuộc về mathoverflow" tùy chọn chặt chẽ, mặc dù họ có lẽ muốn chê bai gì bạn đã hỏi một câu hỏi đơn giản như: p – meagar

+1

@meager: Từ những gì tôi đã nhìn thấy, họ sẽ ngừng ngắn lửa nhưng họ cũng có thể là một chút wee. :-) –

+1

Tôi là một lập trình viên tuyệt vời nhưng kỹ năng toán học của tôi luôn là NULL – jmasterx

Trả lời

9

D = C ± (B-A)/| B-A | * | C-D |

Nếu B = A không có giải pháp nào vì đường AB suy giảm đến một điểm và song song của một dòng đến một điểm không được xác định.

Giải thích

(B-A)/| B-A | là một vector hướng của đơn vị chiều dài. Phép nhân theo độ dài | C-D | kết quả trong vector bù trừ thích hợp.

Chỉnh sửa: thay đổi + thành ± để cung cấp cả hai giải pháp. Đã thêm trường hợp tầm thường B = A.

+3

Chính xác. Ngoài ra 'C- (B-A)/| B-A | * | C-D |' là một giải pháp (đi theo hướng ngược lại từ 'C'). – phimuemue

0

Biết vị trí của A & B, bạn có thể dễ dàng tìm thấy độ dài và độ dốc của đường AB.

Để đặt D, bạn cần biết chiều dài và độ dốc của đĩa CD dòng. Bạn đã biết độ dài, và độ dốc của đĩa CD giống với Độ dốc của AB vì chúng là sao.

1

Giới thiệu vector v = Một - B. Hướng này sẽ giống như hướng giữa CD. Do đó D = C + & lambda; v và chúng tôi chỉ cần xác định & lambda ;. Khoảng cách giữa CD được biết, d. Nhưng khoảng cách là d = | D - C | = | C + & lambda; v - C | = | & lambda; | v, trong đó v = | v | có chiều dài v. Vì vậy | & lambda; | = d/v sao cho & lambda; = ± d/v.

FYI, độ dài | u | của một vector u = (x, y) được cho bởi | u | = sqrt (x^2 + y^2), theo định lý Pythagore.

0

T (x) là một dịch vào điểm x

Nếu T (a) = c thì T (b) = d

Về cơ bản, làm việc ra các phong trào yêu cầu để nhận được từ a đến c và áp dụng cùng chức năng cho b.

Chỉnh sửa: Mặc dù về mặt kỹ thuật, từ thông tin bạn cung cấp cho chúng tôi, bạn chỉ có thể tính hai vị trí khác nhau cho d, không phải một. Biết chiều dài là không đủ - d có thể là hai bên của c.

3

Câu trả lời này tương tự như một số câu trả lời khác nhưng tôi nghĩ giải thích toán học nhiều hơn và cho phép bạn kết hợp nó vào một chương trình dễ dàng hơn.

Bạn có thể tìm thấy độ dốc của đường "đã biết" bằng cách thực hiện (Ay-By)/(Ax-Bx) (trong đó Ay là toạ độ y của A, v.v.). Cho phép chỉ gọi số này M vì nó hoàn toàn có thể tính toán được.

Nếu hai dòng song song với nhau thì bạn có thể làm việc ra các gradient của đầu dây bên kia trong cùng một cách:

Gradient = (Cy-Dy)/(Cx-Dx) = M

nào sắp xếp lại để (Cy-Dy) = M*(Cx-Dx)

Chúng tôi cũng biết rằng C->D là một chiều dài nhất định (cho phép gọi nó là L). Vì vậy, chúng ta có thể nói

(Cy-Dy)^2+(Cx-Dx)^2 = L^2 

Sử dụng phương trình dốc, chúng ta có thể thay thế để có được:

(M^2+1)(Cx-Dx)^2 = L^2 

Với chúng tôi biết những gì M, L và Dx là chúng ta có thể dễ dàng giải quyết này:

Cx = ((L^2)/(M^2+1))^0.5 + Dx 

sau đó chúng ta có thể sử dụng giá trị này của Cx cùng với một trong hai phương trình (Gradient có lẽ là dễ nhất) để có được Cy.

Lưu ý rằng phương trình cuối cùng có căn bậc hai có thể dương hoặc âm, do đó bạn sẽ nhận được hai giá trị có thể là Cx và do đó có thể có hai giá trị có thể là Cy. Điều này tương đương với việc di chuyển theo hai hướng đối diện trên đường song song từ D.

Edit:

Như đã đề cập trong ý kiến ​​này sẽ thất bại nếu dòng là dọc (tức là Ax-Bx = 0). Bạn sẽ cần phải đặc biệt trường hợp này, nhưng trong trường hợp này câu trả lời sẽ trở thành một trường hợp tầm thường chỉ cần thêm hoặc trừ chiều dài của bạn từ giá trị của Cy.

+1

Đây là giải pháp rõ ràng hơn. Tuy nhiên nó chỉ hợp lệ cho trường hợp đặc biệt R^2. –

+1

@Peter G .: Điều này đúng. Sơ đồ trên chỉ có trong R^2. ;-) Tôi chủ yếu đặt câu trả lời này xuống vì nếu OP tuyên bố có kỹ năng toán học NULL tôi không chắc liệu anh ta có thể dịch các giải pháp dựa trên vector thành mã nhất thiết hay không. – Chris

+0

Vâng, hầu hết các hình ảnh PNG đều bằng phẳng ... Nhưng nội dung của hình ảnh có thể rất tốt bằng hình ảnh trong R^3. –

0

Có hai công thức áp dụng tại đây.

Đầu tiên là độ dốc (tăng trên chạy), trong đó = (Yb-Ya)/(Xb-Xa) cũng như (Yd-Yc)/(Xd-Xc) do các đoạn thẳng song song.

Thứ hai là định lý pythagore, L^2 = (Xd-Xc)^2 + (Yd-Yc)^2, trong đó L là chiều dài của C-D.

Đại diện dốc như m và giải quyết các phương trình cho điểm D's X và Y giá trị sản lượng (tôi nghĩ) hai công thức:

Xd = Xc + (L^2/(1 + m^2))^0.5

yd = Yc + m (Xd - Xc)