|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.06.2011, 21:51 | #1 |
Пользователь
Регистрация: 08.06.2009
Сообщений: 15
|
C#.Определить функцию, которая выясняет, пересекаются ли две фигуры
Добрый день! Нужна помощь с написанием программы на С#. Честно говоря, задание поставило меня в тупик...
Пусть есть классы Circle (окружность), Square (квадрат) и Triangle (треугольник), производные от класса Shape. Определите функцию intersect() с двумя параметрами типа Shape, которая вызывает подходящую функцию, чтобы выяснить, пересекаются ли заданные две фигуры. Для этого в указанных классах нужно определить соответствующие виртуальные функции. Кто-то может помочь? |
21.06.2011, 09:08 | #2 |
Форумчанин
Регистрация: 10.06.2010
Сообщений: 239
|
А не проще ли в классе Shape определить функцию, которая сравнивает пересечение двух фигур, чтобы в каждом подклассен этим не заниматься.
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
|
21.06.2011, 10:06 | #3 |
Форумчанин
Регистрация: 10.06.2010
Сообщений: 239
|
Я понял это задание так, но считаю что такая реализация мягко говоря не фонтан.
Класс Triangle я создавать не стал, он делается по образу и подобию двух предыдщих. Инкапсулюцию я тоже делать не стал, т.к. лень Код:
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
|
21.06.2011, 10:47 | #4 |
Пользователь
Регистрация: 08.06.2009
Сообщений: 15
|
KobolD, спасибо за код. Буду разбираться.
В голову пришли только условия для пересечения двух окружностей - они очевидны. А вот пересечение квадрата и окружности-это проблематично что-то... Спасибо! |
21.06.2011, 12:41 | #5 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
размышления вслух
для квадрата есть: - вписанная окружность; - описанная окружность; - четыре стороны (отрезка). P.S.большинство фигур есть комбинация дуг (окружностей) и отрезков. пересечение окружности и прямой. пересечение окружности и отрезка Отрезок есть часть прямой ограниченная с двух сторон. взаимное расположение отрезка и окружности. взаимное расположение отрезка и центра окружности. взаимное расположение отрезка и перпендикуляра к данному отрезку (прямой содержащей данный отрезок) опущенному из точки (центра окружности).
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 21.06.2011 в 12:47. |
21.06.2011, 14:17 | #6 | |
Форумчанин
Регистрация: 10.06.2010
Сообщений: 239
|
Ну тут все просто, вот критерий пересечения прямой и окружности вместе с алгоритмом http://www.e-maxx.ru/algo/circle_line_intersection.
Надо только дописать проверку на концы отрезка т.к. у тебя не прямая а отрезок. Теперь засовываем в эту функцию твою окружность и каждый из отрезков (сторон) квадрата т.е. функция будет вызываться 4 раза. И если хоть раз функция вернет пересечение, то значит фигуры частично перекрываются, если нет, то надо проверить не лежит ли центр окружности внутри квадрата и если лежит то одна фигура полностью перекрывает другую. С пересечением Окружности и Треугольника надо тоже самое сделать, только проверять уже три отрезка. evg_m Цитата:
А все остальное это комбинация этих трех функций.
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
Последний раз редактировалось KobolD; 21.06.2011 в 14:29. |
|
27.09.2015, 12:48 | #7 |
Регистрация: 08.07.2015
Сообщений: 7
|
Добрый день, я вот тоже пишу подобную программу, не подскажете почему какой-то из шаров в момент передвижения начинает исчезать?
Предполагаю, что проблема с рефрешем, может можно их как то синхронизировать? Код:
Последний раз редактировалось Stilet; 27.09.2015 в 12:53. |
27.09.2015, 12:54 | #8 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
У pictureBox1 есть событие Paint?
I'm learning to live...
|
27.09.2015, 12:56 | #9 |
Регистрация: 08.07.2015
Сообщений: 7
|
Ну я знаю такое событие, но я не знаю для чего оно, поэтому нет... Подскажите пожалуйста
|
27.09.2015, 13:31 | #10 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Подсказать могу только так: https://msdn.microsoft.com/ru-ru/lib...vs.110%29.aspx
У меня нет в наличии студии, чтоб пример набросать.
I'm learning to live...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Написать программу, которая выводит на экран две секторные диаграммы | Lexia_nick_otin | Помощь студентам | 3 | 10.11.2010 17:39 |
функцию которая меняет переменные местами | kseshenka | Помощь студентам | 6 | 17.10.2010 23:09 |
Определить вид фигуры | straiker9 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 07.04.2010 07:48 |
Можно ли вызвать функцию потока, которая не стоит в Execute? | TwiX | Общие вопросы Delphi | 4 | 12.12.2009 22:29 |
Пересекаются ли фигуры? | XeN0N | Помощь студентам | 10 | 21.01.2009 08:34 |