Skip to content

Instantly share code, notes, and snippets.

@vanzo16
Forked from yiwenl/glsl-rotation-2d
Created January 23, 2019 11:27
Show Gist options
  • Select an option

  • Save vanzo16/ac1595c29f792fc5e2c94fdec5d8406d to your computer and use it in GitHub Desktop.

Select an option

Save vanzo16/ac1595c29f792fc5e2c94fdec5d8406d to your computer and use it in GitHub Desktop.
vec2 rotate(vec2 v, float a) {
float s = sin(a);
float c = cos(a);
mat2 m = mat2(c, -s, s, c);
return m * v;
}
mat4 rotationMatrix(vec3 axis, float angle) {
axis = normalize(axis);
float s = sin(angle);
float c = cos(angle);
float oc = 1.0 - c;
return mat4(oc * axis.x * axis.x + c, oc * axis.x * axis.y - axis.z * s, oc * axis.z * axis.x + axis.y * s, 0.0,
oc * axis.x * axis.y + axis.z * s, oc * axis.y * axis.y + c, oc * axis.y * axis.z - axis.x * s, 0.0,
oc * axis.z * axis.x - axis.y * s, oc * axis.y * axis.z + axis.x * s, oc * axis.z * axis.z + c, 0.0,
0.0, 0.0, 0.0, 1.0);
}
vec3 rotate(vec3 v, vec3 axis, float angle) {
mat4 m = rotationMatrix(axis, angle);
return (m * vec4(v, 1.0)).xyz;
}
@vanzo16
Copy link
Copy Markdown
Author

vanzo16 commented Jan 23, 2019

pattern rotation

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment