3d旋转点坐标计算公式

3d旋转点坐标计算公式  

绕Z轴旋转a度
x1=x*cos(a)-y*sin(a);  
y1=y*cos(a)+x*sin(a);
z1=z;
绕X轴旋转a度
x1=x;
y1=y*cos(a)-z*sin(a);
z1=z*cos(a)+y*sin(a);
绕Y轴旋转a度
x1=x*cos(a)-z*sin(a);
y1=y;
z1=z*cos(a)+x*sin(a);
------------------------------------------------------
实现效果围绕着canvas中心绕Y轴绕圆
// 根据鼠标位置计算旋转角度(速度)
        stage.addEventListener('mousemove', function (x, y) {
            angleY = (y - vpx) * .001;
        });
// 主旋转函数
        function rotateY(ball, angleY) {
            // 把角度三角函数化,以便看起来是绕圆旋转
            var cosy = Math.cos(angleY),
                    siny = Math.sin(angleY),
            // 把 z方向影响算进来
                    y1 = ball.ypos * cosy - ball.zpos * siny,
                    z1 = ball.zpos * cosy + ball.ypos * siny;
            ball.ypos = y1;
            ball.zpos = z1;

            // z坐标扁平化,并赋给小球影响
            var scale = focalLength / (focalLength + ball.zpos);

            ball.x = vpx + ball.xpos * scale;
            ball.y = vpy + ball.ypos * scale;
            ball.width = ballR*2*scale;
        }

展开阅读全文

没有更多推荐了,返回首页