Dapatkan panjang vektor dengan GLM

14

Saya cukup bingung tentang bagaimana perilaku perpustakaan GLM atau saya menggunakannya dengan tidak benar.

glm::vec2 testVec(6,-4);

float len = testVec.length();

Saya mendapatkan nilai 2dengan potongan kode di atas. Saya percaya saya mencoba untuk mendapatkan panjang vektor yang ditentukan oleh testVec. Anda tahu betul bahwa itu bukan panjang vektor yang benar. Apa yang kulewatkan di sini?

sajis997
sumber

Jawaban:

14

Maaf, orang-orang karena memposting masalah sepele seperti ini! Masalahnya terpecahkan. Saya menggunakan fungsi yang salah. Ini dia yang benar:

glm::vec2 testVec(6,-4);
float len  = glm::length(testVec);

Fungsi anggota dengan nama yang sama mengembalikan jumlah komponen sebagai gantinya (yaitu vec2::lengthakan selalu menghasilkan 2, vec3::lengthakan selalu menghasilkan 3, dll.).

sajis997
sumber
7
Jangan minta maaf, saya pikir ini pertanyaan yang wajar, melihat penamaan fungsi GLM cukup menyesatkan di sini. Saya berharap ini bisa menjadi referensi yang berguna (dan ringkas) di masa depan.
Martin Ender
2
@ MartinEnder bukan GLM yang bersalah: spesifikasi GLSL menentukan kebingungan ini ada: ada length(vecN)fungsi bebas mengembalikan norma vecN, dan vecN.length()metode, mengembalikan dimensi vecN. Lihat §5.5 Komponen Vektor dan Skalar dan Panjang spesifikasi GLSL 4.60.
Ruslan