Задача о треугольниках

Алгоритмы: от сортировки пузырьком до численных методов

Модераторы: C_O_D_E, DeeJayC

Ответить
scorpi.on
Сообщения: 32
Зарегистрирован: 03 июн 2005, 18:51
Откуда: Могилёв, Беларусь

Помогите пожалуйста.
Даны два треугольника заданные координатами своих точек.
Нужно узнать площадь получившейся фигуры, в результате пересечения треугольников. Площадь может быть и нулевой.
Аватара пользователя
AiK
Сообщения: 2287
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

Тема переехала. Из Паскакаля. Потому что не сезон :)
На самом деле задачка тривиальная. У тебя даны 6 уравнений прямых, решая 9 систем ЛУ с граничными условиями,
находишь все точки пересечения. Если ничего не путаю, то максимум их может быть 6 штук. Полученную фигуру разбиваешь на треугольники, т.е. объединяешь точки пересечения по 3. Находишь площади треугольников и суммируешь. Не забывай о ситуации, когда один треугольник исходный треугольник внутри другого.
Даже самый дурацкий замысел можно воплотить мастерски
scorpi.on
Сообщения: 32
Зарегистрирован: 03 июн 2005, 18:51
Откуда: Могилёв, Беларусь

AiK писал(а):Тема переехала. Из Паскакаля. Потому что не сезон :)
На самом деле задачка тривиальная. У тебя даны 6 уравнений прямых, решая 9 систем ЛУ с граничными условиями,
находишь все точки пересечения. Если ничего не путаю, то максимум их может быть 6 штук. Полученную фигуру разбиваешь на треугольники, т.е. объединяешь точки пересечения по 3. Находишь площади треугольников и суммируешь. Не забывай о ситуации, когда один треугольник исходный треугольник внутри другого.
Вам легко говорить. И недо делить ни на какие треугольники. Можно просто найти площадь получившегося многоугольника.
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

AiK писал(а):находишь все точки пересечения. Если ничего не путаю, то максимум их может быть 6 штук
А если одна сторона - (частично) общая? :-)
scorpi.on писал(а):Вам легко говорить. И недо делить ни на какие треугольники. Можно просто найти площадь получившегося многоугольника.
Да ну? Можно просто найти площадь произвольного многоугольника (12-угольника, в худшем случае) по всем его точкам?

А формулу можно посмотреть? ))
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

Так, я вижу 7 случаев.

Изображение

Как их распознать:

1. Исключаем первые три случая
2. Ищем точки пересечения

3. Если точек пересечения - две
3а. Внутри одного лежит одна точка: Суммируем площадь двух, отнимаем площадь маленького (случай 4)
3б. Если внутри две точки: Площадь внешнего плюс площадь маленького (случай 5)

4. Если четыри точки пересечения (случай 6): Если есть формула произвольного четырёхугольника - используем её, если нет - делим на два треугольника и получаем площадь внутреннего четырёхугольника. Суммируем площадь двух треугольников и отнимаем площадь полученого четырёхугольника.

5. Если точек пересечения - 6 (случай 7) Площадь одного треугольника, плюс площадь трёх маленьких треугольничков

6. Исключительная ситуация: Если я чего-то не учёл :D
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

Блин, хорошая, ведь задачка ....

Изображение

7. Случай 8 - частный случай от 5-ого, но не вздумать его исключать, как третий
8. Случай 10 - частный случай от 6-го, но точек пересечения всего три
9. Случай 12 - частный случай от 4-го
10. Случай 13, обратить внимание, если есть одна общая точка.

11. Случаи 9 и 11.
Совершенно особые случаи. В одинадцатом площадь одного, плюс площади двух маленьких
в девятом - делить на треугольники и суммировать ...

Хм .... Задумаешься тут .... Как бы это всё оптимизировать.
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

блин классическая задачка - поищи в инете на тему машинная графика.
я дома конспекты порою
реально тебе надо определять точки пересечения двух прямых
а на это есть куча алгоритмовпосле этого можно решать задачу закраски (задача о принадлежности точки к многоугольнику) - количество таких точек и есть площадь
В SAD - все в SAD.
Ответить