Di chuyển một đối tượng trong một đường tròn


26

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:


54

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ínhbá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ị .

mối quan hệ của sin và cosin 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%.)


Nếu đó là một hình bầu dục thì sao? Tức là không đặt bán kính.
kiểm tra

2
@test: Nếu hình bầu dục là hướng X hoặc Y, bạn có thể nhân vị trí trục tương ứng với hệ số bổ sung. Nếu bạn cần thêm chi tiết, bạn nên hỏi một câu hỏi riêng.
Kromster nói hỗ trợ Monica

@Anko: Tôi không nghĩ rằng hoạt hình giải thích nó tốt hơn, nhưng hãy để nó, cho những người cần nó. Chuyển đổi sang CW.
Kromster nói hỗ trợ Monica

@Kromster điều gì về việc đạt được kết quả tương tự trong không gian 3d?
Tomas

14

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 Vòng tròn

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: Tam giác

Bây giờ chúng ta biết rằng cos θ = cơ sở / hypotenusesin = vuông góc / hypotenuse

cung cấp cho chúng tôi cos = x / rsin = 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


2
Cảm ơn, câu trả lời thực sự hay và ngắn gọn cho vấn đề này, đồng ý
Ali.Ghodrat

5

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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.