同樣的問題,一種替代解決方案。首先,我使用getImageData數據來查找圍繞精靈的多邊形。這裏要小心,因爲該實現適用於具有透明背景且具有單個實體對象的圖像。像一艘船。下一步是Ramer Douglas Peucker Algorithm以減少多邊形中頂點的數量。我最終得到了一個很少頂點的多邊形,它很容易便宜地旋轉,並檢查每個精靈與其他多邊形的碰撞。
http://jsfiddle.net/rnrlabs/9dxSg/
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
var img = document.getElementById("img");
context.drawImage(img, 0,0);
var dat = context.getImageData(0,0,img.width, img.height);
// see jsfiddle
var startPixel = findStartPixel(dat, 0);
var path = followPath(startPixel, dat, 0);
// 4 is RDP epsilon
map1 = properRDP(path.map, 4, path.startpixel.x, path.startpixel.y);
// draw
context.beginPath();
context.moveTo(path.startpixel.x, path.startpixel.x);
for(var i = 0; i < map.length; i++) {
var p = map[i];
context.lineTo(p.x, p.y);
}
context.strokeStyle = 'red';
context.closePath();
context.stroke();
我無法找到答案,我問這個問題太:( – super 2013-12-26 14:27:38