GLM ile vektör uzunluğunu elde edin


14

GLM kütüphanesinin nasıl davrandığı konusunda oldukça kafam karıştı ya da yanlış kullanıyorum.

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

float len = testVec.length();

2Yukarıdaki kod parçacığı ile değeri alıyorum . Tarafından tanımlanan vektörün uzunluğunu elde etmeye çalıştığımı düşünüyorum testVec. Vektörün doğru uzunluğu olmadığını çok iyi biliyorsunuz. Burada ne eksik?

Yanıtlar:


15

Bu kadar önemsiz bir konu yayınladığım için üzgünüm! Sorun çözüldü. Yanlış işlevi kullanıyordum. İşte doğru olanı:

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

Aynı ismin üye işlevi bunun yerine bileşen sayısını döndürür (yani vec2::lengthher zaman verim verir 2, vec3::lengthher zaman verim verir 3, vb.).


7
Özür dileme, bence bu GLM'nin işlev adlandırmasının burada oldukça yanıltıcı olduğunu görmek adil bir soru. Bunun gelecekte faydalı (ve özlü) bir referans olabileceğini düşünüyorum.
Martin Ender

3
O GLM değil @MartinEnder suçlu kim: GLSL spec var olmaya bu karışıklığı belirler: var length(vecN)ücretsiz normunu dönen fonksiyonu vecNve vecN.length()boyutunu dönen yöntem vecN. Bkz. §5.5 Vektör ve Skaler Bileşenler ve GLSL 4.60 spesifikasyonlarının uzunluğu .
Ruslan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.