|
80 / 33 / 10
Регистрация: 14.06.2019
Сообщений: 516
|
||||||
Точка пересечения двух отрезков. Перевод с MATLAB.03.01.2020, 15:30. Показов 2332. Ответов 14
Метки нет (Все метки)
Кто-нибудь может перевести 6 и 9 строки?
0
|
||||||
| 03.01.2020, 15:30 | |
|
Ответы с готовыми решениями:
14
Точка пересечения двух отрезков в параметрическом виде
|
|
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
|
||
| 04.01.2020, 01:52 | ||
|
Зато могу геометрию. Для начала представим каждую прямую через формулу её графика - y=a*x+b.То есть надо найти такие a и b, чтоб график этой функции оказался прямой AB.a это наклон прямой и равен он (p2.Y-p1.Y)/(p2.X-p1.X).b это то, чему равен y, при x=0, то есть p1.Y - a*p1.X.Теперь когда есть формулы обоих графиков: y1=a1*x1+b1y2=a2*x2+b2Нам нужна точка где графики пересекаются, то есть x1=x2 и y1=y2. Исходя из этого - легко составить уравнение:a1*x+b1=a2*x+b2Отсюда x получается - (b1 - b2) / (a1 - a2).Ну а y можно найти по любой из формул. То есть, к примеру, a1*x+b1.Далее остаётся только проверить что полученная точка пересечения находится внутри обоих прямоугольниках, описанных точками AB и CD. --- Но у этого подхода есть огромный минус - для линий близких к вертикальным будут большие погрешности. А для вообще вертикальных - и не сработает. Последний раз такие формулы понадобились мне чуть больше 2 лет назад, когда делал 1 игру. Тогда я решил проблему с вертикальными отрезками - меняя местами X и Y по необходимости, чтоб вертикальные отрезки превращались в горизонтальные. (вообще это очень часто применяемый приём в программисткой геометрии) Формулы от этого, разумеется, немного меняются. Если хотите знать как - вот моя функция для именно этой задачи, из той игры: https://github.com/SunSerega/G... .pas#L1449 Не знаю зачем, но похоже я там всем типам и подпрограммам сделал нормальные описания... Ну, не забудьте хотя бы на них теперь посмотреть, если будете разбираться)). Добавлено через 5 минут А, вспомнил, я тогда решил что мне это всё ещё много лет будет нужно, поэтому делал описания, на случай если отупею)) Вот только 2 года без притрагивания к коду, а что делает что - всё ещё понимаю...
0
|
||
|
80 / 33 / 10
Регистрация: 14.06.2019
Сообщений: 516
|
|
| 06.01.2020, 08:08 [ТС] | |
|
Кстати, вы пишете про прямые, а даны отрезки
0
|
|
|
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
|
||
| 06.01.2020, 09:06 | ||
|
А внимательно прочитать?
И ссылка на мой код - показывает на именно функцию для отрезков, которая вызывает функцию для прямых.
0
|
||
|
80 / 33 / 10
Регистрация: 14.06.2019
Сообщений: 516
|
|
| 07.01.2020, 16:17 [ТС] | |
|
0
|
|
|
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
|
|
| 07.01.2020, 17:02 | |
|
Перпендикулярность не влияет на точность.
Та погрешность о которой я говорю - это из за формулы a из a*x+b.a вычисляется как dy/dx, поэтому если dx близко или = 0 - a будет иметь близкое к- или безконечное значение.
0
|
|
|
80 / 33 / 10
Регистрация: 14.06.2019
Сообщений: 516
|
|||||||
| 07.01.2020, 17:16 [ТС] | |||||||
|
Написал тестовую программку - пишет (Infinity,Infinity), т.к. они перпендикулярны, а1=а2, а2-а1=0, N/0=Infinity
0
|
|||||||
|
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
|
||||||||
| 07.01.2020, 17:37 | ||||||||
Добавлено через 29 секунд
0
|
||||||||
|
80 / 33 / 10
Регистрация: 14.06.2019
Сообщений: 516
|
|
| 07.01.2020, 17:39 [ТС] | |
|
0
|
|
|
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
|
||||||||
| 07.01.2020, 17:46 | ||||||||
|
А, не, у вас в коде проблема:
Добавлено через 2 минуты Правильно и читабельнее расписывать на несколько строк:
x правильнее называть x а не a, особенно когда в формуле есть другая переменная которая называется a).
0
|
||||||||
|
80 / 33 / 10
Регистрация: 14.06.2019
Сообщений: 516
|
|
| 07.01.2020, 17:50 [ТС] | |
|
О, да, спасибо.
0
|
|
|
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
|
||
| 07.01.2020, 17:57 | ||
|
Картёжное присвоение имеет хоть сколько то смысла только в 2 случаях: 1. Когда расписать как 2 строчки нельзя: (x,y) := (f1(y),f2(x)). Но ввод дополнительной переменной всё равно работает эффективнее.2. Когда вы хотите описать функцию/процедуру коротким синтаксисом. Это вообще только для красоты и эффективности от такого кода ожидать нет смысла.
0
|
||
|
80 / 33 / 10
Регистрация: 14.06.2019
Сообщений: 516
|
|
| 07.01.2020, 18:08 [ТС] | |
|
Спасибо, буду знать
0
|
|
|
80 / 33 / 10
Регистрация: 14.06.2019
Сообщений: 516
|
||
| 09.01.2020, 12:53 [ТС] | ||
|
0
|
||
|
Alvin Seville
|
|||
| 09.01.2020, 13:06 | |||
|
0
|
|||
| 09.01.2020, 13:06 | |
|
Помогаю со студенческими работами здесь
15
Координаты точки пересечения двух отрезков
Определение точки пересечения двух отрезков Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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.
На борту пять. . .
|