Pixi.js: Mengolah ulang API yang menggunakan radian untuk menggunakan derajat sebagai gantinya

Dibuat pada 30 Jun 2017  ·  10Komentar  ·  Sumber: pixijs/pixi.js

Manfaat yang dinyatakan:

  • Lebih mudah menggunakan API pengguna akhir
  • Lebih mudah untuk memikirkan dan membaca kode pengguna
  • Lebih mudah untuk mempertahankan nilai derajat daripada nilai radian
  • Lebih konsisten dengan berbasis web lainnya, dan mesin 2D lainnya
Stale 🙏 Feature Request

Komentar yang paling membantu

Mungkin seperti Phaser melakukannya? Sudut untuk derajat, rotasi untuk radian.

Semua 10 komentar

Beberapa kontra yang muncul dalam pikiran:

  • fungsi matematika javascript bawaan distandarisasi pada radian
  • fungsi glsl bawaan distandarisasi pada radian
  • radian adalah format yang lebih nyaman untuk menangani beberapa jenis perhitungan (misalnya, saya dapat lerp dari 0-> Math.pi * 2 dan mendapatkan rotasi penuh searah jarum jam.)

Saya orang matematika, dan saya lebih suka menggunakan salah satu derajat baik 0..1 atau 0.512 karena alasan format kegigihan dan shader. Jika Anda menanyakan pertanyaan yang sama dua tahun lalu atau lebih, saya dapat mengatakan bahwa radian lebih baik karena "murni" dalam arti matematika.

Namun, menyimpan 2 x Math.PI dalam file adalah masalah (kegigihan), dan "360" hanya lebih cepat untuk ditulis daripada 2*PI, itu tidak dapat direpresentasikan dengan jelas dalam bentuk biner.

Mesin berbasis flash bekerja sebagian besar dengan derajat:

https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g2d/Sprite.html#getRotation --

http://cocos2d-x.org/docs/programmers-guide/sprite/index.html

http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7def.html

https://www.youtube.com/watch?v=zAsDbHXlFWI

Juga editor seperti Spine bekerja dan menyimpan sudut dalam radian.

Satu hal lagi yang aneh adalah bahwa kami menggunakan SKEW yang merupakan hal desainer grafis dan hanya "(shear.y , -shear.x)" dalam arti matematika, kami mengizinkan kekejian dan memaksa pengguna untuk menggunakan rad pada saat yang bersamaan.

Konfliknya antara "perender tingkat rendah" dan "perender grafis 2d dengan panggung dan dukungan alatnya sendiri", dan saya pikir pixi lebih dekat ke yang kedua.

@englercj Saya harus mengerjakan kode itu juga, saya sudah memiliki sesuatu seperti itu di garpu saya: https://github.com/gameofbombs/gobi/tree/master/src/core/transform
https://github.com/gameofbombs/gobi/blob/master/src/core/math/FlatTransform2d.ts

@mreinstein Saya harus meminta untuk melihat kode itu juga karena Anda tahu sesuatu tentang transformasi pixi ;)

Saran dari @bigtimebuddy & @GoodBoyDigital , buat API dapat dikonfigurasi:

// useDegrees
CONVERSION = Math.PI / 180;

// useRadiens
CONVERSION = 1;

set rotation(rot)
{
    this._rotation = rot * CONVERSION;
}

Mungkin seperti Phaser melakukannya? Sudut untuk derajat, rotasi untuk radian.

@englercj Setuju. Itu cara paling sederhana di sana. Mesin berdasarkan pixi hanya dapat memperbaiki konstanta "KONVERSI" mereka.

@englercj Processing melakukan ini, dan saya pikir ini adalah keputusan desain yang sangat buruk. Itu menyakitkan modularitas. Jika Anda memiliki satu bagian kode yang melakukan sesuatu dengan satu cara dan mencoba menggunakan bagian lain dari kode (mungkin di perpustakaan) yang mengasumsikan cara lain, itu tidak akan berfungsi. Jika Anda memastikan untuk mengatur mode unit sebelum setiap panggilan ke fungsi terkait sudut, maka itu mungkin memastikan kode Anda berfungsi tetapi merusak kode perpustakaan. Dan jika ada bagian dari kode perpustakaan yang menggunakan sudut, haruskah itu mengatur mode sudut? Yang mungkin menjamin karya kode sebagaimana dimaksud namun memecahkan kode pengguna. Ini hampir seperti Dilema Tahanan desain API.

@OSUblake Tampaknya lebih masuk akal. Sementara nama sudut dan rotasi tidak secara eksplisit menunjukkan atau melarang unit, pasti ada asosiasi di sana yang membuat ini lebih masuk akal daripada seperti tebakan 50/50.

Saya pikir angleDeg dan angleRad akan lebih baik. Mengapa tidak membuatnya eksplisit?

Sudut untuk derajat, rotasi untuk radian.

Itu mungkin bagaimana phaser melakukannya tetapi itu tidak disepakati secara universal. rotasi adalah aksi, dan sudut adalah jumlah aksi yang terjadi. Kadang-kadang disebut sebagai "sudut rotasi". Jadi secara teknis sudut atau rotasi dapat kelebihan beban untuk merujuk pada hal yang sama, dan dapat dinyatakan dalam satuan (derajat atau radian.)

Setiap operasi matematika yang melibatkan rotasi jauh lebih mudah dengan radian. Ini benar-benar tidak sulit untuk dipahami; Math.PI berada di tengah lingkaran; Math.PI * 2 adalah rotasi penuh.

Satu-satunya derajat waktu yang tepat adalah saat Anda memaparkan antarmuka pengguna visual kepada orang-orang yang melibatkan rotasi, dan audiens Anda adalah kelompok yang tidak memahami geometri dasar (yaitu, kebanyakan orang.)

Saya mengakui ini adalah pendapat tetapi hanya menggunakan radian. Semua API Matematika dalam javascript beroperasi pada radian, bukan derajat, seperti kebanyakan perpustakaan geometri non-mainan.

Jika kita benar-benar harus mendukung semua orang untuk semuanya maka saya setuju dengan @1j01 untuk membuatnya eksplisit. Mungkin .degrees atau .radians ?

Masalah ini secara otomatis ditandai sebagai basi karena tidak ada aktivitas terbaru. Ini akan ditutup jika tidak ada aktivitas lebih lanjut yang terjadi. Terima kasih atas kontribusi Anda.

Utas ini telah dikunci secara otomatis karena tidak ada aktivitas terbaru setelah ditutup. Silakan buka edisi baru untuk bug terkait.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

samueller picture samueller  ·  3Komentar

courtneyvigo picture courtneyvigo  ·  3Komentar

readygosports picture readygosports  ·  3Komentar

Darker picture Darker  ·  3Komentar

MRVDH picture MRVDH  ·  3Komentar