Hãy để tôi thử cung cấp cho bạn một cái gì đó ở đâu đó giữa câu trả lời của The Light Spark và câu trả lời của Elliot, bởi vì từ những gì tôi đọc được, bạn thực sự đang tìm kiếm một thuật toán để theo dõi chứ không chỉ là toán học ném vào bạn.
Báo cáo sự cố: Cho rằng bạn có một vị trí A (50, 50)
và một tiêu đề (vì bạn không cung cấp một vị trí, tôi sẽ khẳng định nó là y = 2 * x + 25
), tìm vị trí B (80, 90)
có liên quan đến A
và tiêu đề.
Những gì bạn muốn làm là thực sự khá đơn giản. 1) Di chuyển A
đến nguồn gốc của hệ thống của bạn. Điều này chỉ đơn giản có nghĩa là các A
giá trị cục bộ sẽ là giá trị vị trí toàn cầu trừ đi các giá trị vị trí toàn cầu A
. A
trở thành (0, 0)
và B
trở thành (30, 40)
.
1.1) Tiêu đề cũng cần phải được di chuyển. Đây thực sự là một việc rất dễ thực hiện, bởi vì phần chặn y A
theo thuật ngữ địa phương luôn là 0 và độ dốc sẽ không thay đổi, vì vậy chúng tôi có y = 2 * x
tiêu đề.
2) Bây giờ chúng ta cần căn chỉnh tiêu đề trước với trục X. Vì vậy, làm thế nào để chúng tôi làm điều này? Cách dễ nhất, về mặt khái niệm để làm điều này là chuyển đổi từ tọa độ x, y sang hệ tọa độ cực. Hệ thống tọa độ cực bao gồm R
, khoảng cách đến một vị trí và phi
góc quay từ trục x. R
được định nghĩa là sqrt(x^2 + y^2)
và phi
được định nghĩa là atan(y / x)
. Hầu hết các ngôn ngữ máy tính ngày nay đều đi trước và xác định một atan2(y, x)
chức năng thực hiện chính xác điều tương tự atan(y/x)
nhưng thực hiện theo cách mà đầu ra có xu hướng từ -180 độ đến 180 độ thay vì 0 độ đến 360 độ, nhưng đều hoạt động.
B
do đó trở thành R = sqrt(30^2 + 40^2) = sqrt(2500) = 50
, và phi = atan2(40, 30) = 53.13
theo độ.
Tương tự, tiêu đề bây giờ thay đổi. Điều này hơi khó để giải thích, nhưng bởi vì tiêu đề, theo định nghĩa, luôn đi qua nguồn gốc của chúng tôi A
, chúng tôi không cần phải lo lắng về R
thành phần này. Tiêu đề luôn sẽ theo hình thức phi = C
nơi C
là một hằng số. Trong trường hợp này, phi = atan(2 * x / x) = atan(2) = 63.435
độ.
Bây giờ, chúng ta có thể xoay hệ thống để di chuyển tiêu đề sang trục X của A
hệ thống cục bộ . Giống như khi chúng ta chuyển A
đến nguồn gốc của hệ thống, tất cả những gì chúng ta phải làm là trừ đi phi
tiêu đề khỏi tất cả các phi
giá trị trong hệ thống. Vì vậy, phi
các B
thành 53.13 - 63.435 = -10.305
độ.
Cuối cùng, chúng ta phải chuyển đổi ngược ra khỏi tọa độ cực thành tọa độ x, y. Công thức để thực hiện chuyển đổi đó là X = R * cos(phi)
và Y = R * sin(phi)
. Đối B
do đó, chúng tôi nhận X = 50 * cos(-10.305) = 49.2
và Y = 50 * sin(-10.305) = 8.9
, vì vậy B
trong địa phương-to- A
tọa độ gần (49,9)
.
Hy vọng rằng điều đó sẽ giúp, và đủ nhẹ về toán học để bạn theo dõi.