Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.12.2014, 16:01
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Получить все точки отрезка прямой?
Как получить все точки отрезка прямой (на canvas)?
Известно x1, y1, x2, y2

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

Но не могу понять как получить все точки, если x2 < x1 или y2 < y1

Может как-то через отражение?
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #2 (permalink)  
Старый 21.12.2014, 16:13
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Если я правильно понял задачу, то
http://www.cleverstudents.ru/line_an..._segments.html
__________________
kobezzza
code monkey
Ответить с цитированием
  #3 (permalink)  
Старый 21.12.2014, 16:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Gozar,
нарисовать чёрным по белому на невидимом холсте потом прогнать весь холст записав в массив все точки цвета Black не белые

Последний раз редактировалось рони, 21.12.2014 в 16:17.
Ответить с цитированием
  #4 (permalink)  
Старый 21.12.2014, 16:22
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от рони
нарисовать
похоже на здравствуй тормоза! Идея интересная, но мне нужно то, что kobezzza предлагает. У меня нагруженный алгоритм и мне таких плоскостей придется создавать просто дофига, а это точно тормоза


kobezzza,
Хотелось бы в программном коде, а не геометрии. В алгоритмах куча оптимизаций, а я буду изобретать велосипед.

А по Брезенхему не встречался?

По сути мне нужно достроить между точками прямую, точек у меня таких много и они динамически создаются очень быстро.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.

Последний раз редактировалось Gozar, 21.12.2014 в 16:25.
Ответить с цитированием
  #5 (permalink)  
Старый 21.12.2014, 16:32
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Ну я хз про оптимизации, но есть общая формула:

x / a + y / b = 1


где a и b удаление от начала координат по X и Y, т.е. подставляешь a и b, затем делаешь шаг по X или Y (шаг определяешь сам, например 1px) и вычисляешь второе значение.

Думаю, что есть специальные алгоритмы, но я тут не в теме особо.
__________________
kobezzza
code monkey
Ответить с цитированием
  #6 (permalink)  
Старый 21.12.2014, 16:35
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

kobezzza,
Спасибо за участие, я формулы видел, а потом посмотрел лекцию по графике и понял, что лучше взять готовый алгоритм, с оптимизацией. Нашел тут на каком-то неизвестном языке програ-я написан, ща попробую переписать
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #7 (permalink)  
Старый 21.12.2014, 17:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

мысли вслух любой блок анимации на js выдаст необходимый массив точек --даже точность можно регулировать.
Ответить с цитированием
  #8 (permalink)  
Старый 21.12.2014, 17:35
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от рони
любой блок анимации
У меня нет анимации, зато есть события, которые браузер отлавливает с разрывами, мне нужно соединить точки, где браузер не отлавливает событие перемещения курсора.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #9 (permalink)  
Старый 21.12.2014, 17:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Gozar,
<script>
var x = 5, y = 5, x2 = 2, y2 = -10;
var time = Math.abs(x - x2);
for (var i=0; i<=time; i++)  {
  var delta = i/time ;
  var a =  delta*(x2 - x) + x;
  var b =  delta*(y2 - y) + y;
  document.write([a,b]+"<br>")
}
</script>

Последний раз редактировалось рони, 21.12.2014 в 17:56.
Ответить с цитированием
  #10 (permalink)  
Старый 21.12.2014, 18:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068


<script>
var x = 50, y = 50, x2 = 20, y2 = -10;
var time = Math.max( Math.abs(x - x2), Math.abs(y - y2));//для повышения точности выбираем что сильнее изменилось, для ускорения выбор наоборот min
for (var i=0; i<=time; i++)  {
  var delta = i/time ;
  var a =  delta*(x2 - x) + x;
  var b =  delta*(y2 - y) + y;
  document.write([Math.round(a),Math.round(b)]+"<br>")
}
</script>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по replace. Как заменить все точки в строке? Pluto Общие вопросы Javascript 14 21.04.2017 12:32
Получить координаты курсора в текстовом поле в пикселях prike Events/DOM/Window 4 23.05.2013 04:35
Получить все элементы YISHIMITSY Events/DOM/Window 6 19.02.2010 15:44
Получить все инпуты по заданоой маске nws Общие вопросы Javascript 2 09.09.2009 01:46
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37