Старый 29.11.2007, 20:59   #61   
взрываю мозг
 
Аватар для SuHar`
 
Сообщений: 3,600
Регистрация: 07.05.2003

SuHar` вне форума Не в сети
Milky Man, Контрпример придумать сможешь?)
  Ответить с цитированием
Старый 29.11.2007, 21:10   #62   
киллер
 
Аватар для Milky Man
 
Сообщений: 3,231
Регистрация: 24.05.2006

Milky Man вне форума Не в сети
Цитата:
Сообщение от Оля-ля
Я имею ввиду не попарное пересечение, а ОБЩЕЕ. Ищем пересечение для кругов С1 и С2, потом пересечение этого пересечения с С3 и т д пока не будет пустое множество или пока не дойдем до Сn. И так по каждой оси.
Зы: черезз полчаса код скину, если не облажаюсь))))
Ну, и что? Ты находишь ПРЯМОУГОЛЬНУЮ ОБЛАСТЬ, в которой присутствуют части всех кругов, но не знаешь - пересекаются ли они ВСЕ там или нет!
Не надо кода... Кодить - это не профессия программиста...
Миниатюры
Нажмите на изображение для увеличения
Название: rounds.gif
Просмотров: 1
Размер:	2.9 Кб
ID:	198411  
  Ответить с цитированием
Старый 29.11.2007, 21:17   #63   
Кроля-ля!
 
Аватар для Оля-ля
 
Сообщений: 979
Регистрация: 09.03.2007
Возраст: 34
Записей в дневнике: 1677

Оля-ля вне форума Не в сети
program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils,Windows,Math;
Const maxN=100;

Type TMas= Array [1..maxN] of real;
{Каждый массив--это набор минимальных и максимальных координат
для каждой из осей Х и У. Индексы соответствуют номеру окружности}
Var minX,minY,maxX,maxY:Tmas;
n:integer;

{Ввод данных}
procedure InputCircle(var n:integer;var minX,minY,maxX,maxY:Tmas);
var x,y,r:real;
i:integer;
begin
writeln('Введи кол-во окружностей(от 0 до MaxN)?');
readln(n);
writeln('ВВоди координаты окружности в порядке: x y r через пробел');
for i:=1 to n do
begin
writeln(i,' круг?:');
readln(x,y,r);
{Заполнение массивов}
minX[i]:=x-r;
maxX[i]:=x+r;
minY[i]:=y-r;
maxY[i]:=y+r;
end;
end;

{Проверка, пересекаются ли координаты окружностей по 1 какой-то оси}
Function IsCross(minMas,maxMas:Tmas):boolean;
var ok:boolean;
low,hi:real;
i:integer;
begin
i:=2;
low:=minMas[1]; {нижняя граница общего отрезка пересечения}
hi:=maxMas[1]; {верхняя граница его же}
ok:=True;
while ok and (i<=n) do
begin
{Рассматриваем очередной круг. Нижнюю грань общего отрезка опре-
деляем как максимум из предыдущей нижней грани и нижней грани
рассматриваемого круга. Верхнюю грань--через минимум.
Если верхняя оказалась за нижней--то нет пересечения. Иначе продолжаем}
low:=max(low,minMas[i]);
hi:=min(hi,maxmas[i]);
if low>hi then ok:=false
else i:=i+1
end;
IsCross:=Ok;
end;


begin
SetConsoleCp(1251);
SetConsoleOutputCp(1251);
InputCircle(n,minX,minY,maxX,maxY);
if IsCross(minX,maxX) {Проверка по Х} and IsCross(minY,maxY) {ПРоверка по У}
then
writeln('пересекаются')
else
writeln('не пересекаются');
readln;
end.
  Ответить с цитированием
Старый 29.11.2007, 21:20   #64   
киллер
 
Аватар для Milky Man
 
Сообщений: 3,231
Регистрация: 24.05.2006

Milky Man вне форума Не в сети
Зачем кодить неправильный алгоритм? Или кодить, по-твоему, сложно? Ты в кодеры готовишься?
Область А удовлетворяет твоим условиям, но ответ будет неверным, потому что три окружности не имеют общих точек пересечения, хотя, по твоим выкладкам, должны.
Миниатюры
Нажмите на изображение для увеличения
Название: rounds2.gif
Просмотров: 2
Размер:	8.4 Кб
ID:	198412  
  Ответить с цитированием
Старый 29.11.2007, 21:20   #65   
взрываю мозг
 
Аватар для SuHar`
 
Сообщений: 3,600
Регистрация: 07.05.2003

SuHar` вне форума Не в сети
Milky Man, Да, действительно... Просто, если рассмотреть твой рисунок, то в зависимости от расположения системы координат условие от Оля-ля может работать, а может и нет.
  Ответить с цитированием
Старый 29.11.2007, 21:22   #66   
киллер
 
Аватар для Milky Man
 
Сообщений: 3,231
Регистрация: 24.05.2006

Milky Man вне форума Не в сети
Оля-ля, пока не научишься на уровне алгоритмов программировать, будешь кодить чужие алгоритмы.
  Ответить с цитированием
Старый 29.11.2007, 21:24   #67   
киллер
 
Аватар для Milky Man
 
Сообщений: 3,231
Регистрация: 24.05.2006

Milky Man вне форума Не в сети
Цитата:
Сообщение от SuHar`
Milky Man, Да, действительно... Просто, если рассмотреть твой рисунок, то в зависимости от расположения системы координат условие от Оля-ля может работать, а может и нет.
Они уже в системе координат - икс внизу, игрек справа, как обычно во всех учебниках по геометрии. Если существует хоть один пример, для которого алгоритм даёт неверное решение, то такой алгоритм - ошибочный. И не важно где и какие системы координат.
  Ответить с цитированием
Старый 29.11.2007, 21:30   #68   
киллер
 
Аватар для Milky Man
 
Сообщений: 3,231
Регистрация: 24.05.2006

Milky Man вне форума Не в сети
Цитата:
Сообщение от SuHar`
Milky Man, Да, действительно... Просто, если рассмотреть твой рисунок, то в зависимости от расположения системы координат условие от Оля-ля может работать, а может и нет.
Зелёными линиями я показал отрезки, которые будут находиться по алгоритму Оля-ля. А - общая область для трёх кругов, в данной системе координат.
  Ответить с цитированием
Старый 29.11.2007, 21:34   #69   
Кроля-ля!
 
Аватар для Оля-ля
 
Сообщений: 979
Регистрация: 09.03.2007
Возраст: 34
Записей в дневнике: 1677

Оля-ля вне форума Не в сети
Ну простите, не буду больше :-[ Признаю свою ошибку.
зы: код, имхо, очевиднее, чем мой расплывчатый русский.
  Ответить с цитированием
Старый 29.11.2007, 21:40   #70   
Кроля-ля!
 
Аватар для Оля-ля
 
Сообщений: 979
Регистрация: 09.03.2007
Возраст: 34
Записей в дневнике: 1677

Оля-ля вне форума Не в сети
А вот подскажите, если аналогичным образом рассматривать не круги, а области их попарного пересечения, то результат тот же будет???
ЗЫ: просто самой интересно стало. В голову ничего лучше не пришло((((
  Ответить с цитированием
Старый 29.11.2007, 21:47   #71   
взрываю мозг
 
Аватар для SuHar`
 
Сообщений: 3,600
Регистрация: 07.05.2003

SuHar` вне форума Не в сети
Оля-ля, Я сначала так и подумал, что ты области рассмотривала)))
Рассмотрим рисунок, который нам предоставил Milky Man. Если система координат расположена стандартно, то такой способ действительно выдаст отрицательный результат. Но если ее определенным образом повернуть, то по этому способу получится, что круги имеют общие точки.
Если меня конечно глазомер не подводит...
  Ответить с цитированием
Старый 29.11.2007, 22:05   #72   
Кроля-ля!
 
Аватар для Оля-ля
 
Сообщений: 979
Регистрация: 09.03.2007
Возраст: 34
Записей в дневнике: 1677

Оля-ля вне форума Не в сети
SuHar`, спасибо большое, разобралась с вашим алгоритмом. )))
зы: не все гениальное просто.....
  Ответить с цитированием
Старый 29.11.2007, 22:07   #73   
киллер
 
Аватар для Milky Man
 
Сообщений: 3,231
Регистрация: 24.05.2006

Milky Man вне форума Не в сети
Цитата:
Сообщение от SuHar`
Оля-ля, Я сначала так и подумал, что ты области рассмотривала)))
Рассмотрим рисунок, который нам предоставил Milky Man. Если система координат расположена стандартно, то такой способ действительно выдаст отрицательный результат. Но если ее определенным образом повернуть, то по этому способу получится, что круги имеют общие точки.
Если меня конечно глазомер не подводит...
Что-то я не понял. Какой способ даст отрицательный результат и куда что надо поворачивать?
Я показал касательными точки, которые будут расматриваться, получилось пересечение трёх областей касательных - область А. Куда что ещё надо поворачивать?
  Ответить с цитированием
Старый 29.11.2007, 22:10   #74   
киллер
 
Аватар для Milky Man
 
Сообщений: 3,231
Регистрация: 24.05.2006

Milky Man вне форума Не в сети
Цитата:
Сообщение от Оля-ля
Ну простите, не буду больше :-[ Признаю свою ошибку.
зы: код, имхо, очевиднее, чем мой расплывчатый русский.
Нет, код не очиведнее. Разбираться в коде дольше, чем в "расплывчатом русском", чтобы понять, что алгоритм неверный.
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind