Показать сообщение отдельно
  #12 (permalink)  
Старый 21.12.2014, 18:42
Любитель
Отправить личное сообщение для JsLoveR Посмотреть профиль Найти все сообщения от JsLoveR
 
Регистрация: 16.12.2009
Сообщений: 422

Сообщение от Gozar
Допенькал как получить точки прямой по Алгоритму Брезенхема до 45* градусов. Если переставить x и y можно даже получить все точки до 90*.
Данный алгоритм подходит для абсолютно любых линий. Вот можно поиграться в песочнице.

function drawLineTo(x1, y1, x2, y2) {
	var deltaX = Math.abs(x2 - x1),
		deltaY = Math.abs(y2 - y1),
		signX = x1 < x2 ? 1 : -1,
		signY = y1 < y2 ? 1 : -1,
		error = deltaX - deltaY;
		
		setPixel(x2, y2);
		
	while (x1 != x2 || y1 != y2) {
			
		setPixel(x1, y1);
			
		var error2 = error * 2;
			
		if (error2 > -deltaY) {
			error -= deltaY;
			x1 += signX;
		}
			
		if (error2 < deltaX) {
			error += deltaX;
			y1 += signY;
		}
	}
}

Последний раз редактировалось JsLoveR, 21.12.2014 в 18:44.
Ответить с цитированием