Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Memutar Titik Di Sekitar Titik Lain dalam Ruang 2D?

Bagaimana untuk Memutar Titik Di Sekitar Titik Lain dalam Ruang 2D?

Susan Sarandon
Lepaskan: 2024-12-09 18:21:10
asal
583 orang telah melayarinya

How to Rotate a Point Around Another Point in 2D Space?

Putaran Titik mengelilingi Titik Lain dalam Ruang 2D

Dalam usaha untuk mencipta permainan kad di mana kad dikipas, seorang individu bertemu kesusahan dalam menentukan kad yang terletak di bawah kursor. Kekacauan ini memerlukan cara untuk memutar empat titik bucu kad untuk membentuk poligon untuk pengesanan perlanggaran.

Untuk memudahkan putaran ini, API Allegro menyediakan fungsi yang mudah:

al_draw_rotated_bitmap(OBJECT_TO_ROTATE, CENTER_X , CENTER_Y, X, Y, DEGREES_TO_ROTATE_IN_RADIANS)

Walau bagaimanapun, untuk mengira titik yang diputar secara manual, ia menjadi perlu untuk mencipta fungsi:

POINT rotate_point(float cx, float cy, float angle, POINT p)

di mana (cx, cy) mewakili titik pangsi, sudut menandakan sudut putaran lawan jam, dan p ialah titik asal untuk diputar.

Intipati penyelesaian terletak pada menjalankan langkah-langkah berikut:

  1. Terjemahkan titik kembali kepada asal, menghasilkan p.x -= cx dan p.y -= cy.
  2. Lakukan putaran menggunakan persamaan:

    • xbaharu = p.x * cos(sudut) - p.y * sin(sudut)
    • ynew = p.x * sin(sudut) p.y * cos(sudut)
  3. Terjemahkan titik kembali ke koordinat asalnya melalui p.x = xbaru cx dan p.y = ynew cy.

Dengan menggunakan pendekatan ini, fungsi boleh memutarkan titik dengan berkesan di sekeliling mana-mana titik pangsi pada satah 2D.

Atas ialah kandungan terperinci Bagaimana untuk Memutar Titik Di Sekitar Titik Lain dalam Ruang 2D?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan