Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Получить все точки отрезка прямой? (https://javascript.ru/forum/offtopic/52479-poluchit-vse-tochki-otrezka-pryamojj.html)

Gozar 27.12.2014 00:30

Цитата:

Сообщение от nerv_
только для тебя

Цитата:

Сообщение от Gozar
алгоритм

алгоритм != математическая формула

https://ru.wikipedia.org/wiki/%D0%90...8C%D0%B6%D0%BE
https://code.google.com/p/polypuch/s...ier/bezier.cpp
чуешь разницу?

nerv_ 27.12.2014 01:28

Цитата:

Сообщение от Gozar
алгоритм != математическая формула

есть же функции контекста 2д

x^2 quadraticCurveTo()
x^3 bezierCurveTo()

http://learn.javascript.ru/play/pJdbfb

l-liava-l 27.12.2014 02:39

у кого то сегодня будет секс с производными...:)

JsLoveR 27.12.2014 11:43

Самый оптимальный алгоритм построения прямых линий если API не подходит:
1. Не использовать корней.
2. Не использовать операции деления и если возможно минимизировать умножения.
3. Использовать imageData как Aetae говорит, когда надо

Год назад писал рендер толстых полилиний, используя api-заливку и метод lineTo, чтобы получить замкнутую трапецию, мне удалось обогнать api-шный рендер.
Цитата:

Сообщение от Gozar
Меня больше теперь интересует вопрос: как найти координаты всех точек между двух точек кривой Безье

Дед Мороз безьешку 3-го порядка принес:
Поиграться можно тут http://learn.javascript.ru/play/qkbwbb

/* Кубическая кривая Безье */
      
      function bezierCurveTo(p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {
		 /*
		   обычно хватает взять расстояние 2-х конечных точек для интерполяции кривой если точки соединяются отрезком,
		   если же кривая рисуется точками придется брать сумму расстояний всех точек. Но есть и аналитические решения с оптимизированным подходом
		 */	
		var dist = distance(p1x, p1y, p2x, p2y), 
			step = 1 / dist;
		 	_x = p1x, 
			_y = p1y;
		
		for ( var t = 0; t < 1; t += step ) {
			var a = (1-t) * (1-t) * (1-t),
				b = 3 * t * (1-t) * (1-t),
				c = 3 * t * t * (1-t),
				d = t * t * t,
				x = a * p1x + b * p2x + c * p3x + d * p4x,
				y = a * p1y + b * p2y + c * p3y + d * p4y;
			
            //здесь стоит использовать самую оптимальную фун-ю,
            //например, оптимизированный вариант Брезенхема
			drawLineTo(_x, _y, x, y, step);
			
			_x = x;
			_y = y;
		}
	  }

Gozar 27.12.2014 12:13

Цитата:

Сообщение от JsLoveR
Дед Мороз безьешку 3-го порядка принес:
Поиграться можно тут http://learn.javascript.ru/play/qkbwbb

Класс! Спасибо. :D

Цитата:

Сообщение от nerv_
есть же функции

Кэп? Прикинь я ими даже пользоваться умею, но это никаким местом не помогает решать поставленную задачу.
Не догоняешь? Допустим тебе нужно написать текст по кривой безье, например как тут: http://wiki.scribus.net/wiki/images/0/00/Textpath1.jpg как мне поможет функция, которая просто рисует кривую?

nerv_ 27.12.2014 15:44

Цитата:

Сообщение от Gozar
Кэп? Прикинь я ими даже пользоваться умею, но это никаким местом не помогает решать поставленную задачу.
Не догоняешь? Допустим тебе нужно написать текст по кривой безье, например как тут: http://wiki.scribus.net/wiki/images/0/00/Textpath1.jpg как мне поможет функция, которая просто рисует кривую?

конечно "не догоняю". Тут вообще никто не догоняет, что ты сделать хочешь, т.к. ты нам этого не говоришь. Аргументы вроде "мне нужна прямая, вернее не прямая, но нужна" мы уже слышали :)
Вместе с тем ты дико негодуешь, почему мы до сих пор тебя не поняли и не можем прочитать твои мысли.

svg
http://jsfiddle.net/chriswilsondc/4UykA/
http://www.kevlindev.com/tutorials/b.../svg/index.htm

canvas
https://developer.mozilla.org/en-US/...longPath.28.29

Gozar 27.12.2014 16:27

Цитата:

Сообщение от nerv_
ты дико негодуешь

Я пытаюсь понять нафиг ты пишешь в этой теме, если даже не пытаешься её понять?

Мне не нужно писать текст вдоль кривой, это был пример, который как мне тогда подумалось поможет именно тебе понять зачем это нужно, но похоже не получилось. Я не ем суп вилкой, но ты почему-то так считаешь. Давай по другому: нужно написать слово вдоль кривой, но так чтобы одна буква была сверху, а другая снизу, а третья смотрела в другую сторону.

Цитата:

Сообщение от nerv_
вообще никто не догоняет

JsLoveR, прекрасно понял, что нужно. ;)

nerv_ 28.12.2014 00:07

Цитата:

Сообщение от Gozar
Я пытаюсь понять нафиг ты пишешь в этой теме, если даже не пытаешься её понять?

какой вопрос, такой ответ. Постараюсь больше не писать в твоих темах :) ......... в этом году :D

Gozar 28.12.2014 11:00

Цитата:

Сообщение от nerv_
Постараюсь больше не писать в твоих темах

Лучше постарайся сначала понять вопрос. ;)

melky 28.12.2014 14:07

Цитата:

Сообщение от l-liava-l (Сообщение 348515)
у кого то сегодня будет секс с производными...:)

я в своё время трахался с wolfram alpha для производных\первообразных для полиномов третьей степени (кубич. кривые Безье))
вручную это делать - ад


Часовой пояс GMT +3, время: 02:47.