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

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

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

3 страниц V  1 2 3 >  
 Ответить  Открыть новую тему 
> Площадь фигуры,образованная окружностями.
Vardes
сообщение 10.11.2005 21:03
Сообщение #1


Пионер
**

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

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


Рассматриваются n лучей,проведённых в плоскости из точки О.Углы между соседними лучами равны 2pi/n.На лучах выбраны точки A1,А2..An и из этих точек как из центров проведены окружности,проходящие через точку O.Необходимо вычислить площадь фигуры,образованную всеми окружностями.
В этом как раз вся и проблема.
Все идеи свои я исчерпал.Если у вас есть свои размышления,прошу напишите их.

Вот рисунок:

М
Сообщения объеденены ... а на следюющий раз знай, что есть кнопака "правка"
klem4



Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 10.11.2005 22:42
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Цитата
.Необходимо вычислить площадь фигуры,образованную всеми окружностями.


А можешь показать где такое есть на твоем рисунке ? Я например не вижу пересечения левой окружности и правой или верхней с нижней ... да и вообще помойму данных маловато для решения...


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 10.11.2005 22:45
Сообщение #3


Гость






To: klem4
А кто тебе сказал "площадь, образованную пересечением всех окружностей"? Найти нужно:
Цитата
площадь фигуры, образованную всеми окружностями.
, а это не одно и то же. Нужна площадь самой фигуры, образованной окружностями...
 К началу страницы 
+ Ответить 
klem4
сообщение 10.11.2005 22:49
Сообщение #4


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Так точно, теперь вижу ... прошу прощения за невнимателность.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Vardes
сообщение 10.11.2005 23:51
Сообщение #5


Пионер
**

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

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


Ну вот в принципе площадь чего надо найти:


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 11.11.2005 17:56
Сообщение #6


Гость






По-моему, классическая задача для метода Монте-Карло... cool.gif
 К началу страницы 
+ Ответить 
Vardes
сообщение 11.11.2005 21:04
Сообщение #7


Пионер
**

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

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


А можно как-то этот метод Монте-Карло пояснить?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 11.11.2005 21:18
Сообщение #8


Гость






Можно... Допустим, у тебя есть прямоугольник, в который полностью помещается твоя фигура, и ты точно знаешь его площадь. Тогда ты генерируешь большое количество случайных точек (чем больше точек - тем точнее результат), точно находящихся внутри прямоугольника, и проверяешь, сколько из них попадают в твою фигуру (зная координаты центров всех окружностей и их радиусы, несложно вычислить, попадает ли заданная точка в фигуру)...

Естественно, что чем больше точек попадут внутрь твоей фигуры, тем ее площадь больше yes2.gif А саму площадь вычисляешь так:
Цитата
S фигуры = S прямоугольника * ({Число попаданий} / {Общее число сгенерированных точек})


(бери число испытаний в районе 500 тыс - 1 млн, и в течении 5-7 секунд получай ответ...)
 К началу страницы 
+ Ответить 
Vardes
сообщение 11.11.2005 22:23
Сообщение #9


Пионер
**

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

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


Тогда у меня возникают такие вопросы,как же мне задать мой прямоугольник,ведь количество лучей у меня не ограничено,и может доходить до 10,15 и т.д.
И ещё,бывет так,что окружности накладывается др. на др.,следовательно точка попадёт и в ту и в др. окружность.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 11.11.2005 22:42
Сообщение #10


Гость






Цитата
как же мне задать мой прямоугольник, ведь количество лучей у меня не ограничено, и может доходить до 10,15 и т.д.
это совершенно безразлично... В любом случае ты ВСЕГДА можешь вычислить самую верхнюю/нижнюю и левую/правую точки фигуры... По ним и строй прямоугольник...
Цитата
И ещё,бывет так,что окружности накладывается др. на др.,следовательно точка попадёт и в ту и в др. окружность.
Нет. Как только точка попала в какую-то окружность, вся дальнейшая работа с этой точкой прекращается, ведь она УЖЕ внутри фигуры, и ты переходишь к следующей точке...

Вот тебе пример (по твоему же рисунку), как выбрать прямоугольник...


Эскизы прикрепленных изображений
Прикрепленное изображение
 К началу страницы 
+ Ответить 
Vardes
сообщение 12.11.2005 0:20
Сообщение #11


Пионер
**

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

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


Тогда получается,что мне надо вводить оси координат,если речь уже заходит о координатах,а как я могу их воодить,если все точки имеют положительное значение.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.11.2005 0:52
Сообщение #12


Гость






To: Vardes
Ну вот скажи мне, что именно тебе не понятно? Какие точки имеют положительное значение? Ты что, не умеешь генерировать отрицательные случайные числа? Кто тебе запрещает их генерировать?

Это первое. А второе, я не говорю о глобальных координатах. Ты вполне можешь принять свою систему координат, в которой точка пересечения осей будет не (0, 0) а, скажем, (100, 100)... Это ничего не меняет. Если ВЕСЬ график начерчен в одной системе координат, результат будет правильным...

Кстати, программа, вычисляющая площадь твоей фигуры (вместе с графическим представлением) занимает меньше 150 строк... blum.gif
 К началу страницы 
+ Ответить 
Vardes
сообщение 12.11.2005 18:29
Сообщение #13


Пионер
**

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

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


Ну вот введу я систему координат,мне необходимо чтобы все лучи выходили из одной точки(это ладно),но и углы между лучами должны быть равными.И ещё,мой препод будет вводить только радиусы этих окружностей(2,3,4 и т.д) и всё,а не координаты центров окружностей.
И генерировать числа я пока тоже не умею,т.к. опыта у меня немного.Ещё пробовал решать эту задачу через центральный угол,найдя его можно пощитать площадь кругового сектора.Рассчитав площадди всех секторов,можно найти площадь и всей фигуры.Вот.
Но тут есть загвоздка,дело в том,что если окружностей много,то происходит большое количество наложений,чуть ли одна не вписывается в др.,поэтому условия все предусмотреть очень сложно. mega_chok.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.11.2005 18:40
Сообщение #14


Гость






To: Vardes
Полярную систему координат еще никто не отменял rolleyes.gif Там как раз очень просто реализовать то, что ВСЕ лучи выходят их одной точки (r = 0), и углы между лучами равны: (Phi изменяется с шагом 360 div n, где n - количество лучей)...

Для того, чтобы узнать координаты центра окружности в полярной СК достаточно на соответствующем луче поставить точку, для которой удаление от центра координат r = {нужный тебе радиус}...

А уже потом, когда у тебя есть все координаты в полярной CK, переводишь их в декартову и делаешь то, что я тебе написал в посте №8.

Кстати, для генерации случайного числа X в интервале -100 .. 100 достаточно сделать
X := Random(201) - 100;
 К началу страницы 
+ Ответить 
Vardes
сообщение 12.11.2005 20:12
Сообщение #15


Пионер
**

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

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


Значит я так понимаю,что радиусы окружности и лучи можно задать таким образом.Где L-это полярная ось,P-центр окружности,и углы.
Вот рисунок:


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Vardes
сообщение 12.11.2005 20:16
Сообщение #16


Пионер
**

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

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


А декартовы координаты тогда можно будет выразить так:x=p*cos угла 360/n;
y=p*sin угла 360/n.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.11.2005 20:22
Сообщение #17


Гость






yes2.gif Правильно понимаешь... Еще какие-то затруднения?
 К началу страницы 
+ Ответить 
Vardes
сообщение 12.11.2005 20:53
Сообщение #18


Пионер
**

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

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


Да,необходимо определить принадлежит ли точка к плоскости какой-то из наших окружностей,чтобы её нам запомнить и разделить потом на общее количество таких точек.
Ещё хотел по-больше узнать о генерации случайного числа x и y:нам надо брать те границы чисел,которыми у нас ограничен прямоугольник.НАпример он у нас ограничен следущими координатами 4 точекsad.gif6,0);(-5,0);(0,4);(0,-7),как тогда нам сгенерировать числа по x и y.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Vardes
сообщение 12.11.2005 21:13
Сообщение #19


Пионер
**

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

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


Цитата
Да,необходимо определить принадлежит ли точка к плоскости какой-то из наших окружностей,чтобы её нам запомнить и разделить потом на общее количество таких точек.

Есть такая идея проверять ту или иную точку,образует ли она радиус вписанной окружности в нашу(конечно же,центр у них должен быть одинаковым)если образует,то мы её запоминаем.


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.11.2005 21:26
Сообщение #20


Гость






To: Vardes
Ты что, издеваешься? Геометрию учил? У тебя есть координаты центра каждой окружности, так? Их радиусы тоже есть, так? Допустим, сгенерировал точку с координатами (point_x, point_y). Дальше - вот так:
i := 1; found := false;
while (i <= n) and not found do begin
if sqrt(sqr(x[i] - point_x) + sqr(y[i] - point_y)) < radius[i] then found := true;
inc(i)
end;
{
если found = true, точка (point_x, point_y) находится
внутри хотя бы одной окружности, иначе - не попадает ни в одну
}

вот и все...
 К началу страницы 
+ Ответить 

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

 



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