Canvas рисуем мышкой прозивольную фигуру, как сделать замыкание фигуры если линии пересекаются?

Задача в следующем, пользователь может рисовать произвольную область, но если контур линии пересекается, область должна замыкаться. Пробовал отследить координаты в массиве, и если координаты повторятся, то замкнул бы контур.
Но при движение мыши mousemove координаты могут сразу же повторятся , для этого сделал проверку на несовпадение предыдущих координат линии с последующими, но не все координаты линии поподают в массив.
Но походу в не ту сторону пошел, может кто направит в нужную?
Спасибо.
Пример: https://jsfiddle.net/aleks_664/oLbbh6be/4/
  • Вопрос задан
  • 1659 просмотров
Решения вопроса 1
twobomb
@twobomb
Типа такого?
Проверка пересечения двух линий
function intersection(ax1,ay1,ax2,ay2,bx1,by1,bx2,by2){//true есть пересечение иначе false
var v1,v2,v3,v4;
v1=(bx2-bx1)*(ay1-by1)-(by2-by1)*(ax1-bx1);
v2=(bx2-bx1)*(ay2-by1)-(by2-by1)*(ax2-bx1);
v3=(ax2-ax1)*(by1-ay1)-(ay2-ay1)*(bx1-ax1);
v4=(ax2-ax1)*(by2-ay1)-(ay2-ay1)*(bx2-ax1);
return (v1*v2<0) && (v3*v4<0);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы