Мишень | |
---|---|
Зингер Автор Сообщений: 541 Откуда: Белгород Дата регистрации: 02.12.2008 |
[attachment 17992 4_07.jpg]
Здравствуйте. Изучая C# попалась такая задача: Написать программу, которая определяет, попадает ли точка с заданными координатами в область, закрашенную на рисунке серым цветом. Результат работы программы вывести в виде текстового сообщения. Собираюсь поочередно в каждой четверти проверить, попала ли заданная точка в заштрихованную четверть или нет. Для I и III четверти вроде как понятно. Например, для I четверти условие выгладит так: Цитата: Со II и IV что то не могу разобраться. Спасибо. |
Re: Мишень | |
---|---|
SoccerStudio Сообщений: 5055 Откуда: Подмосковье Дата регистрации: 28.11.2006 |
Ну, можно, конечно, и математически решить, но это если для данной относительно простой ситуации - определение попадания точки в круг с заданным центром и радиусом есть задача тривиальная, а проверить, что она при этом входит в большой квадрат вообще не вопрос. А во если область окажется произвольной, то это будет сложновато.
Но если речь идет о C#, то простым решением может быть следующее. 1) Подключаешь пространство имен System.Drawing 2) Создаешь объект класса Region, представляющий нужную область. Заодно разбираешься, как это делается. В данном случае все просто - берешь квадрат и вычитаешь из него круги. Для произвольной области то же самое, только надо брать более подходящие объекты, скажем, может потребоваться класс GraphicsPath. 3) Вызываешь метод IsVisible() созданного региона и радуешься полученному результату. 4) Не забываешь отдиспозить этот регион, ибо он больше тебе не нужен. Ну, если на пальцах, то как-то так. ------------------ "Здесь я, братцы, сдержу матерщину, и скажу только "... мать!"" (с) Шаов Исправлено 2 раз(а). Последнее : SoccerStudio, 18.01.14 23:38 |
Re: Мишень | |
---|---|
Зингер Автор Сообщений: 541 Откуда: Белгород Дата регистрации: 02.12.2008 |
И все же. Если абстрагироваться от C#, хочется общим простым алгоритмом, в данном случае не могу составить условие.
Что же касается классов и методов C#, м-м-м ... Я только постигаю азбуку И вопросы по C# еще впереди.;) |
Re: Мишень | |
---|---|
SoccerStudio Сообщений: 5055 Откуда: Подмосковье Дата регистрации: 28.11.2006 |
Ну, если простой алгоритм, то... 1) Проверяем, попадает ли точка в большой квадрат. Если нет, то и в урезанный квадрат тоже не попадает, вопрос решен. 2) Для каждого из кругов проверяем, попадает ли точка в круг. Если ни в один из кругов не попало, значит, попало в заштрихованную область. Все. Ну, если есть вопрос, как определить попадание точки в круг, то это в школу, класс этак в шестой. Координаты центра и радиус известен, так что проблем нет. ------------------ "Здесь я, братцы, сдержу матерщину, и скажу только "... мать!"" (с) Шаов Исправлено 1 раз(а). Последнее : SoccerStudio, 19.01.14 00:06 |
Re: Мишень | |
---|---|
Зингер Автор Сообщений: 541 Откуда: Белгород Дата регистрации: 02.12.2008 |
Спасибо. |
© 2000-2024 Fox Club  |