Исходник программы - определение точек пересечения прямой с коружностью на Си(C++)
Добавил: | DMT |
Дата создания: | 29 апреля 2008, 18:17 |
Дата обновления: | 29 апреля 2008, 18:17 |
Просмотров: | 18859 последний сегодня, 22:09 |
Комментариев: | 2 |
Исходник программы - определение точек пересечения прямой с коружностью на Си(C++) Задаются прямая и окружность. Окружность задается координатами центра (x,y) и радиусом r; прямая - координатами двух принадлежащих ей точек (x1,y1) и (x2,y2). Требуется узнать координаты точек пересечения прямой и окружности или вывести сообщение о том, что они не пересекаются. Пример обработки данных: Пусть (2,2) - координаты центра окружности, радиус=2. (0,-2) и (2,0) - координаты точек, принадлежащих прямой. Т.е. x=2, y=2, r=2, x1=0, y1=-2, x2=2, y2=0. Тогда: k=(-2-0)/(0-2)=1, b=-2-1*0=-2, d= (2*1*(-2)-2*2-2*2*1)^2-(4+4*1)*( (-2)^2-2^2+2^2+2^2-2*2*(-2))=16. d>0, значит, прямая и окружность имеют точки (точку) пересечения. Вычисляем: x1=(-(2*1*(-2)-2*2-2*2*1)-(v64))/(2+2*1)=2; x2=(-(2*1*(-2)-2*2-2*2*1)+(v64))/(2+2*1)=4; x1?x2, тогда вычисляем: y1=1*2-2=0; y2=1*4-2=2. Значит, прямая и окружность пересекаются в двух точках с координатами (2,0) и (4,2). |

Комментарии для "Исходник программы - определение точек пересечения прямой с коружностью на Си(C++)"
Пользователь: eugene_sm Сообщений: 1 Статус: Незримый Зарегистрирован: 20 августа 2008, 2:41 Был:20 августа 2008, 3:14 ![]() ![]() ![]() | Дата: 20 августа 2008, 3:14 Сообщение № 1 |
баговый алгоритм |
Пользователь: night_stalker Сообщений: 1 Статус: Незримый Зарегистрирован: 25 сентября 2011, 10:42 Был:25 сентября 2011, 10:47 ![]() ![]() ![]() | Дата: 25 сентября 2011, 10:47 Сообщение № 2 |
x1=(-(2*1*(-2)-2*2-2*2*1)-(v64))/(2+2*1)=8; x2=(-(2*1*(-2)-2*2-2*2*1)+(v64))/(2+2*1)=18; y1=1*8-2=6; y2=1*16-2=14. Там должно стоять корень из 16, а не из 64. ![]() Тогда и результаты получаются другие. |