#pragma once #include #include using glm::sin; using glm::cos; struct Camera { /* using the math convention of theta = azimuthal */ float theta = glm::radians(90.0f); float phi = 0.0f; /* r always = 1 */ glm::vec3 pos = glm::vec3(0.0f); inline glm::vec3 dir() { return glm::vec3(sin(theta) * cos(phi), cos(theta), sin(theta) * sin(phi)); } inline glm::mat4 view() { return glm::lookAt(pos, pos+dir(), glm::vec3(0.0, 1.0, 0.0)); } };