За последние 24 часа нас посетили 17587 программистов и 1678 роботов. Сейчас ищут 1920 программистов ...

Сложная таблица с параметрами.

Тема в разделе "Прочие вопросы по PHP", создана пользователем Heathrow Approach, 4 сен 2006.

  1. Heathrow Approach

    Heathrow Approach Активный пользователь

    С нами с:
    4 сен 2006
    Сообщения:
    4
    Симпатии:
    0
    Такой вопрос.
    Есть таблица
    [​IMG]
    Небуду объяснять что это и зачем это нужно - непоймёте :D
    Суть в том, что надо найти значение буквенное из данной высоты превышения аэропорта (вертикальная шкала слева) и из данной температуры в Цельсиях - горизонтальная шкала внизу.
    Что бы было понятно, если превышение 4500 футов и температура 45 градусов Цельсия, то искомый результат - "H".

    Есть ли какой-то способ "заложить" эту таблицу в скрипт?
    Тот вариант что первым приходит на голову займёт жутко большое время.

    Заранее благодарен
     
  2. Belegnar

    Belegnar Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    299
    Симпатии:
    0
    Таблица отдается тебе в каком формате?

    ЗЫ Слона-то он и не приметил. :)
     
  3. Сотомаойор

    Сотомаойор Активный пользователь

    С нами с:
    24 июн 2006
    Сообщения:
    23
    Симпатии:
    0
    А какой вариант приходит в голову первым? :) Дело в том, что мы имеем дело с функцией от двух переменных. Как известно из курса матана, существуют аналитический, графический и табличный способы задания функции. Графический мы видим на рисунке, аналитическим можно пользоваться если известно какое-то правило, по которому паре (Температура, Высота) ставится в соответствие буква. Если правила нету, то остается самый примитивный - табличный, то есть вручную забить в массив (или БД) все возможные варианты.
     
  4. Heathrow Approach

    Heathrow Approach Активный пользователь

    С нами с:
    4 сен 2006
    Сообщения:
    4
    Симпатии:
    0
    Belegnar

    Belegnar, PDF файл.

    Сотомаойор,
    Вот этот способ мне и проходит только в голову, но сложно даже оценить объём такой работы.
     
  5. Сотомаойор

    Сотомаойор Активный пользователь

    С нами с:
    24 июн 2006
    Сообщения:
    23
    Симпатии:
    0
    Почему же... оценить как раз легко :) Если по обоим шкалам шаг сделать 0.1, то эта таблица будет содержать 10800 записей. Если же достаточно будет шага 1, то всего 1080...
     
  6. Heathrow Approach

    Heathrow Approach Активный пользователь

    С нами с:
    4 сен 2006
    Сообщения:
    4
    Симпатии:
    0
    жесть. Получается выхода нет, надо искать другой способ
     
  7. Сотомаойор

    Сотомаойор Активный пользователь

    С нами с:
    24 июн 2006
    Сообщения:
    23
    Симпатии:
    0
    Ну, или тебе нужно описать эти кривые уравнениями... Другого способа (ИМХО) просто не существует.
     
  8. Mavir

    Mavir Guest

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

    Для примера расмотрим область K. Разобьем этоту область на участки, где графики имеют перегибы: 100-120F, 120-170F и 170-190F. И напишем функции для принадлежности точки этой области для каждого участка. А условие простое - Y должно быть больше значения нижней линейной функции и меньше верхней.

    Например, дана точка 115F, 9500FT. Сначала нужно проверить лежит ли точка в заданном тмепературном диапазоне. Если нет, то точка не принадлежит этой области. Дальше выбираем участок. Точка лежит на участке 100-120F. Берем для этого участка уравнение прямой для верхнего предела и для нижнего, подставлям значение и сравниваем с 9500. Если y1<Y<y2, то точка принадлежит этой области.

    Т.е. все сводится к тому, чтобы разбить каждую область на участки, где имеются перегибы прямых и для каждого участка записать функцию для верхнего и нижнего пределов.
     
  9. Heathrow Approach

    Heathrow Approach Активный пользователь

    С нами с:
    4 сен 2006
    Сообщения:
    4
    Симпатии:
    0
    Мужики спасибо. Если получится, обязательно покажу результат!
     
  10. zxcvbop

    zxcvbop Активный пользователь

    С нами с:
    30 авг 2006
    Сообщения:
    26
    Симпатии:
    0
    Адрес:
    Латвия, Рига.
    прсото предположение: а в PHP нету функций которые моглибы узнавать цвет в данной точке? Если есть, то можно закрашивать картинку в разные цвета, находить нужную точку по x, y и в зависимости от цвета определять букву.
     
  11. Raa

    Raa Активный пользователь

    С нами с:
    28 июл 2006
    Сообщения:
    209
    Симпатии:
    0
    Это и есть табличный способ задания функции, который упомянул Сотомаойор :)
    Народ, а чем табличный метод плох? Если массив слишком большой, то действительно можно поработить с картинкой. Получить цвет пикселя - элементарно. Все, что нужно - отмаштабировать и почистить картинку :)
     
  12. Anonymous

    Anonymous Guest

    Raa, возможно, но сдается мне, погрешность не устроит летчиков )))
    [offtop]
    что то меня седня сильно заносит, зря вчера мешал воку с пивом ;) пардон, если был излишне.... [ряд прилагательных]
    [/offtop]
     
  13. Mavir

    Mavir Guest

    Такие вещи надо расчитывать. Хранить все в таблице это не рационально.

    Предложеный мной способ расчета далек от совершенства и только может подходить для данного случая.
    Алгоритм расчета принадлежности точки к многоугольнику можно почитать здесь
    http://algolist.manual.ru/maths/geom/belong/poly2d.php
     
  14. Raa

    Raa Активный пользователь

    С нами с:
    28 июл 2006
    Сообщения:
    209
    Симпатии:
    0
    Ха-ха-ха :)))) Уронил котлету на клавиатуру :)))))

    Ну я так понимаю, что эта функция у парня только в графическом виде. Иначе, наверное, было бы несложно ее запрограммировать :) А если так, то все равно он будет брать приблизительные координаты точек и аппроксимировать. Таким образом неточность будет еще больше. Так что лучше дать программе самой читать картинку. Это вряд ли будет накладно по ресурсам, а так же не займет много времени на реализацию и позволит быстро заменить функцию при необходимости. Конечно, аппроксимировать и подбирать комбинацию линейных функций - это куда более интересное занятие. Только вот если там в функцие будет ошибка - летчики не простят :) А заметить ошибку в логике будет труднее чем карявый пиксель на картинке.
     
  15. Raa

    Raa Активный пользователь

    С нами с:
    28 июл 2006
    Сообщения:
    209
    Симпатии:
    0
    Ну да... Рациональнее переводить функции из графического вида в функцию PHP, внося туда дополнительные погрешности? Не согласен в корне.

    Аффтар? От кудава картинку взял? Признавайся! Из учебника содрал? Или у тебя в тетрадке формулы есть?
     
  16. Anonymous

    Anonymous Guest

    Мне кажется, там полюбому гдето эти формулы быть должны - картинку же люди не от головы рисовали )
     
  17. Mavir

    Mavir Guest

    Погрешностей не будет. Все зависит от точности определения вершин каждого многоугольника. А в табличном или графическом способе погрешность в любом случае будет больше.
     
  18. Raa

    Raa Активный пользователь

    С нами с:
    28 июл 2006
    Сообщения:
    209
    Симпатии:
    0
    Ну а если у него есть функции, то че он спрашивает? Вполне возможно (особенно, судя по виду), что эти картинки строились по известным значениям в некоторых наиболее важных точках. В таком случае я бы просто перерисовал бы картинку заново в графическом редакторе, потому что скан кривой нафик :) И все равно не понимаю я что тут рационального в том, чтобы писать функции. Вопрос еще в том, нужна ли такая точность? Может погрешность исходных данных настолько большая, что вся эта канитель вообще не имеет смысла, и можно было бы ограничиться таблицей 10х10 :) А то расчитаете полет самолета до милиметра, а на него ветер дунет - и на метр вбок ушел. :) Имхо, на самом деле, одному аффтору известно, что ему рациональнее :)
     
  19. Raa

    Raa Активный пользователь

    С нами с:
    28 июл 2006
    Сообщения:
    209
    Симпатии:
    0
    Приколись: открой график и приложи линейку к монитору. Где там прямые линии? Какой-то пьяный дядька рисовал, наверное :)))))

    Ааааффтааааар!!!! Давай теперь объясняй, от куда данные и что они означают! :)