Такая вот задачка: "Даны координаты вершин треугольника и окружность, заданная уравнением x^2+y^2=r^2. Определить, является ли окружность вписанной или описанной по отношению к треугольнику." Помогите ришить пожалуйста. Или хотяб подкскажите где копать?
Lapp
26.09.2006 2:43
Цитата(SataNi @ 25.09.2006 23:32)
Такая вот задачка: окружность, заданная уравнением x^2+y^2=r^2.
Окружность на самом деле с центром в начале координат, или ты имеешь в виду что известен только радиус, а не центр?
volvo
26.09.2006 2:44
Где копать? Пожалуйста... Копай сюда: если окружность описанная, то все вершины лежат на окружности (у тебя есть координаты вершин и уравнение окружности, проверяй )... Если же окружность - вписанная, то расстояние от центра окружности до любой из его сторон (расстояние от точки до прямой, уравнение прямой можешь получить из координат вершин) будет одинаковым...
Необходимые формулы можешь посмотреть на АлгоЛисте
SataNi
26.09.2006 3:17
lapp, про то что у неё центр в начале координат ничего не сказано Скорее всего только радиус известен... volvo, сорри, я новенький на форуме... Что за АлгоЛист?
Lapp
26.09.2006 3:22
Цитата(SataNi @ 26.09.2006 0:17)
про то что у неё центр в начале координат ничего не сказано ... я новенький на форуме... Что за АлгоЛист?
То, что ее уравнение задано в такой форме, это и есть сказано. Именно это и удивляет, так как такое условие в принципе кажется лишним и, скорее всего, противоречивым. Уравнение окружности действительно присутствовало в условии или это ты дописал?
форум тут ни при чем. Берешь Яндекс и ищешь: АлгоЛист..
SataNi
26.09.2006 3:28
Текст задания точный. Книга передо мной лежит...
Цитата
форум тут ни при чем. Берешь Яндекс и ищешь: АлгоЛист..
Пасиб!
Lapp
26.09.2006 3:37
Цитата(SataNi @ 26.09.2006 0:28)
Текст задания точный. Книга передо мной лежит...
Тоды ой.. Не знаю, как это будет вязаться с реальными координатами точек, но проверка тогда явно облегчается: нужно всего лишь проверить для вершин треугольника равенство x^2+y^2=r^2
Только меня все же гложут сомнения... Дествительно условие точное и полное?
SataNi
26.09.2006 3:41
Точно полное и точно точное Если хочеш сфотать могу Ладно завтра подумаю ещё... Сегодня уже не думается
Lapp
26.09.2006 3:52
Цитата(SataNi @ 26.09.2006 0:41)
Если хочеш сфотать могу
Я тебе верю.. Но тогда решение с одной стороны упрощается, с другой - в большинстве случаев просто невозможно. То есть надо, чтоб випсанная или описанная окружность треугольника была центрирована на начало координат.
Гость
27.09.2006 11:18
Млин... Не получается чтото... Напишите, пожалуйста, хотя бы примерный код
Lapp
27.09.2006 15:42
Цитата(Гость @ 27.09.2006 8:18)
Млин... Не получается чтото... Напишите, пожалуйста, хотя бы примерный код
Ты покажи, что именно получается и что не получается. Мы подправим..
SataNi
28.09.2006 2:47
Получилось чтото вроде этого:
Program laba2; var x1,x2,x3,y1,y2,y3,r,p1,p2,p3,o1,o2,ras1,ras2,ras3:real; begin writeln('Введите координаты вершин треугольника'); write('A'); readln(x1, y1); write('B'); readln(x2, y2); write('C'); readln(x3, y3); writeln('Введите координаты цетра окружности'); write('O'); readln(o1,o2); r:=SQRT(SQR(o1)+SQR(o2));
if (p1=r) and (p2=r) and (p3=r) then writeln('Окружность описана около треугольника') else begin
ras1:=abs((o1-x1)*(y2-y1)-(o2-y1)*(x2-x1))/sqrt(sqr(x2-x1)+sqr(y2-y1)); writeln(ras1); ras2:=abs((o1-x2)*(y3-y2)-(o2-y2)*(x3-x2))/sqrt(sqr(x3-x2)+sqr(y3-y2)); writeln(ras2); ras3:=abs((o1-x1)*(y3-y1)-(o2-y1)*(x3-x1))/sqrt(sqr(x3-x1)+sqr(y3-y1)); writeln(ras3); if (ras1=r) and (ras2=r) and (ras3=r) then writeln('Окружность вписана в треугольник') else writeln('Ничего не описано и не вписано!:)')
end; readln; end.
Не знаю правильно или нет... Но вродебы правильно
Lapp
28.09.2006 9:18
1. Почему ты рассчитываешь радиус окружности так: r:=SQRT(SQR(o1)+SQR(o2)); ? Получается, что твоя окружность обязательно проходит через начало координат. Мне кажется, разумнее запрашивать радиус, как ты запрашиваешь все остальное. Хотя, я вообще не понимаю, как это вяжется с условием, в котором центр окружности железно помещен в начало координат..
2. Проверку на равенство двух переменных типа real (и подобных) нельзя проводить простым равенством. Дело в том, что из-за неизбежных ошибок вычисления два равных числа могут реально оказаться неравными в машинном представлении. Нужно сравнивать разность чисел с подходящим маленьким числом, например: Abs(a-b)<1e-7 Это число выбирается из соображений длины представления используемого типа и порядка чисел.
SataNi
28.09.2006 10:29
Цитата(lapp @ 28.09.2006 5:18)
1. Почему ты рассчитываешь радиус окружности так: r:=SQRT(SQR(o1)+SQR(o2)); ? Получается, что твоя окружность обязательно проходит через начало координат.
Почему? Не проходит она обязательно через начало координат... Так я рассчитываю, потому что окружность задана таким уравнением... Просто по введённым координатам программа рассчитывает радиус, формула которого записана в условии... Разве неправильно?
Цитата(lapp @ 28.09.2006 5:18)
2. Проверку на равенство двух переменных типа real (и подобных) нельзя проводить простым равенством.
Это лаборатрная по теме разветвляющиеся алгоритмы, 3я по счёту.. Думаю преподам пофиг будет на это... Лишь бы алгоритм верный был...
Lapp
28.09.2006 11:03
Цитата(SataNi @ 28.09.2006 7:29)
Почему? Не проходит она обязательно через начало координат... Так я рассчитываю, потому что окружность задана таким уравнением... Просто по введённым координатам программа рассчитывает радиус, формула которого записана в условии... Разве неправильно?
Смотри рисунок. Это то, что ты делаешь. Нажмите для просмотра прикрепленного файла В условии было x^2+y^2=r^2, то есть окружность с центром в начале координат. Боюсь, ты путаешь координаты точки на окружности (х,у) и координаты ее центра (о1,о2)
Цитата(SataNi @ 28.09.2006 7:29)
Это лаборатрная по теме разветвляющиеся алгоритмы, 3я по счёту.. Думаю преподам пофиг будет на это... Лишь бы алгоритм верный был...
Ну-ну.. хотя бы знай, что ответить, если спросят..
Volvo (guest)
28.09.2006 12:06
Цитата
Думаю преподам пофиг будет на это... Лишь бы алгоритм верный был...
"Преподы", как ты их называешь, сначала запустят программу, и если программа выдаст неверный результат (а при таком сравнении - вероятность велика), то они даже не посмотрят на твой алгоритм, потому что программа в первую очередь должна выдавать правильный ответ, а уж потом делать это красиво, быстро, и т.д.
SataNi
28.09.2006 22:04
До меня не дойдёт почему у окружности центр - начало координат? В условии этого не сказано...
Lapp
29.09.2006 3:59
Цитата(SataNi @ 28.09.2006 19:04)
До меня не дойдёт почему у окружности центр - начало координат? В условии этого не сказано...
Общее уравнение окружности такое: (x-Xc)^2 + (y-Yc)^2 = r^2 где Xc, Yc - координаты центра окружности.
У тебя в условии уравнение такое: x^2+y^2=r^2
Что можно переписать так: (x-0)^2 + (y-0)^2=r^2
Теперь сравни это с общим уравнением. Видишь? Xc и Yc равны нулю.. Ясно?
SataNi
29.09.2006 11:59
Теперь ясно... То есть получается, что координаты центра окружности известны(начало координат) и надо сделать ввод с клавы радиуса... Только на кой хрен мне тогда нужны x и y? Зачем мне эта точка на окружности? PS: Сорри что туплю
Lapp
29.09.2006 17:07
Цитата(SataNi @ 29.09.2006 8:59)
Только на кой хрен мне тогда нужны x и y? Зачем мне эта точка на окружности?
Ты про какие x и y? Которые входят в уравнение? Они представляют произвольную точку на кривой (в данном случае - окружности). Как же без них записать уравнение?.. Ты прав, тебе нужно вводить только радиус. И проверять лежат ли вершины треугольника на этой укружности (то есть удовлетворяют ли их координаты ур-ию окружности) - это для случая описанной окружности - либо делать проверку для вписанной (скажем, как ты делал). Теперь понятнее?
SataNi
29.09.2006 20:14
Спасибо! Вроде понял . Как проверят отпишусь
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.