Поворот многоугольника с координатами

#javascript #rotation #polygon

#javascript #поворот #многоугольник

Вопрос:

Я пытаюсь повернуть многоугольник (3 ребра) (у меня есть координаты ребер). Я использую cos и sin для получения новых координат каждой отдельной точки, но на самом деле это не работает, я понятия не имею, почему.

http://jsfiddle.net/sh3rlock/gqK23/

(m — средняя точка многоугольника, а kr — радиус окружности)

newX = x ((x — m[0]) * c — (y — m[1]) * s) * kr;

newY = y ((y — m[1]) * c (x — m[0]) * s) * kr;

 function drawPlayer(x, y, r, tcolor) {
if (typeof c === "undefined") color = 'rgba(0,0,200,1)';
//canvas.width = canvas.width;

var radians = r * (Math.PI / 180);

var m = getMiddleOfPg([
    [x, y   5],
    [x, y - 5],
    [x   15, y]
]); // Mitte des Polygons
var a = [x, y   5];
var b = [x, y - 5];
var c = [x   15, y];



drawPolygonFromArray([a, b, c], ctx, 'rgba(0,200,0,1)');

var speed = 1;
var right = Math.cos(radians) * 1;
var up = -(Math.sin(radians) * 1);
var x2 = x;
var y2 = y;

var c = Math.cos(radians);
var s = Math.sin(radians);

x = x2;
y = y2   5;

var kr = Math.sqrt((x - m[0]) * (x - m[0])   (y - m[1]) * (y - m[1]));

var ax = x   ((x - m[0]) * c - (y - m[1]) * s) * kr;
var ay = y   ((y - m[1]) * c   (x - m[0]) * s) * kr;

x = x2;
y = y2 - 5;

kr = Math.sqrt((x - m[0]) * (x - m[0])   (y - m[1]) * (y - m[1]));
var bx = x   ((x - m[0]) * c - (y - m[1]) * s) * kr;
var by = y   ((y - m[1]) * c   (x - m[0]) * s) * kr;

x = x2   15;
y = y2;

kr = Math.sqrt((x - m[0]) * (x - m[0])   (y - m[1]) * (y - m[1]));
var cx = x   ((x - m[0]) * c - (y - m[1]) * s) * kr;
var cy = y   ((y - m[1]) * c   (x - m[0]) * s) * kr;
x = x2;
y = y2;


var a = [ax, ay];
var b = [bx, by];
var c = [cx, cy];

drawPolygonFromArray([a, b, c], ctx, tcolor);

drawMiddleOfPg([a, b, c], 'rgba(255,0,0,1)');
//drawMiddleOfPg([[x,y],[x,y-5],[x 15,y]], 'rgba(0,255,0,1)');




//alert(right   " "   up);


cr  = 20;
if (cr > 255) {
    cb  = 20;
    cr = 0;
}
if (cb > 255) {
    cg  = 20;
    cb = 0;
    cr = 0;
}
t = setTimeout(function () {
    drawPlayer(x, y, r   1, 'rgba('   cr   ','   cb   ','   cg   ',1)')
}, 20);
return;
  

Комментарии:

1. Мне кажется, что все работает нормально.

2. riniken.de/Voila/Voila_Capture 2014-06-19_01-33-44_pm.png — Это не меняет его размера…