![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
MaXL |
|
|||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 24.10.2005 Где: Владивосток Репутация: нет Всего: 2 |
Всем привет!
Помогите мне, натолкните в правильное направление :-). Я сколько думал, ничего не выходит. Получилось решить только для 0 и 360 градусов. Вот данные:
Это сообщение отредактировал(а) Kuvaldis - 23.12.2006, 00:03 -------------------- MaXL |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 23 Всего: 459 |
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Pete |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 318 Регистрация: 5.1.2006 Где: Москва Репутация: 7 Всего: 12 |
Решить просто, но придется аккуратно рассматривать много возможных ситуаций. Может, есть более элегантное решение...
-------------------- Совет учиться на ошибках других бесполезен; научиться чему-либо можно только на собственных ошибках. (Бернард Шоу) Не откладывай на завтра то, что можешь сделать сегодня. (Пословица) А теперь выпишем точное значение числа пи... (Препод) Жахни, Пендальф! © Гоблин |
|||
|
||||
MaXL |
|
|||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 24.10.2005 Где: Владивосток Репутация: нет Всего: 2 |
Вот именно много различных вариантов. И сам код может разрастись до таких размеров что....
Сейчас делал для угла в 90 градусов, и там получилось окло 10-15 строк. А нужно для всех ![]() Вот уже вторую неделю голову ломаю... -------------------- MaXL |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 24 Всего: 110 |
значит надо сводить одни варианты к другим
![]() честно говоря, не помню, что такое ось ординат, буду предполагать, что горизонтальная если ошибся - просто поменять x на y 1. отсекаем углы > 180: если угол больше 180, значит, область между лучом и положительной частью оси ординат состоит из полуплоскости и сектора с углом < 180 для полуплоскости решаем отдельно (там всё очевидно) для сектора - просто отражаем всю задачу относительно начала координат и решаем 2. отсекаем углы > 90: если угол больше 90, значит наш сектор может быть представлен как объединение двух: с углом 90 и с углом (alpha - 90) (второй меньше 90, т.к. alpha < 180) для "прямоугольного" сектора опять решаем отдельно (опять же очевидно) 3. переносим прямоугольник вверх: если прямоугольник полностью внизу, площадь - 0 если частично, просто отрезаем нижнюю часть (приравниваем её y-координаты 0-лю) дальше уже достаточно просто - рассмотреть три области по горизонтали: 1. луч ниже нижней стороны прямоугольника, эта часть даст 0 2. между сторонами, площадь этой части считаем, как для прямоугольного треугольника 3. над верхней, это - обычный прямоугольник (часть исходного), площадь посчитать просто Добавлено @ 05:09 да, кстати, я предполагал, что для углов > 180 берётся бОльшая часть угла (т.е. по часовой стрелке от положительной части горизонтальной оси к лучу) если нужно в меньшей, то на первом шаге нужно отражать не относительно начала координат, а относительно горизонтальной оси, и угол станет 360-alpha -------------------- qqq |
|||
|
||||
MaXL |
|
||||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 24.10.2005 Где: Владивосток Репутация: нет Всего: 2 |
Ось Y - эта по вертикали
![]() У
да берется большая часть. Я забыл указать, что угол отсчитывается против часовой стрелки. Ну т.е. если угол 90 градусов, то угол будет YOX (O - начала координат). maxim1000, я вот понял, только то что нужно отрезать и для полуплоскости и для сектора находить по разному, а потом просто суммировать. Но вот как найти площадь сектора а если чесно не очень понял ![]()
А вот тут я всё немогу понять, что имеется ввиду ![]() Можно поподробнее? ![]() -------------------- MaXL |
||||
|
|||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 24 Всего: 110 |
т.е. по первым трём пунктам вопросов нет, только по последней стадии?
надо нарисовать прямоугольник, луч и ось продолжить горизонтальные (ну всё-таки пока продолжу для оси X) стороны прямоугольника до прямых найти точки пересечения луча с верхней и с нижней сторонами для верхней точка будет правее (специально для этого был второй пункт) потом разбиваем всё это двумя вертикальными прямыми, проходящими через эти две точки, получаем три области, в каждой решаем задачу (там получаются простые фигуры, для которых можно посчитать площадь) -------------------- qqq |
|||
|
||||
Pete |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 318 Регистрация: 5.1.2006 Где: Москва Репутация: 7 Всего: 12 |
Не 105, а 10^5. ![]() Это сообщение отредактировал(а) Pete - 23.12.2006, 21:35 -------------------- Совет учиться на ошибках других бесполезен; научиться чему-либо можно только на собственных ошибках. (Бернард Шоу) Не откладывай на завтра то, что можешь сделать сегодня. (Пословица) А теперь выпишем точное значение числа пи... (Препод) Жахни, Пендальф! © Гоблин |
|||
|
||||
MaXL |
|
|||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 24.10.2005 Где: Владивосток Репутация: нет Всего: 2 |
Да конечно 10^5 ![]() maxim1000, спасибо, вроде бы ход твоих мыслей понял ![]() -------------------- MaXL |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |