Транспортная задача (графы)
Нужно реализовать следующий функционал:
1. Графический редактор, позволяющий создавать план дома / коттеджа. 2. Решение для созданного плана транспортной задачи - то есть нахождение оптимальной траектории (самой короткой, но при этом удовлетворяющей некоторым условиям). Сейчас вопрос насчет первой части - как это реализовывать? Самая первая идея - сделать таблицу в html, в которой каждая ячейка - это квадратный метр дома, а рамки ячейки - стены. Соответственно по кликам на рамки нужно менять их статус, но вроде такое не реализуется в javascript. Тогда вторая идея - каждый элемент плана представлять в виде ячейки таблицы. Итого получается несколько возможных представлений - точка, вертикальная линия, горизонтальная линия и пустая ячейка. Но при этом html код разростается до ужасных размеров. Для примера я сделал план размером 2*2 - http://forumcatalog.ru/d/ - наведите мышкой на "стены", они изменят цвет (это только для наглядности). Так как же мне быть? Каким способом реализовать? Или лучше вообще использовать другой язык программирования? |
Вообще для рисования предусмотрены такие вещи как canvas, vml, svg.
|
С canvas я уже работал в принципе, но это не то. Нужно максимально упростить задачу составления плана, то есть в идеале чтобы был кликовый интерфейс - кликнул на рамку, она обозначилась как стена ну и т.д.
Но на всякий случай сейчас почитаю документацию, спасибо за ответ. |
Поясню: мне не только нарисовать надо, мне надо передать полученные данные в php-обработчик для дальнейшей работы с задачей. То бишь вариант "просто нарисовать" не подходит, тут вообще можно не рисовать, а просто кликая на переключатели переставить их в нужные состояния.
Насчёт vml - не подходит, ибо у меня линукс. Насчёт svg - не подходит, ибо это значительно усложнит задачу (придется работать с xml, который еще и построить надо с помощью графического редактора). |
Если у вас будут только горизонтальные и вертикальные линии, то можно попробовать строить все блоками с абсолютным позиционированием. Но такие планы обычно для типовых квартир.
Вообще не очень понятна идея того что вы хотите сделать. |
Нужно составить план коттеджа и отметить на нём две точки - точка, куда подводится кабель и точку, которую к нему надо подключить. Далее нужно найти оптимальную траекторию такого подключения, учитывая, что она должна быть минимально возможной длины и не может проходить сквозь некоторые конструкторские элементы (например, окна).
|
А на сам план то можно посмотреть ?
|
План - динамическая часть, ее нужно вводить в программу. То бишь нет какого-то определенного заданного плана - при каждом сеансе работы со скриптом пользователь составляет новый план, а затем расчет ведется уже с этим планом.
|
Мне кажется вам стоит как раз начать с того чтобы найти какой-нибудь план, какого-нибудь дома. То есть поставить себя на место того самого пользователя, а то так получается что вы пытаетесь сделать то что сами не очень понимаете. Я хочу сказать, что в плане могут быть не только вертикальные и горизонтальные линии, но и наклонные. Поэтому все таки прийдеться использовать canvas и vml ... либо же есть такая библиотека "рафаель" вроде ... она как раз обьединяет в себе и то и другое. Может так же стоит посмотреть в сторону flash.
Хотел поинтересоваться почему вы хотите производить расчеты на стороне сервера? |
Цитата:
|
Часовой пояс GMT +3, время: 06:46. |