|
194 / 29 / 5
Регистрация: 11.04.2015
Сообщений: 735
|
|
Выбрать касательную к окружности16.07.2019, 00:46. Показов 5420. Ответов 29
Метки нет (Все метки)
Всем доброго времени суток!
Прошу вашей помощи для решения довольно несложной (казалось бы) задачи: пусть задан некоторый начальный вектор, определяемый точкой начала и конца (x_нач;y_нач) = (X2-X1;Y2-Y1); аналитически находится центр окружности заданного радиуса R, касательной к вектору в точке его начала: , где 1-е уравнение говорит о том, что центр окружности (x_c;y_c) лежит на перпендикуляре (Ap1,Bp1) к прямой, сонаправленной с заданным вектором, проходящем через начало вектора (X1;Y1), а 2-е - что геометрическое место точек окружности радиуса R проходит через ту же точку начала вектора. Решив систему, получим 2 пары координат центра удовлетворяющей системе окружности; условимся, что рассматриваем ту, x_c которой наибольшая. Заданы также 2 точки вне полученной окружности - (x_1;y_1) и (x_2;y_2) - от которых строятся касательные к ней, также аналитически: , где 1-е уравнение говорит о прохождении геометрического места той же окружности через точку касания, а 2-е описывает прямую, касающуюся окружности в некоторой точке (x_1_kas1;y_1_kas1) и проходящую через точку (x_1;y_1); ответом должны являться две пары координат - (x_1_kas1;y_1_kas1) и (x_1_kas2;y_1_kas2) - но здесь что-то "нечисто", поскольку помимо двух действительных решений компьютер выдаёт третье - комплексное (почему - непонятно, но, я думаю, из-за доли тавтологии в этих двух уравнениях, и, как следствие, некоторой недоопределённости в системе). Со второй точкой проделывается то же самое. В результате появляются 4 точки касания, из которых окружность переходит в прямую и достигает соответствующей точки. Теперь о сути задачи, решить которую я всё ещё не могу - при рассмотрении каждой конкретной точки необходимо из двух касательных выбрать только ту, которая может служить продолжением движения по окружности, которое задано начальным вектором. Иными словами - допустим, есть автомобиль, который в некоторый момент времени (в точке (X1;Y1)) начал поворот по окружности радиусом R по часовой стрелке (как дать понять компьютеру, что вектор означает направление поворота я также не знаю) с целью достичь точки 1; тогда в некоторой точке (x_1_kas1;y_1_kas1) автомобиль должен выйти из поворота и продолжить движение по прямой до достижения точки 1; но одновременно с этим существует вторая точка касания (x_1_kas2;y_1_kas2) и вторая касательная ей соответствующая, в которую автомобиль НЕ МОЖЕТ "вписаться" двигаясь по окружности по направлению начального вектора (нарушена гладкость физики процесса). Таким образом, основная задача - отыскать все "недопустимые" точки касания (красные прямые на рисунке), т.е. те, в которых нарушается общая физика безостановочного движения. Я буду оооооочень благодарен за помощь!!! P.S. Рисунок геометрии прилагается
0
|
|
| 16.07.2019, 00:46 | |
|
Ответы с готовыми решениями:
29
Построить на экране касательную к данной окружности, проходящую через заданную точку на окружности Нарисовать касательную к окружности.
|
|
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
|
|
| 16.07.2019, 07:26 | |
|
Посмотрите внимательно на второе уравнение во второй системе
1
|
|
|
11074 / 7375 / 3990
Регистрация: 14.01.2014
Сообщений: 16,811
|
|
| 16.07.2019, 09:14 | |
|
"Красные" направления можно отсечь с помощью векторного произведения векторов: радиального и касательного, направленных из точки касания в центр и целевую точку, соответственно. Для "зеленого" направления будет положительный знак, для "красного" - отрицательный. А со вторым уравнением второй системы у Вас непорядок!
1
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||||
| 16.07.2019, 19:56 | ||||
|
Угол между векторами: Угол между DE и AC Угол между DE и AF Где меньший угол там и больше совпадение направления, люди также решают…нет? Там две формулы по часовой и против. “Матрица поворота в двумерном пространстве” https://ru.wikipedia.org/wiki/Матрица_поворота В правильную сторону крутим или нет можно снова проверять по углу между вектором нужного направления и вектором построенным от двух попыток поворота по и против часовой на малый угол и сверять направление какое правильней. Самое простое это расстояние до точки касательной. Или снова по углу между векторами “по углу между вектором нужного направления и вектором построенным от двух попыток поворота по и против часовой на малый угол и сверять направление какое правильней.”
0
|
||||
|
11074 / 7375 / 3990
Регистрация: 14.01.2014
Сообщений: 16,811
|
||
| 16.07.2019, 20:59 | ||
|
Похоже, что Вы вообще не поняли задачу, иначе не стали бы рисовать "вектор" движения DE в стороне от окружности. ТС задавал вектор с началом на окружности по касательной, так как автомобиль движется по окружности.
Остальные Ваши многочисленные то ли "советы", то ли "рецепты" оставляют такое же впечатление.
1
|
||
|
194 / 29 / 5
Регистрация: 11.04.2015
Сообщений: 735
|
|
| 16.07.2019, 23:39 [ТС] | |
|
mathidiot, спасибо Вам за действительно простое и, в то же время, гениальное решение!
По поводу второго уравнения во второй системе - я либо написал его так, что Вы неверно интерпретировали то, что я написал, либо там есть ошибка, которой я не понимаю. На всякий случай я переписал систему в word'е (рисунок приложен). Также, исходя из того, что Вы посоветовали, и руководствуясь желанием универсализировать всё и вся ( ), могу ли я дополнить систему уравнением с signum'ами представленным на рисунке образом? Теоретически, это должно заработать, но про то второе уравнение системы я тоже так думал
0
|
|
|
194 / 29 / 5
Регистрация: 11.04.2015
Сообщений: 735
|
|
| 16.07.2019, 23:51 [ТС] | |
|
Забыл добавить - это самое второе уравнение было мною взято с двух сайтов (дополняющих друг друга):
https://www.bymath.net/studygu... angeo3.htm [delete] , поэтому в чём именно у меня ошибка пока остаётся загадкой.
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||
| 17.07.2019, 08:13 | ||
|
0
|
||
|
194 / 29 / 5
Регистрация: 11.04.2015
Сообщений: 735
|
|
| 18.07.2019, 01:21 [ТС] | |
|
SSC, спасибо за Ваш ответ, но он мало что проясняет, если честно)
Я попытался использовать равенство нулю скалярного произведения двух векторов (касательной и радиуса), но получил те же результаты. А, буквально, час назад программа не выдала ни одного действительного решения - все комплексные; я с таким уже сталкивался, когда системе не хватало уравнений для решения (решается с помощью "solve" в MATLAB'е), но я, к сожалению, не вижу чего же её не хватает - 2 переменные и 2 уравнения, всё логично. Не затруднит ли Вас подсказать мне, в чём же проблема?
0
|
|
|
|
|
| 18.07.2019, 04:18 | |
|
Ромуальд_7, я решил вашу задачу (нашёл угол правого поворота), но с вашими обозначениями, отягощёнными индексами, записать это затруднительно. Вот зачем писать начальную точку (Х1,Y1), а конечную (x_1,y_1)? Не понятнее ли А и В? Точка (X2,Y2) вообще не нужна, она нигде не используется, и есть же координаты вектора направления.
Т.е. вам нужно знать 1) начало круговой траектории = точку начала вектора скорости, 2) сам вектор скорости, 3) точку, куда нужно попасть, у вас она справа вверху, 4) радиус и направление поворота. Рассчитываются а) центр поворота, б) угол поворота <0, так как поворот правый, в) точку касания - первход круговой траектории в прямолинейный участок. Никаких неоднозначностей нет, вернее, они устраняются. Сначала находится центр поворота: Затем ищется угол поворота: Нужен только косинус, а от синуса только его знак: Если Если После этого этот угол подставляется в формулу для точки С касания: Эти формулы были проверены для таких тестовых значений (рис). Синим нарисовано то, что дано.
1
|
|
|
|
|
| 19.07.2019, 23:06 | |
|
Ромуальд_7, что-то вы молчите... Формулы страшные?
Выше промелькнуло, что вы используете Матбал. Чтобы получить приведённое выше решение (углы), нужно для правого поворота решить систему линейных уравнений по синусу и косинусу: , которую Матлаб легко делает, вычисляя обратную матрицу. Для левого поворота в формуле для центра О нужно поменять знаки в матрице 2*2, синус и косинус ищется решением очень похожей системы: Точка касания С для левого поворота почти такая же, как и для правого, только нужно изменить знак в одном месте: "А - матрица". Определение угла левого поворота (угол >0) такое: Если Если Условие для возможности того или иного поворота - извлечение радикала Можете поиграться с разными параметрами в Экселе - менять желтые поля, а в оранжевых читать значения. Ну и диаграммка, как это выглядит.
1
|
|
|
194 / 29 / 5
Регистрация: 11.04.2015
Сообщений: 735
|
|
| 20.07.2019, 00:18 [ТС] | |
|
jogano, да, что-то я и правда притих
![]() Большое спасибо Вам за предложенный метод и подробные разъяснения! Формулы не страшные, Я решил задачу по совету mathidiot - через векторные произведения, а угол обхода нашёл с помощью комбинации значений векторного (от него - знак) и скалярного (от него - угол) произведений. Так или иначе, в моей, уже полностью готовой, системе есть единственная ошибка, которую я хотел бы найти, но исходя из случаев, где она появляется, найти её не удаётся; в ряде случаев система либо находит только комплексные решения, либо решается в действительных числах, но неверно. К большому сожалению, люди, знающие в чём у меня ошибка, отмалчиваются, а я, попробовав ещё 2 способа заменить проблемное уравнение на другое, получал те же результаты. Поскольку я использую матлаб, то гораздо проще написать аналитику процесса (СНлАУ аналитической геометрии) и заставить систему это решать как ей вздумается (тем более, что аналитического решения нет в принципе), просто получая результаты. кода - одна строчка; да, времени, полагаю, потратится больше, чем на Ваш метод, зато просто до безобразия.
0
|
|
|
194 / 29 / 5
Регистрация: 11.04.2015
Сообщений: 735
|
||
| 20.07.2019, 02:23 [ТС] | ||
|
jogano, ну это же не аналитика))
Геометрическая аналитика ведь строится на согласовании положений геометрических фигур, а явных уравнений фигур как таковых нет. Хотя, может я не прав, и аналитика это всё, что не имеет отношения к итерационным исчислениям. Вас не затруднит подсказать, что значит вертикальная черта в матрицах (впервые вижу такую конструкцию) и что значит словосочетание
0
|
||
|
|
|||
| 20.07.2019, 03:24 | |||
|
Вы стремитесь решать методами, которые понимаете - составлением уравнений прямых и окружностей, чтобы потом Матлаб с помощью чёрного ящика решал нелинейную систему. А я вам сделал, скажем так, геометрической арифметикой, то есть выполнив некоторые матричные операции. Правда, всё равно пришлось решать систему для поиска угла поворота, так что это всё-таки аналитическая геометрия. Но тогда нет смысла спрашивать на форуме, почему иногда программа выдаёт комплексные решения. Решает чёрный ящик, это вопрос к разработчикам. Критерий возможности выполнения поворота я вам написал, и возможно, вводя в программу произвольные числа, вы иногда получаете целевую точку внутри окружности, вот Матлаб и выдаёт вам комплексные значения радикала. Вы не приводите никаких числовых данных, при которых так происходит...
0
|
|||
|
194 / 29 / 5
Регистрация: 11.04.2015
Сообщений: 735
|
||
| 21.07.2019, 02:11 [ТС] | ||
|
jogano, боюсь Вы неверно истолковали мой вопрос.
Ликбез по линейной алгебре мне не требуется, я, что называется, вчера немного затупил и не признал Жордана-Гаусса (последний раз на 1 курсе дело было). По поводу чёрного ящика - матлаб решает вполне определёнными методами, которые я, в большинстве их, понимаю и даже могу сделать ручками (да даже и делал на экзамене в январе). По примеру решения предшествующей этой задачи я понял, что матлаб - система вредная и любит максимальную (порой, на первый взгляд, избыточную) формализацию. В моей программе существует ряд случаев, когда система находит исключительно комплексные решения (хотя всё видно из картинки, ненавижу фразы типа "из рисунка видно", но всё же) или же когда система находит действительные решения, но они совершенно неверные. К чему я всё это - в предшествующей программе "комплексный синдром" вылечился после добавления в систему ещё одного уравнения, которое, на мой взгляд, систему переопределяло, следовательно, здесь системе нужно ещё одно уравнение, но какое? (а самое главное - зачем (Кстати, пока я это писал, появилось предположение, которое я и проверю.) Но ведь в тупик ставят первые два ответа в этой теме - о неправильности второго уравнения второй системы, при этом, ошибки я там не нашёл, а есть ли она на самом деле подсказать-то и некому, выходит Добавлено через 3 часа 18 минут В общем, глобальный вывод моих экспериментов таков: второе уравнение второй системы верно, поскольку взяв вместо него уравнение типа Уж не знаю, на что именно указывали SSC и mathidiot. Таю надежду, что они-таки найдут ещё немного времени на меня.
0
|
||
|
|
||||
| 21.07.2019, 03:40 | ||||
|
(небольшой ликбез по векторной алгебре, у вас пробелы....) Имелось в виду, что в векторном произведении То есть (использую обозначения рисунка поста #10, а использовать ваши - выше моих сил...) Добавлено через 6 минут
1
|
||||
|
194 / 29 / 5
Регистрация: 11.04.2015
Сообщений: 735
|
|||||||||||||
| 22.07.2019, 00:51 [ТС] | |||||||||||||
|
jogano, Вот снова Вы понимаете мои слова неверно. Я знаю что такое векторное произведение, как и про правило буравчика; воспринял совет я не буквально, а прямо - вектор либо выше плоскости ("+1*k"), либо ниже её ("-1*k", где k - 3й орт в ортонормированной системе i,j,k), вот этот знак я и сравниваю.
Не по теме: В целом, компьютеру проще посчитать знак числа, чем само число (поэтому я и сравниваю не числа, а знаки), и пусть в данной ситуации это незначительно влияет на быстродействие системы, я уже привык "оптимизировать параллельно написанию" (в меру сил, конечно, но всё же). ):
При решении будут получены вектор-столбцы (xc1sol и три других), содержащие пару координат центров окружностей по обе стороны от вектора. Далее так:
Не по теме: Я обычно стараюсь, чтобы имена переменных говорили сами за себя, но в начале этой темы меня как-то знесло. В приведённых на рисунке ниже числах, кроме уже описанных мной, есть ещё (xp1;yp1) (и с индексом 2) - это разность координат точки конца вектора и точки его начала в (X1;Y1) (для 2 - аналогично), то есть, Представленная на рисунках ситуация как раз очень удачно охватывает весь спектр моих вопросов - и одно действительное верное решение программа показывает, и одно действительное неверное, и вдовесок 4 комплексных решения, хотя существует 3 действительных (нарисовано мной ниже). Само по себе представляет интерес уже то, что откуда-то берутся 6 решений вместо 4, какие бы числа не вводились в систему.
0
|
|||||||||||||
|
194 / 29 / 5
Регистрация: 11.04.2015
Сообщений: 735
|
|
| 22.07.2019, 00:56 [ТС] | |
|
Забыл добавить - радиус обеих окружностей принят равным 14 и является константой всегда; а на уравнения на строках 8 и 9 второй вставки кода можете не ругаться - я знаю, что фактически они несут тот же смысл, что и 6-7, но это был эксперимент, который, такое ощущение, что что-то частично починил в решении (субъективная оценка).
0
|
|
|
|
|
| 22.07.2019, 22:56 | |
|
Так. Я сделал вашу задачу в Маткаде с помощью чёрного ящика (решателя). Матлаба у меня нет на компьютере, нельзя повесить. С вашими данными.
Точка касания: - окружность левого вращения с окружностью левого вращения (нижняя касательная). Точки касания слева (3,543; 19,516), точка касания справа (53,751; 34,61) - окружность левого вращения с окружностью правого вращения (внутренняя касательная). Точки касания слева (5,77; 20,4), точка касания справа (70,35; 52,66) - окружность правого вращения с окружностью левого вращения (внутренняя касательная). Такого решения нет, так как окружности пересекаются. Маткад выдал одну из точек их пересечения, что формально удовлетворяет условиям (нуль-вектор между этими точками перпендикулярен всем векторам, в том числе векторам-радиусам). - окружность правого вращения с окружностью правого вращения (верхняя касательная). Точки касания слева (26,412; 51,675), точка касания справа (75,897; 54,119) Откройте маткадовский файл (Prime 4.0) и извлекайте сами критерии. По-моему, самое время перефутболить вашу тему в Матлаб, в геометрии ей делать больше нечего. Пусть там мучаются с чёрным ящиком и с обозначениями до 6 символов...
1
|
|
| 22.07.2019, 22:56 | |
|
Помогаю со студенческими работами здесь
20
Выбрать окружности, длина которых больше 7, но меньше 10, и записать в файл таблицу Найти касательную Найти касательную к эллипсу Провести касательную к эллипсу Как построить касательную Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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.
На борту пять. . .
|