matrix rotations by angle

This commit is contained in:
2019-02-08 12:47:06 -05:00
parent f101bba5aa
commit 16a5e403ce

View File

@@ -66,39 +66,50 @@ struct State {
glm::vec3 stereo(float xi, float nu, float eta) {
auto h = hopf(xi, nu, eta);
auto rot1 = glm::mat4(
glm::vec4(-0.161583, 0.474819, 0.036271, 0.864373),
glm::vec4(0.637664, 0.677328, 0.25526, -0.263578),
glm::vec4(0.392037, 0.015514, -0.914032, 0.103119),
glm::vec4(0.643116, -0.561741, 0.313199, 0.415657)
float xw = 0.8;
float yw = 0.0;
float zw = 2.5;
float xy = 0.0;
float yz = 0.5;
float zx = 0.0;
auto r = glm::mat4(
glm::vec4(cos(xw), 0, 0, sin(xw)),
glm::vec4(0, 1, 0, 0),
glm::vec4(0, 0, 1, 0),
glm::vec4(-sin(xw), 0, 0, cos(xw))
) * glm::mat4(
glm::vec4(1, 0, 0, 0),
glm::vec4(0, cos(yw), 0, sin(yw)),
glm::vec4(0, 0, 1, 0),
glm::vec4(0, -sin(yw), 0, cos(yw))
) * glm::mat4(
glm::vec4(1, 0, 0, 0),
glm::vec4(0, 1, 0, 0),
glm::vec4(0, 0, cos(zw), sin(zw)),
glm::vec4(0, 0, -sin(zw), cos(zw))
) * glm::mat4(
glm::vec4(cos(xy), sin(xy), 0, 0),
glm::vec4(-sin(xy), cos(xy), 0, 0),
glm::vec4(0, 0, 1, 0),
glm::vec4(0, 0, 0, 1)
) * glm::mat4(
glm::vec4(1, 0, 0, 0),
glm::vec4(0, cos(yz), sin(yz), 0),
glm::vec4(0, -sin(yz), cos(yz), 0),
glm::vec4(0, 0, 0, 1)
) * glm::mat4(
glm::vec4(cos(zx), 0, -sin(zx), 0),
glm::vec4(0, 1, 0, 0),
glm::vec4(sin(zx), 0, cos(zx), 0),
glm::vec4(0, 0, 0, 1)
);
auto rot2 = glm::mat4(
glm::vec4(+0.656973, +0.386914, +0.646219, +0.032970),
glm::vec4(-0.459722, +0.569877, +0.159946, -0.662054),
glm::vec4(-0.268466, -0.653407, +0.675016, -0.212936),
glm::vec4(-0.533824, +0.314007, +0.318080, +0.717815)
);
auto rot3 = glm::mat4(
glm::vec4(0.794847, -0.598309, -0.101081, -0.00544741),
glm::vec4(-0.0472779, 0.0524503, -0.719464, 0.690936),
glm::vec4(0.592606, 0.798574, -0.06232, -0.0849633),
glm::vec4(0.12167, 0.0394918, 0.684308, 0.717888)
);
auto rot4 = glm::mat4(
glm::vec4(-0.362372, 0.701484, 0.304057, 0.533071),
glm::vec4(-0.582584, -0.358701, -0.598223, 0.417213),
glm::vec4(-0.579933, -0.419501, 0.662733, -0.220209),
glm::vec4(0.43928, -0.450868, 0.332376, 0.702342)
);
auto rot = rot2;
auto rot = r;
h = rot * h;
auto s = h.xzy() / (1 - h.w);
auto s = h.xyz() / (1 - h.w);
s /= 2;
@@ -173,21 +184,27 @@ struct State {
inds_wide.clear();
inds_thin.clear();
const float XI_R = 32;
const float ETA_R = 4;
const float XI_R = 24;
const float ETA_R = 5;
const float ETA_BUF = 0;
for (int i = 0; i < XI_R; ++i) {
float xi = 2 * PI * i / XI_R;
for (int j = 0; j <= ETA_R; ++j) {
for (int j = 1; j <= ETA_R - 1; ++j) {
float eta = ETA_BUF + (PI / 2 - 2 * ETA_BUF) * j / ETA_R;
add_ring(verts_wide, inds_wide, xi, eta, .01);
add_ring(verts_thin, inds_thin, xi, eta, .0025);
add_ring(verts_wide, inds_wide, xi, eta, .015);
add_ring(verts_thin, inds_thin, xi, eta, .004);
}
}
add_ring(verts_wide, inds_wide, .001f, .0f, .015);
add_ring(verts_thin, inds_thin, .001f, .0f, .008);
add_ring(verts_wide, inds_wide, .001f, PI / 2 - .0f, .015);
add_ring(verts_thin, inds_thin, .001f, PI / 2 - .0f, .008);
glBindBuffer(GL_ARRAY_BUFFER, vbo_thin);
util::bufferData(GL_ARRAY_BUFFER, verts_thin, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
@@ -296,7 +313,7 @@ void run(State *state, const std::string &title) {
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 4);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
auto window = glfwCreateWindow(1280, 720, title.c_str(), nullptr, nullptr);
auto window = glfwCreateWindow(3840, 1249, title.c_str(), nullptr, nullptr);
if (!window) {
glfwTerminate();
exit(EXIT_FAILURE);