Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2012, 20:53   #1
zorg-kirill
Пользователь
 
Регистрация: 11.11.2012
Сообщений: 32
По умолчанию Очень сложная задача по програмированию(нужны идеи или алгоритмы)

На трехмерной координатной плоскости заданы координаты сфер (количеством 1-100) и их радиусы, сферы могут пересекаться. Нужно вывести максимальное количество сфер, которые можно пронзить (или коснуться края) лучем, стартующим с точки (0,0,0), и номера этих сфер в любом порядке.
Есть 2 идеи, но их сложно реализовать:
1)перевести сферы в сферическую систему координат, потом спроэцировать ее на плоскость, на ней територию каждой сферы по очереди затемнять к примеру на 1% и потом вывести номера сфер, которые включают в себя самый темный участок;

2)на основе сфер построить конусы, с площадью основы, равной максимальной площади пересечения сферы (тоесть Пи*r*r), а потом найти максимально количество пересекающихся конусов, и вывести ответ.

Если у кого есть идеи реализации или свои методы, прошу помочь)
zorg-kirill вне форума Ответить с цитированием
Старый 11.12.2012, 22:06   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Насколько я понимаю, задача несложная
Carbon вне форума Ответить с цитированием
Старый 12.12.2012, 20:36   #3
zorg-kirill
Пользователь
 
Регистрация: 11.11.2012
Сообщений: 32
Смех

Цитата:
Сообщение от Carbon Посмотреть сообщение
Насколько я понимаю, задача несложная
Ich habe gelernt C++ fur halb Jahr und ich kann nicht mache diese Aufgabe noch.

Последний раз редактировалось zorg-kirill; 13.12.2012 в 00:09.
zorg-kirill вне форума Ответить с цитированием
Старый 12.12.2012, 20:41   #4
Fanyuus
Форумчанин
 
Аватар для Fanyuus
 
Регистрация: 07.05.2011
Сообщений: 169
По умолчанию

а если запустить 3 цикла на 3 плоскости (х, у, z), чтобы они проверяли окружности на "соприкасается с линией или нет"

т.е., представить всё в 2д, получается.
Fanyuus вне форума Ответить с цитированием
Старый 12.12.2012, 21:14   #5
zorg-kirill
Пользователь
 
Регистрация: 11.11.2012
Сообщений: 32
По умолчанию

а проверку как сделать?
zorg-kirill вне форума Ответить с цитированием
Старый 12.12.2012, 21:51   #6
Fanyuus
Форумчанин
 
Аватар для Fanyuus
 
Регистрация: 07.05.2011
Сообщений: 169
По умолчанию

Проверка... так, если прикинуть, сфера это точки на определённом радиусе. То есть, важно, чтобы хотя бы 1 точка совпадала с 1 точкой из линии.
Вопрос, наверное, даже в том: как определить что 2 точки (допустим, луч пересекает сферу) являются точками одной окружности.
ну, получается, надо ещё впихнуть какую-то проверку, на именно "какие точки принадлежат какой окружности".



возникла ещё идея:
сферы же всё равно каким-то условием задаются, а что если при создании сферы сразу же проверять "луч проходит\соприкасается, или нет", тогда и плюсовать "кол-во сфер" будет проще, в смысле проверки.
Fanyuus вне форума Ответить с цитированием
Старый 12.12.2012, 22:06   #7
zorg-kirill
Пользователь
 
Регистрация: 11.11.2012
Сообщений: 32
По умолчанию

не очень подходит(
zorg-kirill вне форума Ответить с цитированием
Старый 13.12.2012, 12:38   #8
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

берем сферу единичного радиуса с центром (0,0,0)
луч на данной сфере есть 1 точка
проекция любой сферы (не содержащей внутри себя центр координат(0,0,0) есть некий "круг" если центр внутри то проекция вся сфера
число сфер "проткнутых" лучом = число кругов включающих точку
максимальное число проткнутых сфер = максимальное число наложений кругов (решается перебором комбинаций сфер/кругов и выбором нужной)

К вопросу о выборе системы координат для расчетов
Цитата:
луч на данной сфере есть 1 точка
у точки есть три декартовых координаты(x,y,z)
и две сферических (третья тоже есть но она =const)
Цитата:
берем сферу единичного радиуса
для проекций сфер тоже можно посчитать.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 13.12.2012 в 12:53.
evg_m вне форума Ответить с цитированием
Старый 13.12.2012, 13:52   #9
zorg-kirill
Пользователь
 
Регистрация: 11.11.2012
Сообщений: 32
По умолчанию

Как проверять/перебирать комбинации наложения кругов?
zorg-kirill вне форума Ответить с цитированием
Старый 13.12.2012, 14:05   #10
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Например, тупо перебрать все пары. Вычислимое условие пересечения пары кругов выводится с помощью ручки и бумаги.
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
очень сложная задача! extrayellow Microsoft Office Excel 1 19.11.2012 22:34
Очень сложная задача! XYLIGAN72 Помощь студентам 8 30.01.2012 14:09
Очень сложная задача на Pascal ABC! d00ker Помощь студентам 8 11.02.2009 22:02
Интересная задача. Нужны идеи ее решения KnDmPetr Паскаль, Turbo Pascal, PascalABC.NET 11 05.03.2008 18:43