Tôi muốn di chuyển một đối tượng (dấu chấm) trong một đường tròn. Tôi nên thay đổi tọa độ X và Y như thế nào để thực hiện điều này?
Tôi muốn di chuyển một đối tượng (dấu chấm) trong một đường tròn. Tôi nên thay đổi tọa độ X và Y như thế nào để thực hiện điều này?
Câu trả lời:
Bạn có thể làm điều đó bằng toán học đơn giản:
X := originX + cos(angle)*radius;
Y := originY + sin(angle)*radius;
(originX, originY) là trung tâm của vòng tròn của bạn. bán kính là bán kính của nó. Đó là nó.
Điều này hoạt động vì sin và cos có liên quan về mặt toán học với vòng tròn đơn vị .
Tín dụng hình ảnh: LucasVB (Công việc riêng) [Miền công cộng], qua Wikimedia Commons . (Thu nhỏ lại tới 70%.)
Bạn có thể sử dụng phương trình tham số như được đánh dấu bởi Krom. Để hiểu lý do tại sao chúng tôi sử dụng công thức này, bạn phải hiểu phương trình là gì. Phương trình này được bắt nguồn từ phương trình tham số của đường tròn .
Xem xét vòng tròn được vẽ với tâm trên gốc (O) như trong sơ đồ bên dưới
Nếu chúng ta lấy một điểm "p" trên chu vi của vòng tròn, có bán kính r.
Đặt góc tạo bởi OP (Origin to p) là θ. Đặt khoảng cách của p từ trục x là y Đặt khoảng cách của p từ trục y là x
Sử dụng các giả định ở trên, chúng ta có được hình tam giác như hình dưới đây:
Bây giờ chúng ta biết rằng cos θ = cơ sở / hypotenuse và sin = vuông góc / hypotenuse
cung cấp cho chúng tôi cos = x / r và sin = y / r
:: x = r * cos và y = r * sin
Nhưng nếu vòng tròn không ở gốc và thay vào đó (a, b) thì chúng ta có thể nói rằng tâm của vòng tròn bị dịch chuyển
một đơn vị tính theo trục x
đơn vị b trong trục y
Vì vậy, để có một vòng tròn như vậy, chúng ta có thể thay đổi phương trình tham số cho phù hợp bằng cách thêm sự dịch chuyển trên trục x và y cho chúng ta các phương trình sau:
x = a + (r * cos θ)
y = b + (r * sin)
Trong đó a & b là tọa độ x, y của tâm đường tròn.
Do đó, chúng tôi tìm thấy x và y tọa độ của điểm trên chu vi của đường tròn có bán kính r
Có một mẹo khác, trong đó bạn sử dụng các công thức sin (x + a) và cos (x + a) và cho phép bạn tính sin (a) và cos (a) - là góc mà bạn muốn di chuyển từ vị trí hiện tại của bạn - chỉ một lần và chỉ cần nhân và bổ sung ở mỗi bước.
sin (x + a) = sin (x) * cos (a) + cos (x) * sin (a), iirc.
Tất nhiên, điều đó giả định vận tốc góc không đổi.
Cảnh giác với độ chính xác số học hạn chế, mặc dù. Tôi đã quan sát thấy trong quá trình chuyển động "tròn" trong quá khứ đã thực hiện theo cách đó sẽ vẽ một đường xoắn ốc do thỉnh thoảng làm tròn xuống lặp đi lặp lại theo thời gian. Có thể cần phải đặt lại vị trí thành (x0, y0) sau mỗi vòng quay.