точка пересечения окружности и линии

Возможный дубликат:
пересечение линии и круга

Как я найду точку пересечения этой окружности и прямой. Я использовал команду lincirc в Matlab с наклоном и точкой пересечения, но она показывает точку, даже если она точно не пересекает круг. Я хочу получить только пересечение двух точек. Если линия пересекает одну точку, мне нужна именно одна точка пересечения. Я не хочу указывать точку на траектории этой линии. Спасибо


person Justin Oommen    schedule 15.07.2012    source источник
comment
Как вы представляете свою линию и окружность в MATLAB? Если они представлены параметрическими уравнениями, разве не просто решить два уравнения с двумя неизвестными? Решения будут точками пересечения.   -  person chaohuang    schedule 16.07.2012
comment
У меня есть круг (xa)^2 + (yb)^2=r^2, и у меня есть случайная линия, скажем (x1,y1) и (x2,y2), которые меняются для каждой симуляции. Я использовал функцию полифита для вычисления наклона и точки пересечения, а также функцию lincirc, но она показывает две точки, даже если линия пересекает одну точку. Есть ли другой способ сделать это??   -  person Justin Oommen    schedule 16.07.2012
comment
Я думаю, что ваш подход правильный. Просто знайте, что когда линия касается окружности, linecirc вернет две одинаковые точки.   -  person chaohuang    schedule 16.07.2012
comment
да. Проблема в том, что если линия пересекает одну сторону круга и останавливается внутри круга, она показывает другую точку пересечения линии, если она продлена. Есть ли другой способ отбросить эту точку?   -  person Justin Oommen    schedule 16.07.2012
comment
Все, что вам нужно сделать, это проверить, лежит ли координата x или y точки пересечения в [x1, x2] или [y1,y2] (когда наклон inf)   -  person chaohuang    schedule 16.07.2012
comment
Я не мог получить. как мне отбросить точку, которая не пересекается? Я могу получить [x1,x2] и [y1,y2], но в некоторых случаях будет только одно пересечение точек (не случай касательной). как с этим бороться?   -  person Justin Oommen    schedule 16.07.2012
comment
linecirc дает вам 2 точки пересечения, но отрезок между (x1,y1) и (x2,y2) может пересекать окружность 0,1,2 раза. Затем вам нужно проверить координаты 2 возвращенных точек пересечения. Если координата x точки пересечения лежит в [x1, x2], то отрезок пересекает окружность в этой точке. В противном случае откажитесь от точки. (проверьте координату y, если наклон линии inf)   -  person chaohuang    schedule 16.07.2012