Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Точки пересечения окружности и прямой, алгоритм
|
|||
|---|---|---|---|
|
#18+
Доброго всем дня. Никто не связывался с задачей нахождения точек (точки, или их(её) отсутствия) персечения окружности и прямой? Прямая задана парой точек, окружность точкой центра и радиусом. Покопал гуглого, но там не так много вариантов. Вот например Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. Мож кто видел какойнить простой в плане понимания и читабельности код? Заранее спасибо. P.S. Ща на бумажке пытаюсь найти построительным путем (без формул), мож че выдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2009, 12:50 |
|
||
|
Точки пересечения окружности и прямой, алгоритм
|
|||
|---|---|---|---|
|
#18+
а чем не нравится предложенное решение? reZFedorВсе остальное по большей части на параметрическое задание прямой и окружность в начале координат. Я понимаю, что всегда можно получить из двух точек параметрическое уравнение, а цнтр окружности скорректировать, кароче выкрутиться всегда можно, но зачем? Мож кто видел какойнить простой в плане понимания и читабельности код? готовые решения для всех типов задач существуют только в борланде и они не работают. что мешает вам сделать свое решение? написать красивый с вашей точки зрения код? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2009, 12:58 |
|
||
|
Точки пересечения окружности и прямой, алгоритм
|
|||
|---|---|---|---|
|
#18+
Вроде получилось. У меня в программе есть две процедуры (которые я использую и на них висит половина рассчетов): 1) определение точки основания перпендикуляра опущенного из точки на прямую (достаточно простая) 2) возведение перпендикуляра относительно прямой из точки на опр. расстояние налево и направо от этой прямой прямой Если каринка все таки прикрепится, то там с помощью этих двух вункций все в три действия (кода не сильно много) 1) Из точки О опускаем перпендикуляр на прямую AB => получаем точку C (основание перпендикуляра). 2) По Пифагору находим расстояние d от точки С до точки пересечения прямой и окружности. До обоих точек расстояние будет одинаковым. 3) Воостанавливаем перпендикуляр из точки С от прямой OC на расстояние d в одну (точка X) и другую (точка Y) стороны. Вот в принципе и все. Поправьте если чо попутал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2009, 13:39 |
|
||
|
Точки пересечения окружности и прямой, алгоритм
|
|||
|---|---|---|---|
|
#18+
reZFedor пишет: Так а что там сложного ? Делаете поворот координат, чтобы центр был в центе окружности, а одна из осей направлена по данной прямой (я не знаю, какая лучше). Далее, точка пересечения будет находится достаточно просто (0, R) или что-то в этом роде. Потом после нахождения делаете обратный поврот координат и находите координаты точки пересечения. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2009, 17:44 |
|
||
|
Точки пересечения окружности и прямой, алгоритм
|
|||
|---|---|---|---|
|
#18+
MasterZivreZFedor пишет: Так а что там сложного ? Делаете поворот координат, чтобы центр был в центе окружности, а одна из осей направлена по данной прямой (я не знаю, какая лучше). Поаорот "делаете" как? Это надо преобразовывать с помощью матрицы поворота, а ее что просто получить? Да тем более чтобы MasterZivодна из осей направлена по данной прямой Это как минимум +2 действия для определения угла: 1) определений (например) синуса угла 2) определение знака синуса угла (для углов больше 180 градусов) MasterZivДалее, точка пересечения будет находится достаточно просто (0, R) или что-то в этом роде. Согласен, пересечение это семачки. MasterZivПотом после нахождения делаете обратный поврот координат и находите координаты точки пересечения. Мне лично кажется сложновато. Если изначально возводить "правильную" математику преобразований, то конечно ваш вариант приемлем. Но если проект не стоит таких усили? Мой метод разве не подходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2009, 09:56 |
|
||
|
Точки пересечения окружности и прямой, алгоритм
|
|||
|---|---|---|---|
|
#18+
reZFedor пишет: > Мой метод разве не подходит? Не знаю, не читал. Матрица преобразования же должна получаться легко. Центр окружности должен быть задан, поэтому смещение в эту точку получается легко. Поворот тоже, поскольку прямая должна быть задана точкой и коэффициентом наклона. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2009, 11:23 |
|
||
|
Точки пересечения окружности и прямой, алгоритм
|
|||
|---|---|---|---|
|
#18+
MasterZivМатрица преобразования же должна получаться легко. Это предположение? MasterZivЦентр окружности должен быть задан, поэтому смещение в эту точку получается легко. Согласен. MasterZiv Поворот тоже, поскольку прямая должна быть задана точкой и коэффициентом наклона. А вот тут нет: у меня трехмерная графика, но пока используются только две координаты, и точки прямой (отрезка) у меня естественно есть (как тогда еще их отрисовывать), а вот уравнения прямой нет, сл-но его надо находить, а это как с матрицей поворота. Мне кажется что последовательность действий в вашем варианте должна быть следующей: 1) Формирование матрицы переноса начала системы координат в центр окружности 2) Перенос системы координат в центр окружности с помощью матрицы 3) Формирование (получение) коэфицента наклона прямой или уравнения прямой в параметрическом виде с целью получения угла поворота окружности 4) Формирование матрицы поворота окружности по углу 5) Поворот окружности к углу с помощью матрицы 6) Нахождение пересечение (самое простое) 7) Применение к найденной точке преобразований обратных повороту и смещению Если что то не так то напиши. Если все нормально то мне кажется мрачновата перспектива) В принципе можно и без матриц: сформировать и запомнить вектор переноса, посчитать и запомнить угол поворота. Но это отбросит всего два пункта из семи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2009, 12:50 |
|
||
|
Точки пересечения окружности и прямой, алгоритм
|
|||
|---|---|---|---|
|
#18+
reZFedor пишет: > А вот тут нет: у меня трехмерная графика, но пока используются только > две координаты, и точки прямой (отрезка) у меня естественно есть (как > тогда еще их отрисовывать), а вот уравнения прямой нет, сл-но его надо > находить, а это как с матрицей поворота. Вспомни теорему Пифагора, и вычисли быстро уравнение прямой. > 1) Формирование матрицы переноса начала системы координат в центр окружности > 2) Перенос системы координат в центр окружности с помощью матрицы > 3) Формирование (получение) коэфицента наклона прямой или уравнения > прямой в параметрическом виде с целью получения угла поворота окружности > 4) Формирование матрицы поворота окружности по углу Можно один раз матрицу сформировать. > 5) Поворот окружности к углу с помощью матрицы > 6) Нахождение пересечение (самое простое) > 7) Применение к найденной точке преобразований обратных повороту и смещению > Если все нормально то мне кажется мрачновата перспектива) Да, можно легче. Можно найти или придумать самому (вывести) соответствующие формы (это в линейной алгебре должно быть). Я ещё раз написал что в голову взбрело. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2009, 15:02 |
|
||
|
Точки пересечения окружности и прямой, алгоритм
|
|||
|---|---|---|---|
|
#18+
MasterZiv... Вспомни теорему Пифагора, и вычисли быстро уравнение прямой. ... Только щас понял) MasterZiv... Можно один раз матрицу сформировать. ... Я так понял одну матрицу преобразования для поворота+смещения? Если такое возможно, то ессессно да. ... MasterZiv... Да, можно легче. Можно найти или придумать самому (вывести) соответствующие формы (это в линейной алгебре должно быть). Я ещё раз написал что в голову взбрело. Я рассчитываю по своей методе. Пока никаких граблей. Но всеравно большое спасибо за дискуссию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2009, 12:40 |
|
||
|
Точки пересечения окружности и прямой, алгоритм
|
|||
|---|---|---|---|
|
#18+
reZFedor wrote: > Я так понял одну матрицу преобразования для поворота+смещения? > Если такое возможно, то ессессно да. Возможно. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2009, 15:12 |
|
||
|
Точки пересечения окружности и прямой, алгоритм
|
|||
|---|---|---|---|
|
#18+
Решение проще некуда Х1,2=Х1 (+/-) d/sqrt(1+k^2) X1,2 это иксы точек пересечения к^2 это квадрат углового коэффициента прямой d расстояние от точки С до точек пересечения(использовал рисунок который выше приводили) У1,2 можно будет найти из уравнения прямой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2013, 23:14 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=36318075&tid=2020414]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 145ms |

| 0 / 0 |
