|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.11.2017, 19:45 | #1 |
Форумчанин
Регистрация: 05.11.2015
Сообщений: 167
|
Длина отрезка в круге
Здравствуйте. Столкнулся с проблемой - никак не могу решить.
Задача такая: есть координаты двух точек (начало и конец отрезка), координаты центра круга и радиус круга. Нужно найти, какое расстояние отрезок проходит в круге, и вывести с тремя знаками после запятой. Если он проходит мимо, вывести -1. Программа: Код:
Самое короткое расстояние к отрезку - либо перпендикуляр, если его можно опустить, либо расстояние от центра к одной из точек отрезка. Затем проверяю, лежат ли обе точки в круге. Если да, то ответ - весь отрезок. Если же обе точки лежат за пределами круга, то нужно найти точку входа в круг и точку выхода. Для этого я использовал уравнение прямой и уравнение круга, нашел эти точки и посчитал расстояние между ними. Я только не пойму, что делать, когда одна точка внутри круга, а другая - снаружи. Тогда нужно найти единственную точку входа отрезка в круг (ведь выхода нет), но как это сделать? И еще один вопрос. При входных данных 2 1 13 4 7 6 5 ответ должен быть 7.125 Когда я включаю программу без файлов, то есть ввожу вручную, то ответ получается такой же. А когда шлю на сайт с файлами, то мне пишет, что формат ввода неправильный. Что это может быть? Заранее спасибо. |
24.11.2017, 19:57 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
24.11.2017, 20:15 | #3 |
Форумчанин
Регистрация: 05.11.2015
Сообщений: 167
|
да нет, дорешать решил
|
25.11.2017, 17:09 | #4 |
Форумчанин
Регистрация: 08.11.2017
Сообщений: 347
|
Думаю, будет лучше найти пересечение прямой с окружностью, если оно есть, то имеем отрезок этой прямой и задача сводится к определению пересечения отрезков (интервалов). Так как оба отрезка находятся на одной прямой, то достаточно проверить только вдоль одной из осей X или Y. Надо предусмотреть вариант, когда прямая параллельна одной из осей, т.е. интервал м.б. нулевым.
|
25.11.2017, 20:57 | #5 | |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,550
|
Несмотря на простоту, задачка интересная. Если завтра Ferrari победит, на радостях напишу. А так могу только алгоритм на словах описать.
- Если расстояние от центра до прямой > радиуса - решение 0 - не пересекаются. - Если расстояние от обоих концов отрезка до центра < радиуса - сам отрезок и есть решение. - Третий вариант - одна точка внутри круга, одна вне - находим пересечение окружности с отрезком, и эта точка + та точка, что внутри - и есть решение. - Четвертый вариант - оба конца отрезка вне, но расстояние от центра до прямой < радиуса - находим обе точки пересечения. Возможен вариант: расстояние от центра до прямой = радиусу, то это касание в одной точке, но этот вариант всерьез рассматривать не стоит, бо равенство 2 действительных чисел - понятие химерическое, можно говорить лишь о |разность 2-х чисел| < наперед заданного значения и есть приблизительное равенство. dimon_snake Цитата:
Последний раз редактировалось digitalis; 25.11.2017 в 21:07. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Разработать метод f(x1, y1, x2, y2), который вычисляет длину отрезка по координатам вершин (x1, y1) и (x2, y2), и метод d(a, b, c), который вычисляет периметр треугольника по длина | scarecrow_1 | C# (си шарп) | 3 | 14.10.2016 19:56 |
Решить задачу: Найдите кривую , проходящую через точку А(1;2) , для которой длина отрезка оси абсцисс , отсекаемого касательной... | Фима | Помощь студентам | 2 | 14.12.2015 21:43 |
Равномерное распределение точек в круге | Arigato | Мультимедиа в Delphi | 12 | 23.11.2014 23:11 |
как для построения отрезка по двум точкам на плоскости ХОУ и далее, из одного из концов построенного отрезка построить второй отре | IZOPGRAM | Общие вопросы Delphi | 2 | 27.12.2012 09:28 |
Задача о круге на плоскости. | pdef | Помощь студентам | 3 | 22.09.2011 00:47 |