Я рисую рукопашные удары на моем полотне с кодом, как показано ниже. Мне нужно проверить, насколько большая часть холста покрыта штрихами. Что это хороший способ проверить это? Единственное, что я могу придумать, - подсчитать количество пикселей, которые имеют определенный цвет при событии мыши. Но он хромой, потому что он медленный ...как рассчитать площадь окрашенной области?
Любая помощь?
$(document).ready(function(){
var draw = false;
var x_prev = null, y_prev = null;
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
canvas.mousedown(function(e){
draw = true;
x_prev = e.pageX - this.offsetLeft;
y_prev = e.pageY - this.offsetTop;
});
window.mouseup(function(){draw=false});
canvas.mousemove(function(e){
if(draw){
context.beginPath();
context.moveTo(e.pageX - this.offsetLeft, e.pageY - this.offsetTop);
context.lineTo(x_prev, y_prev);
context.stroke();
context.closePath();
x_prev = e.pageX - this.offsetLeft;
y_prev = e.pageY - this.offsetTop;
}
});
Насколько толстой является линия? Кроме того, вы учитываете сглаживание? – Blender
произвольно толстый. но толщина жестко закодирована. Мне все равно, о сглаживании, мне просто нужно что-то, что дает мне хорошее приближение. это для игры, и мне не нужна высокая точность. – akonsu
Как вы собираетесь обрабатывать перекрытия строк? Вы могли бы просто использовать 'area + = толщина * sqrt ((e.pageX - this.offsetLeft - x_prev)^2 + (e.pageY - this.offsetTop - y_prev)^2);', но это не учитывает линии, которые пересекаются. – Blender