IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> трехмерное пространство, найти радиус
bairt
сообщение 23.04.2006 12:07
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


В трехмерном пространстве задано N шаров. Найти шар минимального радиуса, охватывающий все заданные
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Бравый генерал
сообщение 26.04.2006 15:38
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 39
Пол: Мужской
Реальное имя: Василий

Репутация: -  -2  +


Цитата
lapp, а пост # 15 ты учел ?

smile.gif klem4, ты так сказал, как будто после того поста решение КАРДИНАЛЬНО изменилось. Да, охватывающая сфера должна охватывать сферы, а не их центры, но сам костяк этого алгоритма неверен.
Цитата
Алгоритм, насколько я сейчас понимаю, гораздо сложнее, и к тому же он включает громоздкие математические вычисления.

Во-во!
Цитата
и для наглядности сначала делал с окружностями, типа в 2D

Вобщем, чтобы с тем неправильным алгоритмом было все ясно, вот эта программа - тот же алгоритм только в 2D, чтобы можно было проверить визуально. Бывают конечно случаи, когда охватывающая окружность охватывает ВСЕ окружности, но часто бывает, что сферы "вылазят" за охватывающую сферу, что и доказывает неправильность алгоритма.
Uses
Crt, Graph;

Type
Ball = record
x,y,r: Real
end;

Const
n = 10;

Var
gd,gm: Integer;
i,j,x,y,z: Byte;
b: Array [1..n] of Ball;
l,l0,d,dx,dy,x0,y0: Real;
c: Ball;
ch: char;

Function Ohvat(a,b: Ball): Real;
var
i: Byte;
begin
Ohvat:=sqrt(sqr(a.x-b.x)+sqr(a.y-b.y))+a.r+b.r
end; {Ohvat}

{****************************************************************************}

Begin
Randomize;

for i:=1 to n
do begin
b[i].x:=Random(400)+120;
b[i].y:=Random(300)+90;
b[i].r:=Random(50);
end;

InitGraph(gd,gm,'');

l:=0;
for i:=1 to n-1
do for j:=i+1 to n
do begin
l0:=Ohvat(b[i],b[j]);
if l0 > l
then begin
l:=l0;
x:=i;
y:=j
end
end;
dx:=b[y].x-b[x].x;
dy:=b[y].y-b[x].y;
d:=sqrt(sqr(dx)+sqr(dy));
c.r:=Ohvat(b[x],b[y])/2;
c.x:=b[x].x + (c.r-b[x].r)*(dx/d);
c.y:=b[x].y + (c.r-b[x].r)*(dy/d);

for i:=1 to n
do Circle(Round(b[i].x),Round(b[i].y),Round(b[i].r));
setcolor(2);
Circle(Round(c.x),Round(c.y),Round(c.r));

ReadKey;

CloseGraph
End.


Добавлено позже:

Цитата
Бравый генерал, я сначала пропустил это, а сейчас перечитал и увидел: твое утверждение неверно. Вот опровергающий пример.
Да, прошу прощения, это я не то что-то сказал... smile.gif
(Ой, надо было в предыдущий пост добавить, а я случайно новым отправил.)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
bairt   трехмерное пространство   23.04.2006 12:07
Altair   Есть задача решенная - найти окружность, в которую...   23.04.2006 12:25
volvo   <...>   23.04.2006 12:26
lapp   volvo, давай рассмотрим частный стучай. Две сфер...   23.04.2006 12:45
volvo   Ну, во-первых, не Sqrt(3), а 2*Sqrt(3) Если уже в...   23.04.2006 12:55
lapp   Ну, во-первых, не Sqrt(3), а 2*Sqrt(3) Если уже ...   23.04.2006 12:59
klem4   А есть данные для теста ? А то вот накатал кое что...   23.04.2006 18:25
klem4   В общем вот что пока есть.На соклько я вижу отлича...   23.04.2006 19:36
volvo   klem4, ты, если я не ошибаюсь, решаешь несколько д...   23.04.2006 19:41
klem4   Вот такой вариант ... но опятьже нужен тестовые да...   23.04.2006 20:02
Бравый генерал   :) klem4, как видно из твоего кода, ты находил две...   23.04.2006 23:20
lapp   Наша же задача сводится к задаче "найти окру...   24.04.2006 14:41
volvo   <...>   23.04.2006 23:25
GoodWind   почему-то скрыты... Я тоже не понял почему. Если...   24.04.2006 14:58
klem4   Я скрыл решение просто по тому что оно не верное, ...   25.04.2006 15:41
bairt   а ты можешь выложить результат?   25.04.2006 18:16
klem4   Извини, не понял тебя ...   25.04.2006 19:36
bairt   я про данные она правильно работает? и ты можешь п...   25.04.2006 21:37
klem4   Я же писал, у меня нету нормальных тестовых данных...   26.04.2006 7:02
lapp   Я скрыл решение просто по тому что оно не верное,...   26.04.2006 7:16
klem4   lapp, а пост # 15 ты учел ?   26.04.2006 7:25
bairt   lapp, а пост # 15 ты учел ? тогда можете проверить...   26.04.2006 8:09
lapp   lapp, а пост # 15 ты учел ? Да, klem4, учел. Во...   26.04.2006 13:06
Бравый генерал   :) klem4, ты так сказал, как будто после того пос...   26.04.2006 15:38
klem4   Да, теперь я понял, что был не прав, извиняюсь. И...   26.04.2006 19:40
lapp   Да, теперь я понял, что был не прав, извиняюсь. И...   27.04.2006 13:02
lapp   Выполняю обещанное - публикую анонсированное мной ...   28.04.2006 5:43
lapp   Похоже, я изрядно напугал народ своим ответом... ...   1.05.2006 15:18


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 11:04
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"