За последние 24 часа нас посетили 16158 программистов и 1384 робота. Сейчас ищут 830 программистов ...

Создание подобия системы координат на PHP и MySQL

Тема в разделе "Вопросы от блондинок", создана пользователем Dmitriy A. Arteshuk, 28 авг 2012.

  1. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    изрисовал пол пачки бумаги.....но сегодня видимо "не день бекхема" ))) натолкните на мысль.

    итак, необходимо создать некую виртуальную карту помещения. создается она так: идет тело с фотоаппаратом и через каждые 10 метров (в одном случае это может быть 10, в другом 20, в третьем 45) фоткает вокруг себя в 4 стороны: прямо, направо, налево и назад. Ходит он в каком угодно порядке.

    что мы в итоге получаем:

    допустим он стоит в точке 1

    получается 4 фотки

    .....вперед1
    лево1 1 право1
    .....назад1

    пошел он допустим вперед, получаем следующее

    .....вперед2
    лево2 2 право2
    .....назад2(она же 1 для точки 1)

    так вот, надо как-то в БД их перевязать....что бы находясь в точке один мы могли сделать вперед1 ссылкой, которая указывала бы на то, что впереди точка 2, справа точка N и т.д.

    хрен знает, насколько понятно объясняю....ну может кто делал виртуальную карту чего либо...намекните в какую сторону копать, как делать и т.д....

    СПАСИБО!
     
  2. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Понятно.
    Мне кажется, удобно сделать так же, как теги, отдельная таблица, которая связывает две локации, имеет их id-шники.
    Но т.к. одних id-шников будет не достаточно, чтобы указать, где "вперед", где "влево", то указать ещё и направления
    Код (Text):
    1. id_связи    id_локации1   направление    id_локации2   направление
    2. ---------------------------------------------------------------------------------------
    3. 1            1             влево          2             вправо
    4. 2            1             вперед         3             назад
    Слова "влево", "вперед" и др., конечно, заменить на цифры.
    В БД нужно искать в таблице связей по полям направления движения и по полям "id_локации.."
    Может, не оптимально. Надо ещё подумать.

    Стоишь, например, в локации 2. Нужен список всех ссылок. Ищещь в таблице со связями все записи, в которых есть id 2. Будет максимум четыре записи, в которых будут id связей, направления и id следующих локаций.
     
  3. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    спасибо за ответ. Надо же еще как-то задать систему координат, по идее "сетка" то должна быть бесконечной....

    еще момент...допустим мы стоим в точке 2, фотка вперед у нас есть, а точки вперед уже может не быть, т.е. допустим из точки 2 пошли направо....
     
  4. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Стоим в точке 2, ищем все записи в этой табличке, в которой есть id 2. А нашлась только одна запись (если посмотреть на пример выше).
    В этой записи указаны две ссылки: "влево" ведёт на страницу id 1 (на левой фотке делаем ссылку a href=), "вправо" ведёт на текущую локацию (значит ссылку делать не надо).
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
  6. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    похоже, но мне кажется из пушки по воробьям...или ошибаюсь?
     
  7. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    мужики, есть еще какие мыли....я уж было почти придумал....но вылез еще геморой :)

    если человек пошел назад, то надо не задом шагать, а развернуть его мол он уже передом идет и в другую сторону :) То же самое право лево и т.д. и во всех направлениях
     
  8. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Запоминать поворот. Щелкнул, на левую картинку, запомнил в сессии или в куках, что в этот момент был повернут налево.
     
  9. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    а потом массив пересортировывать видимо нужно...т.е. допустим идем назад, необходимо чтоб картинка, что была назад стала картинкой вперед....

    жесть, бошка уже кругом...ну сука интересно )))
     
  10. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Даже интересно стало, что там трудного. Как-то делал такую "бродилку" на флеше. Отрендерил в 3дс максе панорамы с каждой доступной точки лабиринта, по клику на активные области перемещался. Плюс в таком рендере один - хорошее качество картинок, минус - не играбельно, просто для "поглядеть".

    Добавлено спустя 1 минуту 24 секунды:
    А, вспомнил, не по клику по области, а клавишами перемещался. Следующая локация определялась в зависимости от текущего поворота.

    Добавлено спустя 5 минут 11 секунд:
    Нашел эту флешку, самих рендеров уже нет, но первый кадр есть, он вшит. Приколись http://files.mail.ru/4J7TB0
     
  11. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    да видимо мозгов не хватает :)

    таблица точек

    id forward back right left - forward back right left это адреса картинок впереди сзади сбоков

    таблица связей

    id_point pos point

    id_point - id точки из первой таблицы
    pos - позиция точки point относительно id_point (1234, впереди сзади справа слева.

    все путем, все вроде получается, по карте ходим. научились идти назад лицом вперед :) научились менять лево\право в зависимости от того, идем вперед или назад.

    теперь надо вот чего: развернуться на месте :)

    имеем url /index.html?point_id=3&step=forward#turn

    точка 3, шагали вперед, она крайняя, далее точки нет, думал так:

    Все, приехали, тупик<br /><a href="#turn">Развернуться</a>

    как теперь вот от сюда /index.html?point_id=3&step=forward#turn "дернуть turn???
    Код (Text):
    1. [QUERY_STRING] => point_id=3&step=forward
    2. [REQUEST_URI] => /index.html?point_id=3&step=forward
    Добавлено спустя 10 минут 40 секунд:
    с последним отбой, выкрутился :)
     
  12. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    хм..появилась очередная пичалька :)

    натолкните на мысль как реализовать следующее: есть 4 направления движения: вперед назад вправо влево.

    стоит тело, крутится на месте. Если в направлении, в которое он повернут, есть точка, то соответственно он может на нее перейти.

    как бы мне понять, в какую сторону идет тело? Могу отследить, мол он 2 раза повернулся вправо и пошел, получается что он идет назад!!!

    думал так, задаю направления: вправо +1, влево -1, вперед 0, назад 2.

    Повернулся 2 раза вправо, получаю +1+1 = 2, вот и типа назад...но если он третий раз повернутся вправо, получается уже что пойдет налево....

    Как вообще отслеживается направление перемещения?
     
  13. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Сектора можно обозначить цифрами как 1, 2, 3 и 4. Определить сектор можно, узнав направление в углах: 1, это +-45° от нуля, 2, это +-45° от 90° и т.д.
    Вопрос только, как ты можешь узнать угол? У тебя там скролл картинок или что?
     
  14. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    http://www.gus-info.ru/virt.php

    короче вот почти точная копия того что мне нужно сделать....только я повороты гет параметрами передавал, тут как-то все само ворочается, видимо таблица связей сделана по другому....но как, я пока осилить не могу :(

    я пишу в таблице связей, мол точка 2 впереди относительно точки 1, но это если мы идем вперед...а если назад....получается наоборот....точка 1 впереди точки 2...

    тут либо как-то связи писать по другому, либо как-то следить в какую сторону идет юзер
     
  15. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
  16. Колбася

    Колбася Активный пользователь

    С нами с:
    12 дек 2011
    Сообщения:
    722
    Симпатии:
    0
    прикольно)