• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Три программы

  • Автор темы Автор темы Stubbs
  • Дата начала Дата начала

Stubbs

Ученик
Почётный участник
Регистрация
14 Июн 2010
Сообщения
911
Реакции
15
Баллы
0
Три программы

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

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

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

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

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

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

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

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

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

чертеж.webp
 
Координаты фигуры постоянны. Т.е их не надо вводить.
Я не могу понять, как здесь реализовать уравнение прямой, тут-же координаты не декартовы.
 
Если взять горизонталь за OX, а вертикаль - за OY, вполне можно составить каноническое уравнение любой прямой, содержащей отрезок, ограниченный двумя вершинами многоугольника.
Прямая — Википедия
 
Я вот поразмыслил над этой задачкой, и пришел мне в голову такой алгоритм:
нужно отрезками прямых соединить точку со всеми вершинами и сосчитать сумму углов между всеми парами смежных лучей, выходящих из нашей точки. Если эта сумма составит 360°, то точка - внутренняя, если нет - наружная.
К сожалению, на реализацию такой программы уже нет ни времени, ни сил.
 
Видать, полярные :))
 
Действительно, нужно было соединять вершины с этой точкой. Ну что-же, в другой раз буду знать. Спасибо за помощь всем.
 
Назад
Сверху