Создать функцию, помогите

Статус
В этой теме нельзя размещать новые ответы.

phillip

Полезный
Регистрация
4 Сен 2007
Сообщения
411
Реакции
15
Помогите создать функцию
Суть в чем... Есть массив $arr=Array();
Я даю юзеру его заполнять значениями, каждое значение объекта представляет собой массив из двух чисел:
$arr[0][0] = 24 ;
$arr[0][1] = 132 ;
допустим это юзер ввел в первый раз. Далее он вводит еще два числа, и получается
$arr[1][0] = 165 ;
$arr[1][1] = 240;
Затем он вводит еще два числа
$arr[2][0] = 30 ;
$arr[2][1] = 150;
И тут возникает трабла. Последний, красный отрезок накладывается поверх первого зеленого (см. вложение before.jpg).
Задача в том, чтобы при добавлении нового отрезка выполнялась проверка, не накладывается ли он на уже добавленные. И если накладывается, то
должен быть скорректирован так, чтобы не мешался. В нашем примере- при добавлении последнего отрезка он должен автоматически преобразоваться в
$arr[2][0] = 133 ;
$arr[2][1] = 150;
Чтобы получилось то, что на рисунке after.jpg
 

Вложения

  • before.jpg
    before.jpg
    23,4 KB · Просмотры: 7
  • after.jpg
    after.jpg
    21,9 KB · Просмотры: 6
Можно подробнее, что за отрезки? Каким способом они выводятся? Что-то я не понимаю(((
 
каким образом выводятся это не принципиально. Важно то, что юзер добавляет новый отрезок, указывая ему точку начала, и точку конца.
Наша задача- обрезать этот отрезок, если он пересекается с отрезками, введенными до этого
 
каким образом выводятся это не принципиально. Важно то, что юзер добавляет новый отрезок, указывая ему точку начала, и точку конца.
Наша задача- обрезать этот отрезок, если он пересекается с отрезками, введенными до этого

PHP:
$arr[0][0] = 24;
$arr[0][1] = 132;
$arr[1][0] = 165;
$arr[1][1] = 240;
$arr[2][0] = 30 ;
$arr[2][1] = 150;

$range1 = range($arr[0][0], $arr[0][1]);
$range2 = range($arr[2][0], $arr[2][1]);
$arr[2][0] += sizeof(array_intersect($range1, $range2));

Вот пример для сравнения 2х отрезков, далее сам додумаешь.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху