我有一个由鼠标单击
canvas
产生的坐标数组。请参考JS fiddle。var pointsArray = [];
通过点击事件,这个数组
被push
了x和y值。
pointsArray.push({x: xVal, y: yVal});
我遍历points数组,并在当前点和前一个点之间画一条线。
function drawPolygon(points) {
//check arguments for null values
if(!points)
return false;
var i;
for(i = 0; i < points.length; i++)
drawLine(points[i-1], points[i]);
//draw the final line
drawLine(points[i-1], points[0]);
}
drawLine看起来像这样:
function drawLine(point1, point2) {
//check arguments for null values
if(!point1 || !point2)
return false;
context.beginPath();
context.moveTo(point1.x, point1.y);
context.lineTo(point2.x, point2.y);
context.stroke();
}
很不幸,根据用户点击的顺序,我可能会有线段相交的情况,这是我不想看到的:http://i.imgur.com/3gaHRTa.png。我该如何解决呢?我的第一反应告诉我要按照从上到下、从左到右的顺序对点进行排序,然后再绘制。
drawPolygon
时,应该是相同的正方形。没有任何点被“删除”。 - Kyle