Технический форум

Технический форум (http://www.tehnari.ru/)
-   Delphi, Kylix and Pascal (http://www.tehnari.ru/f43/)
-   -   Три программы (http://www.tehnari.ru/f43/t40522/)

Stubbs 02.10.2010 15:14

Три программы
 
Всем доброго времени суток. Прошу помощи в написании 3-х однотипных программ в pascal.

1. Центр окружности лежит не в точке начала координат, определить лежит ли данная точка (координаты с клавиатуры) внутри окружности и вывести ответ в виде yes\no.

2.Тоже самое, только вместо окружности - прямоугольник

3. вместо окружности - неправильный многоугольник (любой)

AlexZir 02.10.2010 16:18

Во всех трех заданиях - как задаются исходные фигуры? Для определения принадлежности необходимо знать исходные координаты и другие параметры фигур.

1) Принадлежность точки определяем, исходя из уравнения окружности.

2) Принадлежность точки определяем, сравнивая соответствующие координаты с координатам сторон прямоугольника.

3) Описываем каждую сторону многоугольника уравнением прямой, последовательно определяем принадлежность точки, сравнивая введенные координаты с допустимыми.

Stubbs 02.10.2010 19:00

Фигуры не задаются, они константы.
1,2 это все понятно, уже даже почти написал.

А вот с 3 проблема.

Stubbs 04.10.2010 00:09

Не хочу , конечно, наглеть, но все таки: может кто-нибудь напишет мне 3 программу?

Stubbs 04.10.2010 15:48

Ааааа, завтра сдавать!!!!

AlexZir 04.10.2010 17:28

Вложений: 1
Объясните, как фигура может быть константой? Любая плоская фигура задаётся в какой-либо плоскости, соответственно, в другой плоскости проекция фигуры может по форме не совпадать с исходной, поэтому о постоянстве в геометрии не может быть и речи :)). Полагаю, что вы имели в виду постоянство координат вершин фигуры в данной плоскости.

Предлагаю такой вариант решения:
1) Разбиваем многоугольник на конечное число трапеций, причем две противоположные стороны должны быть параллельными на первом этапе анализа оси абсцисс, на втором этапе - оси ординат. Обратите внимание, что при разбиении могут появиться треугольники.
2) Проверяем попадание абсциссы заданной точки внутрь каждой трапеции или треугольника. Учитываем при анализе, что совпадение координаты с одной из точек стороны трапеции также говорит о попадании.
3) Также проверяем попадание абсциссы заданной точки.
4) Делаем общий вывод о принадлежности данной точки заданной фигуре.

Вложение 22910

Stubbs 04.10.2010 17:29

Координаты фигуры постоянны. Т.е их не надо вводить.
Я не могу понять, как здесь реализовать уравнение прямой, тут-же координаты не декартовы.

AlexZir 04.10.2010 18:04

Если взять горизонталь за OX, а вертикаль - за OY, вполне можно составить каноническое уравнение любой прямой, содержащей отрезок, ограниченный двумя вершинами многоугольника.
Прямая — Википедия

Vladimir_S 04.10.2010 20:38

Я вот поразмыслил над этой задачкой, и пришел мне в голову такой алгоритм:
нужно отрезками прямых соединить точку со всеми вершинами и сосчитать сумму углов между всеми парами смежных лучей, выходящих из нашей точки. Если эта сумма составит 360°, то точка - внутренняя, если нет - наружная.
К сожалению, на реализацию такой программы уже нет ни времени, ни сил.

Vladimir_S 04.10.2010 20:40

Цитата:

Сообщение от Stubbs (Сообщение 400506)
Я не могу понять, как здесь реализовать уравнение прямой, тут-же координаты не декартовы.

А какие, интересно? Параболические, что ли?


Часовой пояс GMT +4, время: 02:15.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.