Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Memutar Titik Mengelilingi Titik Lain dalam 2D ​​Menggunakan Allegro?

Bagaimana untuk Memutar Titik Mengelilingi Titik Lain dalam 2D ​​Menggunakan Allegro?

Barbara Streisand
Lepaskan: 2024-12-09 17:26:20
asal
920 orang telah melayarinya

How to Rotate a Point Around Another Point in 2D Using Allegro?

Memutar Titik Mengenai Titik Lain dalam 2D

Dalam grafik komputer, memutar objek di sekeliling titik tertentu ialah operasi biasa. Dalam kes ini, anda menyasarkan untuk memutar 4 titik sudut kad menggunakan API Allegro. Untuk mencapai matlamat ini, pertimbangkan pendekatan berikut:

旋转点函数

Anda boleh melaksanakan fungsi yang dipanggil rotate_point untuk melaksanakan operasi putaran mengikut cara yang diingini. Ia mengambil parameter berikut:

  • cx dan cy: Koordinat X dan Y bagi titik pangsi
  • angleInRads: Sudut putaran dalam radian
  • p: Titik menjadi diputar

Pelaksanaan:

Fungsi rotate_point terlebih dahulu menolak titik pangsi daripada titik p yang diberi. Ini mengalihkan titik ke asal sistem koordinat. Seterusnya, ia melakukan putaran menggunakan sinus dan kosinus sudut putaran. Akhirnya, ia menambah kembali titik pangsi untuk mendapatkan titik diputar.

Kod:

POINT rotate_point(float cx, float cy, float angleInRads, POINT p)
{
  float s = sin(angleInRads);
  float c = cos(angleInRads);

  // translate point back to origin:
  p.x -= cx;
  p.y -= cy;

  // rotate point
  float xnew = p.x * c - p.y * s;
  float ynew = p.x * s + p.y * c;

  // translate point back:
  p.x = xnew + cx;
  p.y = ynew + cy;

  return p;
}
Salin selepas log masuk

Dengan menggunakan putaran ini pada 4 titik sudut kad, anda boleh membuat poligon berputar yang boleh digunakan untuk pengesanan perlanggaran.

Atas ialah kandungan terperinci Bagaimana untuk Memutar Titik Mengelilingi Titik Lain dalam 2D ​​Menggunakan Allegro?. 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