我一直很难让一组矩形面对画布块上的某个点。我正在遍历一组点,并绘制矩形,它们应该都面向某个点。
首先我设置了半径、焦点和矩形
var Angle = Math.PI;
_.each(Points, function(Point) {
var Radius = 10;
var Focus = {
X: 500,
Y: 1000
}
var Rect = [
{
X: (Point.X - Radius/2),
Y: (Point.Y - Radius/2)
},
{
X: (Point.X + Radius/2),
Y: (Point.Y - Radius/2)
},
{
X: (Point.X + Radius/2),
Y: (Point.Y + Radius/2)
},
{
X: (Point.X - Radius/2),
Y: (Point.Y + Radius/2)
}
];
然后,使用下划线,我遍历并使用我在另一个响应中读到的方法。
var index = 0;
_.each(Rect, function (V) {
var dx2 = Focus.X - V.X;
var dy2 = Focus.Y - V.Y;
var dx2_ = dx2 * Math.cos(Angle) - dy2 * Math.sin(Angle);
var dy2_ = dy2 * Math.sin(Angle) + dy2 * Math.cos(Angle);
V.X = dx2_ + V.X;
V.Y = dy2_ + V.Y;
Rect[index] = V;
index++;
});
然后将其全部设置在正常的画布中。上下文和填充样式是预先定义的。
ctx.beginPath();
ctx.moveTo(Rect[0].X, Rect[0].Y);
ctx.lineTo(Rect[1].X, Rect[1].Y);
ctx.lineTo(Rect[2].X, Rect[2].Y);
ctx.lineTo(Rect[3].X, Rect[3].Y);
ctx.lineTo(Rect[0].X, Rect[0].Y);
ctx.fill();
});
这些是初始方块(每个循环没有旋转)
无旋转
这就是我得到的(似乎矩形是围绕该点旋转而不是向该点旋转)
我试图得到的行为是让它们面向底部中间。(500,1000) 如果画布是 1000x1000。
JSFiddle:http: //jsfiddle.net/nmartin413/cMwTn/7/
我无法终生弄清楚出了什么问题。如果有什么让你印象深刻的,请告诉我:)。很抱歉这个问题很长,但这真的让我很沮丧。
提前致谢!