Может ваше решение в 2000е еще бы казалось бы нормальным, но сейчас есть и технологии и удобные библиотеки для этого. Попробуйте сделать такое на canvas, например, с помощью
paper.js. Если хорошо поискать, наверняка есть хотя бы 50% решение такой задачи.