powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите с лабой
2 сообщений из 2, страница 1 из 1
Помогите с лабой
    #36532677
woox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
День добрый. Делаю лабу на C и не могу решить один вопрос, помогите советом или готовым примером.
Задание: при запуске программы должны появляться некие буквы, в рандомном месте с рандомным цветом, при нажатии неких клавиш в рандомном месте должны появляться различные графические элементы (точки, эллипсы, круги, линии и тп), причем эти графические элементы не должны пересекать область с буквами.
На данный момент у меня возникла проблема с линиями, не могу сообразить как реализовать, чтобы линия не пересекала область с буквами. Получается, что линия рано или поздно все равно пересекает область с буквами - ссылка на скрин .
Буду рад любой помощи с вашей стороны :) Спасибо.
...
Рейтинг: 0 / 0
Помогите с лабой
    #36532724
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала надо расчитать прямоугольник (bounding box) который ограничивает буквы. Пускай это будет BBoxText. Для его расчёта должна быть стандартная ф-ция. Либо ты посчитаешь приблизительно (на глаз). Такой-же прямоугольник расчитать для случайной линии BBoxLine. Это легко. Его два угла всегда совпадают с координатами линий.

Тогда перед рисованием проверяешь если BBoxText в пересечении с BBoxLine даёт непустое множество то линию рисовать не надо. Проверять пересечение легко. Если

Код: plaintext
1.
2.
3.
struct BBox{
 int x1,int y1,int x2,int y2
}
И если координаты x1,x2, и y1,y2 отсортированы по возрастанию тогда проверка на пересечение двух прямоугольников - это проверка координат на "больше" или "равно". Она тривиальна и не содержит циклов. Нарисуешь на бумажке общий случай и быстро поймёшь.

Это грубый алгоритм. Линия может более красиво огибать прямоугольник. Но для твоей лабы и грубая проверка сойдет.

Для круга и точки - тоже самое.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите с лабой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]