Салют! Озадачило руководство онлайн конструктором-рисовалкой аля сильно урезанное мс визио. Рисование/перетаскивание квадратиков, линий, кружочков, их разукрашивание, навешивание кастомных свойств, слои объектов, api по обращению к этому хозяйству.
Нашел несколько вариантов фремворков. Но ни один не предоставляет таких фишек как: разбиение пересекающихся объектов по линиям пересечения (explode) или получения массива точек пересечения нескольких объектов между собой. Может кто подскажет в какую сторону пилить и какую технологию лучше под это дело?
Надо отметить, что у raphaeljs могут наблюдаться проблемы с производительностью, так как он поддерживат старые версии IE, например. И имеет определенную ограниченность функциональности (нет поддержки групп, например).
Пробовали использовать этот фреймворк для создания игры. Когда делали масштабирование, заметили, что графика очень сильно тормозит. Долго думали, в чем же дело. Потом удалили кусок кода из raphaeljs, который выполнял пару-тройку вложенных циклов для пропорционального изменения ширины stroke объектов (чего нам, в принципе, и не надо было делать), и масштабирование начало «летать».
В результате, выпилили raphaeljs полностью. Написали пару простых функций на чистом js. Приложение стало проще, понятнее и быстрее. При этом поддержка браузеров осталась.
Мы тоже сначала боялись писать сами, но потом почитали пару часов код raphael и документацию на MDN ( developer.mozilla.org/en-US/docs/Web/SVG ). Оказалось, все не так сложно.
d3js.org. Если не нужно поддержки IE8 и меньше. Raphaël и D3 — обёртки над SVG. Не забывайте, что SVG — это DOM со всеми вытекающими. Canvas быстрее — но это растровая графика.