rotateX.js
function rotateX(out, a, b, c){
    var by = b[1]
    var bz = b[2]

    // Translate point to the origin
    var py = a[1] - by
    var pz = a[2] - bz

    var sc = Math.sin(c)
    var cc = Math.cos(c)

    // perform rotation and translate to correct position
    out[0] = a[0]
    out[1] = by + py * cc - pz * sc
    out[2] = bz + py * sc + pz * cc

    return out
}
function rotateX(out, a, b, c){
    var by = b[1]
    var bz = b[2]

    // Translate point to the origin
    var py = a[1] - by
    var pz = a[2] - bz

    var sc = Math.sin(c)
    var cc = Math.cos(c)

    // perform rotation and translate to correct position
    out[0] = a[0]
    out[1] = by + py * cc - pz * sc
    out[2] = bz + py * sc + pz * cc

    return out
}
function rotateX ( out , a , b , c ) { var by = b [ 1 ] var bz = b [ 2 ] // Translate point to the origin var py = a [ 1 ] - by var pz = a [ 2 ] - bz var sc = Math . sin ( c ) var cc = Math . cos ( c ) // perform rotation and translate to correct position out [ 0 ] = a [ 0 ] out [ 1 ] = by + py * cc - pz * sc out [ 2 ] = bz + py * sc + pz * cc return out }
Rotate a 3D vector around the x-axis
@param {vec3} out The receiving vec3
@param {vec3} a The vec3 point to rotate
@param {vec3} b The origin of the rotation
@param {Number} c The angle of rotation
@returns {vec3} out
Rotate a 3D vector around the x - axis