รับความยาวเวคเตอร์ด้วย GLM


14

ฉันค่อนข้างสับสนเกี่ยวกับวิธีการทำงานของไลบรารี GLM หรือฉันใช้งานไม่ถูกต้อง

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

float len = testVec.length();

ฉันได้รับความคุ้มค่า2จากข้อมูลโค้ดข้างต้น testVecฉันเชื่อว่าฉันกำลังพยายามที่จะได้รับความยาวของเวกเตอร์ที่กำหนดโดย คุณรู้ดีว่ามันไม่ใช่ความยาวที่ถูกต้องของเวกเตอร์ ฉันหายไปนี่อะไร

คำตอบ:


15

ขออภัยผู้ใช้ที่โพสต์ปัญหาเล็กน้อยเช่นนี้! ปัญหาได้รับการแก้ไขแล้ว ฉันใช้ฟังก์ชั่นผิด ที่นี่ถูกต้องไปหนึ่ง:

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

ฟังก์ชั่นสมาชิกของชื่อเดียวกันกลับจำนวนของส่วนประกอบแทน (เช่นvec2::lengthมักจะให้ผลผลิต2, vec3::lengthเสมอจะให้ผลผลิต3ฯลฯ )


7
อย่าขอโทษด้วยฉันคิดว่ามันเป็นคำถามที่ยุติธรรมเพราะการตั้งชื่อฟังก์ชันของ GLM ค่อนข้างทำให้เข้าใจผิดที่นี่ ฉันคาดหวังว่านี่อาจเป็นข้อมูลอ้างอิงที่มีประโยชน์และรัดกุมในอนาคต
Martin Ender

3
@MartinEnder มันไม่ GLM ผู้ที่มีความผิด: ข้อมูลจำเพาะ GLSL ในตัวกําหนดความสับสนนี้จะมีชีวิตอยู่: มีlength(vecN)ฟังก์ชั่นฟรีที่กลับมาเป็นบรรทัดฐานของvecNและวิธีการกลับมิติของvecN.length() vecNดูที่§5.5 เวกเตอร์และส่วนประกอบสเกลาร์และความยาวของข้อมูลจำเพาะ GLSL 4.60
Ruslan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.