Такой вопрос. Есть таблица Небуду объяснять что это и зачем это нужно - непоймёте Суть в том, что надо найти значение буквенное из данной высоты превышения аэропорта (вертикальная шкала слева) и из данной температуры в Цельсиях - горизонтальная шкала внизу. Что бы было понятно, если превышение 4500 футов и температура 45 градусов Цельсия, то искомый результат - "H". Есть ли какой-то способ "заложить" эту таблицу в скрипт? Тот вариант что первым приходит на голову займёт жутко большое время. Заранее благодарен
А какой вариант приходит в голову первым? Дело в том, что мы имеем дело с функцией от двух переменных. Как известно из курса матана, существуют аналитический, графический и табличный способы задания функции. Графический мы видим на рисунке, аналитическим можно пользоваться если известно какое-то правило, по которому паре (Температура, Высота) ставится в соответствие буква. Если правила нету, то остается самый примитивный - табличный, то есть вручную забить в массив (или БД) все возможные варианты.
Belegnar Belegnar, PDF файл. Сотомаойор, Вот этот способ мне и проходит только в голову, но сложно даже оценить объём такой работы.
Почему же... оценить как раз легко Если по обоим шкалам шаг сделать 0.1, то эта таблица будет содержать 10800 записей. Если же достаточно будет шага 1, то всего 1080...
Вот что могу предложить. Границы каждой области можно описать какими-то функциями. Кажется, здесь все линии прямые, поэтому берем линейные функции. Для примера расмотрим область K. Разобьем этоту область на участки, где графики имеют перегибы: 100-120F, 120-170F и 170-190F. И напишем функции для принадлежности точки этой области для каждого участка. А условие простое - Y должно быть больше значения нижней линейной функции и меньше верхней. Например, дана точка 115F, 9500FT. Сначала нужно проверить лежит ли точка в заданном тмепературном диапазоне. Если нет, то точка не принадлежит этой области. Дальше выбираем участок. Точка лежит на участке 100-120F. Берем для этого участка уравнение прямой для верхнего предела и для нижнего, подставлям значение и сравниваем с 9500. Если y1<Y<y2, то точка принадлежит этой области. Т.е. все сводится к тому, чтобы разбить каждую область на участки, где имеются перегибы прямых и для каждого участка записать функцию для верхнего и нижнего пределов.
прсото предположение: а в PHP нету функций которые моглибы узнавать цвет в данной точке? Если есть, то можно закрашивать картинку в разные цвета, находить нужную точку по x, y и в зависимости от цвета определять букву.
Это и есть табличный способ задания функции, который упомянул Сотомаойор Народ, а чем табличный метод плох? Если массив слишком большой, то действительно можно поработить с картинкой. Получить цвет пикселя - элементарно. Все, что нужно - отмаштабировать и почистить картинку
Raa, возможно, но сдается мне, погрешность не устроит летчиков ))) [offtop] что то меня седня сильно заносит, зря вчера мешал воку с пивом пардон, если был излишне.... [ряд прилагательных] [/offtop]
Такие вещи надо расчитывать. Хранить все в таблице это не рационально. Предложеный мной способ расчета далек от совершенства и только может подходить для данного случая. Алгоритм расчета принадлежности точки к многоугольнику можно почитать здесь http://algolist.manual.ru/maths/geom/belong/poly2d.php
Ха-ха-ха ))) Уронил котлету на клавиатуру )))) Ну я так понимаю, что эта функция у парня только в графическом виде. Иначе, наверное, было бы несложно ее запрограммировать А если так, то все равно он будет брать приблизительные координаты точек и аппроксимировать. Таким образом неточность будет еще больше. Так что лучше дать программе самой читать картинку. Это вряд ли будет накладно по ресурсам, а так же не займет много времени на реализацию и позволит быстро заменить функцию при необходимости. Конечно, аппроксимировать и подбирать комбинацию линейных функций - это куда более интересное занятие. Только вот если там в функцие будет ошибка - летчики не простят А заметить ошибку в логике будет труднее чем карявый пиксель на картинке.
Ну да... Рациональнее переводить функции из графического вида в функцию PHP, внося туда дополнительные погрешности? Не согласен в корне. Аффтар? От кудава картинку взял? Признавайся! Из учебника содрал? Или у тебя в тетрадке формулы есть?
Погрешностей не будет. Все зависит от точности определения вершин каждого многоугольника. А в табличном или графическом способе погрешность в любом случае будет больше.
Ну а если у него есть функции, то че он спрашивает? Вполне возможно (особенно, судя по виду), что эти картинки строились по известным значениям в некоторых наиболее важных точках. В таком случае я бы просто перерисовал бы картинку заново в графическом редакторе, потому что скан кривой нафик И все равно не понимаю я что тут рационального в том, чтобы писать функции. Вопрос еще в том, нужна ли такая точность? Может погрешность исходных данных настолько большая, что вся эта канитель вообще не имеет смысла, и можно было бы ограничиться таблицей 10х10 А то расчитаете полет самолета до милиметра, а на него ветер дунет - и на метр вбок ушел. Имхо, на самом деле, одному аффтору известно, что ему рациональнее
Приколись: открой график и приложи линейку к монитору. Где там прямые линии? Какой-то пьяный дядька рисовал, наверное )))) Ааааффтааааар!!!! Давай теперь объясняй, от куда данные и что они означают!