Показать сообщение отдельно
  #1 (permalink)  
Старый 22.09.2010, 21:00
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

canvas rotate center
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head></head>
<body>
<canvas id="ci" width="80" height="80"></canvas>
<script>
function CanvasCenter(){
var i = new Image();
i.onload = function(){
                            var dl = i.width;
                            var c = document.getElementById("ci").getContext("2d");
                            c.drawImage(i, 0, 0, dl, dl);
                            var beta = -3; //угол поворота, если минус то против часовой
                            var beta = (beta*Math.PI)/360;
                            var l = (Math.sqrt(dl*dl+dl*dl))/2;

                            var gam = Math.PI - ((Math.PI - (beta * Math.PI)/360)/2) - (Math.PI/4);
                            var b = 2*l*Math.sin(beta/2);

                            setTimeout(function(){
                                c.clearRect(0,0,dl,dl);
                                var x = b*Math.sin(gam);
                                var y = b*Math.cos(gam);
                                c.translate(x,-y);
                                c.rotate(beta);
                                c.drawImage(i, 0, 0, dl, dl);
                                c.restore();
                                setTimeout(arguments.callee,10);
                            },0);
}
i.src = "http://javascript.ru/forum/image.php?u=11&dateline=1273676600";
}
CanvasCenter();
</script>
</body></html>

Наклепал тут небольшой код по вращению фотки вокруг своего центра на canvas.
Сразу вопрос, т.к. это первый мой код связанный с canvas, нет ли решения по проще, например указания точки смещения центра?
Если нет то просьба тыкать во все узкие места скрипта. Ну а остальным просто дарю
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.

Последний раз редактировалось Gozar, 24.09.2010 в 09:06.
Ответить с цитированием