|
0 / 0 / 0
Регистрация: 01.04.2022
Сообщений: 3
|
|
«Пересечение отрезков»22.05.2023, 09:44. Показов 472. Ответов 2
Метки нет (Все метки)
«Пересечение отрезков». Дано n отрезков. Реализовать
программу, находящую все их пересечения между собой. Отобразить решение графически. На плоскости заданы два отрезка a и b, a – точками A1 (A1 x,A1 y) и A2 (A2 x,A2 y), b – точками B1 (B1 x,B1 y) и B2 (B2 x,B2 y). Найти и напечатать возможную точку их пересечения C(Cx,Cy). Рассмотрим первый отрезок a. Уравнение прямой, на которой он лежит, можно записать так: xa = A1 x + ta (A2 x – A1 x) ya = A1 y + ta (A2 y – A1 y) Здесь A1 x,A1 y,A2 x,A2 y – константы, xa,ya – точки, принадлежащие отрезку, при ta изменяющемся от 0 до 1. Аналогично для отрезка b: xb = B1 x + tb (B2 x – B1 x) yb = B1 y + tb (B2 y – B1 y) Таким образом, приравнивая соответствующие координаты, полу- чаем задачу нахождения параметров ta, tb, при которых бы выполнялись равенства: A1 x + ta (A2 x – A1 x) = B1 x + tb (B2 x – B1 x) A1 y + ta (A2 y – A1 y) = B1 y + tb (B2 y – B1 y) После разрешения системы относительно ta,tb получаем: ta (A1 x – A2 x) + tb (B2 x – B1 x) = A1 x – B1 x ta (A1 y – A2 y) + tb (B2 y – B1 y) = A1 y – B1 y А это есть система из двух линейных уравнений относительно ta, tb. Известно, что система: a1 x + b1 y = c1 a2 x + b2 y = c2 имеет следующее решение: 117 x = dx/d y = dy/d, где d – определитель матрицы, d = a1b2 – a2b1, dx = c1b2 – c2b1, dy = a1c2 – a2c1. В нашей системе относительно ta,tb: a1 = A1 x – A2 x b1 = B2 x – B1 x c1 = A1 x – B1 x a2 = A1 y – A2 y b2 = B2 y – B1 y c2 = A1 y – B1 y откуда легко находится d,dx,dy. Если d отличен от нуля, то система име- ет единственное решение. Правда, следует помнить, что искомые ta, tb параметрически задают отрезки, только если они лежат в диапазоне [0,1], в противном случае – точка пересечения прямых, на которых ле- жат отрезки, находится вне этих самых отрезков. Если d равен нулю, а хотя бы один из dx,dy отличен от нуля, то от- резки лежат на параллельных прямых, или, как говорят математики, они коллинеарны. Если же все три d,dx,dy равны нулю, то это значит, что от- резки лежат на одной и той же прямой, где опять возможны три слу- чая – либо отрезки не перекрываются, либо перекрываются в одной точ- ке, либо перекрываются в бесконечном множестве точек. Решение ряда задач повышенной сложности опирается на методы, рассмотренные в комбинаторике, а именно на возможность генерации: сочетаний, перестановок, размещений и перечислений элементов. Одним из важных элементов комбинаторики являются переста- новки. Перестановки без повторений – комбинаторные соединения, которые могут отличаться друг от друга лишь порядком входящих в них элементов. Число таких перестановок определяется как n!. Для числа 3 количество перестановок будет равно 3!=3 * 2 * 1=6. Для четырех: 4! = 4 * 3 * 2 * 1 = 24. Часто для генерации перестановок используется алгоритм Дейкстры для получения всех перестановок по алфавиту. Разберем этот алгоритм. Пусть у нас есть первая перестановка (например, 1234). Для нахо- ждения следующей перестановки выполняем три шага. 1. Двигаясь с предпоследнего элемента перестановки, ищем эле- мент a[i], удовлетворяющий неравенству a[i] < a[i + 1]. Для перестанов- ки 1234, это число 3, т. к. (3 < 4). 118 2. Меняем местами элемент a[i] с наименьшим элементом, который: а) находится правее a[i]; б) больше, чем a[i]. В нашем случае меняем 3 и 4. 3. Все элементы, стоящие за a[i], сортируем. В нашем случае нужно отсортировать число 4, но это единственный элемент, следовательно, так его и оставляем. В результате выполнения этих трех шагов получаем следующую по алфавиту перестановку 1243. Выполнять эти шаги нужно циклически до тех пор, пока в переста- новке не будет находиться искомый в первом шаге элемент a[i], т. е. по- ка перестановка не станет отсортированной по убыванию: 4321. Перестановки с повторениями – комбинаторные соединения, в которых среди образующих элементов имеются одинаковые. В таких соединениях участвуют несколько типов объектов, причем имеется не- которое количество объектов каждого типа. Поэтому в выборках встре- чаются одинаковые элементы.
0
|
|
| 22.05.2023, 09:44 | |
|
Ответы с готовыми решениями:
2
Пересечение двух отрезков на числовой прямой Найти пересечение двух множеств и вывести данное пересечение и кол-во элементов в нем |
|
0 / 0 / 0
Регистрация: 01.04.2022
Сообщений: 3
|
|
| 22.05.2023, 10:39 [ТС] | |
|
согласна
0
|
|
| 22.05.2023, 10:39 | |
|
Помогаю со студенческими работами здесь
3
Пересечение отрезков. Пересечение отрезков Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|