Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
http://javascript.ru/forum/offtopic/...tml#post347499 http://javascript.ru/forum/offtopic/...tml#post347501 |
Цитата:
|
|
Цитата:
|
Цитата:
|
Цитата:
Экранная линия, это не одно и тоже, что линия в геометрии. В этом примере http://learn.javascript.ru/play/iMCuR применено сглаживание и на экране визуально может быть кажется и линией, но в действительности это линия и градиенты. Мне нужна только линия в данный момент, сглаживание линии типа lineTo поддерживается современным api, а мне нужно то, что не поддерживается. |
Цитата:
Цитата:
Цитата:
Затем я возьму его же, но расположу перпендикулярно оси X. Метр останется метром. Далее, я расположу его под углом 45 градусов к оси X. Вы хотите сказать, что метр перестанет быть метром? :) Если да, рекомендую проделать вышеизложенное))) upd прямая длинной 137 имеет длину 137 Выше я уже писал, что от зума зависит. Впрочем, это не совсем правильное утверждение))) http://learn.javascript.ru/play/0P9hib --- Что касается Гозара. Я не понял, чего ему надобно. Он говорит получил, что хотел... ну... молодец))) |
Ребят, что вы ерундой занимаетесь) Гозару требовался алгоритм построения линии. Лучше бы рассуждали какой алгоритм самый оптимальный, честное слово;)
|
Цитата:
Цитата:
|
JsLoveR, самый оптимальный - юзануть WebGL и считать на GPU.:)
|
Цитата:
В общем профит должен быть заметно больше чем накладные расходы иначе нет смысла огород городить =). |
Ещё можно координаты в typedArray хранить, тоже какая-никакая оптимизация.)
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
В хроме за 1690 мс. //Это кстати довольно быстро В лисе за 8425 мс. //что очень печалит Но даже такая скорость позволяет мне решать все поставленные задачи, а вот с заливкой произвольных областей, тут реально все плохо. Похоже придется юзать воркеры. |
Цитата:
Цитата:
Чувствуешь разницу: четырехугольник с размытием и координаты всех пикселей, между двумя разными пикселями на экране образующие отрезок. |
публикуй конкретную реализацию конкретной задачи тут похоже будет интересно поковыряться выжимая миллисекунды
|
В лисе ещё asm.js можно попробовать юзануть.
|
Нужны координаты всех точек, образующие кротчайшую непрямую линию, где на каждые 4 пикселя приходиться активных только 2. (Алгоритм Брезенхема)
Цитата:
|
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Gozar, если нужно просчитать, а потом разом отрисовать, то при работе с imageData напрямую должно быть быстро.(посчитал - разом отрисовал). Если нужно постепенно - тоже не всё так однозначно: http://jsperf.com/setting-canvas-pixel (разные ревизии стоит тоже посмотреть) :)
|
Цитата:
Меня больше теперь интересует вопрос: как найти координаты всех точек между двух точек кривой Безье :D Цитата:
|
Цитата:
|
Цитата:
Ну, как бы есть график функции, где на интервалах эта самая функция ведет себя особым образом =) Т.е. тебе надо выделить интервалы и функции для этих интервалов (если рассматривать задачу в общем виде) |
nerv_,
Нужен просто алгоритм построения Безье ;) |
Цитата:
http://learn.javascript.ru/bezier http://www.w3schools.com/tags/canvas_beziercurveto.asp |
Цитата:
Цитата:
https://ru.wikipedia.org/wiki/%D0%90...8C%D0%B6%D0%BE https://code.google.com/p/polypuch/s...ier/bezier.cpp чуешь разницу? |
Цитата:
x^2 quadraticCurveTo() x^3 bezierCurveTo() http://learn.javascript.ru/play/pJdbfb |
у кого то сегодня будет секс с производными...:)
|
Самый оптимальный алгоритм построения прямых линий если API не подходит:
1. Не использовать корней. 2. Не использовать операции деления и если возможно минимизировать умножения. 3. Использовать imageData как Aetae говорит, когда надо Год назад писал рендер толстых полилиний, используя api-заливку и метод lineTo, чтобы получить замкнутую трапецию, мне удалось обогнать api-шный рендер. Цитата:
Поиграться можно тут 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; } } |
Цитата:
Цитата:
Не догоняешь? Допустим тебе нужно написать текст по кривой безье, например как тут: 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 |
Цитата:
Мне не нужно писать текст вдоль кривой, это был пример, который как мне тогда подумалось поможет именно тебе понять зачем это нужно, но похоже не получилось. Я не ем суп вилкой, но ты почему-то так считаешь. Давай по другому: нужно написать слово вдоль кривой, но так чтобы одна буква была сверху, а другая снизу, а третья смотрела в другую сторону. Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
вручную это делать - ад |
Часовой пояс GMT +3, время: 20:26. |