Skip to content

Instantly share code, notes, and snippets.

@sketchpunk
Created January 24, 2021 01:28
Show Gist options
  • Save sketchpunk/55433272a47c86a7719b55406cbd843b to your computer and use it in GitHub Desktop.
Save sketchpunk/55433272a47c86a7719b55406cbd843b to your computer and use it in GitHub Desktop.
Rotate 3D Vertices by 90 degree increments without the need of Trig, Quaternions or Matrices
class VRot90{
// #region SINGLE AXIS ROTATION
static xp( v, o ){ let x = v[0], y = v[1], z = v[2]; o[0] = x; o[1] = -z; o[2] = y; return o; } // x-zy rot x+90
static xn( v, o ){ let x = v[0], y = v[1], z = v[2]; o[0] = x; o[1] = z; o[2] = -y; return o; } // xz-y rot x-90
static yp( v, o ){ let x = v[0], y = v[1], z = v[2]; o[0] = -z; o[1] = y; o[2] = x; return o; } // -zyx rot y+90
static yn( v, o ){ let x = v[0], y = v[1], z = v[2]; o[0] = z; o[1] = y; o[2] = -x; return o; } // zy-x rot y-90
static zp( v, o ){ let x = v[0], y = v[1], z = v[2]; o[0] = y; o[1] = -x; o[2] = z; return o; } // y-xz rot z+90
static zn( v, o ){ let x = v[0], y = v[1], z = v[2]; o[0] = -y; o[1] = x; o[2] = z; return o; } // -yxz rot z-90
// #endregion
// #region COMBINATIONS
static xp_yn( v, o ){ let x = v[0], y = v[1], z = v[2]; o[0] = -y; o[1] = -z; o[2] = x; return o; } // -y-zx rot x+90, y-90
static xp_yp( v, o ){ let x = v[0], y = v[1], z = v[2]; o[0] = y; o[1] = -z; o[2] = -x; return o; } // y-z-x rot x+90, y+90
static xp_yp_yp( v, o ){ let x = v[0], y = v[1], z = v[2]; o[0] = -x; o[1] = -z; o[2] = -y; return o; } // -x-z-y rot x+90, y+90, y+90
static xp_xp( v, o ){ let x = v[0], y = v[1], z = v[2]; o[0] = x; o[1] = -y; o[2] = -z; return o; } // x-y-z rot x+90, x+90
// #endregion
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment