Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2008, 22:57   #11
Lion
 
Регистрация: 27.03.2008
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
ну вы поймите, что вам нужно посчитать для начала центр треугольника!!!! Как - вам рассказал Puporev (смотрите выше...)
То, что Вы написали - никуда не годится. К сожалению, это не так просто, как хотелось бы! ;-(
Да я знаю что не так всё просто, быстро в суматохе в универе взял эту задачу на вычислительную практику,а как начал делать,всё обломалось,а если не сдам не допустят до сессии и отчислят, перспективы никакие

Последний раз редактировалось Lion; 30.03.2008 в 23:00.
Lion вне форума Ответить с цитированием
Старый 30.03.2008, 23:08   #12
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Ну ладно... для начала посмотри теорему Синисов, это для радиуса

Я вчера решил твою задачу, но только иногда треугольник не всписывался (это из-за округлений). А щас я спать, так что если у меня будет хорошое настроение и я не буду занят завтра, то я выложу (наверно!!!!!) листинг проги.
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 31.03.2008, 05:12   #13
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Lion Посмотреть сообщение
Да я знаю что не так всё просто, быстро в суматохе в универе взял эту задачу на вычислительную практику,а как начал делать,всё обломалось,а если не сдам не допустят до сессии и отчислят, перспективы никакие
Lion, то, что вокруг треугольника описана окружность, означает, что его вершины удовлетворяют уравнению одной и той же окружности. Три точки - три уравнения, получаем систему из трёх уравнений второй степени с тремя неизвестными - координаты центра и радиус. Ну что здесь сложного?
B_N вне форума Ответить с цитированием
Старый 31.03.2008, 14:12   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

B_N, если верить Окулову (смотри мой пост #10) то радиус получить можно легче лёгкого:
радиус описанной окружности вычисляется по формуле:
R=(a*b*c)/(4*SQRT(p*(p-a)*(p-b)*(p-c))).
где p=(a+b+c)/2
a,b,c - длины сторон треугольника.

Цитата:
Три точки - три уравнения, получаем систему из трёх уравнений второй степени с тремя неизвестными
что-то торможу... или совсем геометрию забыл ;-((
приведите, пожалуйста, здесь эти уравнения, если несложно...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.03.2008, 18:48   #15
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
приведите, пожалуйста, здесь эти уравнения, если несложно...
Уравнение окружности с центром в точке {a,b}:
(x-a)**2 + (y-b)**2 = R**2

Здесь задача обратная - известны точки окружности, поэтому "разворачиваем" уравнение для каждой из точек:
| (Ax - X)**2 + (Ay - Y)**2 = R**2
| (Bx - X)**2 + (By - Y)**2 = R**2
| (Cx - X)**2 + (Cy - Y)**2 = R**2
А,В,С - известные вершины треугольника, X, Y - искомые координаты центра, R - радиус.
B_N вне форума Ответить с цитированием
Старый 31.03.2008, 20:54   #16
Lion
 
Регистрация: 27.03.2008
Сообщений: 7
По умолчанию

Вы конечно извените,может тупой вопрос,а зачем вычислять радиус окружности и его центр если окружность задается 2-мя точками т.е. квадратом. Мы просто только начали изучать тему с окружностями и я не во всём врубаюсь
Lion вне форума Ответить с цитированием
Старый 31.03.2008, 21:19   #17
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Для того чтобы определить координаты этих двух точек и нужны координаты центра и радиус. Тогда координаты левого верхнего угла будут (Xo-R,Yo-R), соответственно противоположного угла (Xo+R,Yo+R), иначе как ты привяжешься к треугольнику. Короче не тяни резину, сделай или как я сказал, или как B_N, посмотри где проще и рисуй наконец свою окружность.
puporev вне форума Ответить с цитированием
Старый 31.03.2008, 21:54   #18
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Если память не изменяет, сейчас некогда искать, было ещё соотношение: радиус описанной окружности равен стороне треугольника делённой на синус противолежащего угла.
B_N вне форума Ответить с цитированием
Старый 31.03.2008, 23:16   #19
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Систему квадратных уравнений решать слишком муторно. Проще через пересечение нормалей к сторонам треугольника.

Код:
procedure TForm1.FormPaint(Sender: TObject);
var Ax, Ay, Bx, By, Cx, Cy : integer;
    P1x, P1y, Dx, Dy, A1, B1, C1, P2x, P2y, A2, B2, C2, R: double;
begin
   Ax := 120; Ay := 120;
   Bx := 400; By := 120;
   Cx := 150; Cy := 300;

   // Середина отрезка AB
   P1x := (Ax + Bx) / 2;
   P1y := (Ay + By) / 2;
   // Прямая, перпендикулярная AB через точку P1
   // x(Ax-Bx) +y(Ay-By) + C = 0
   A1 := Ax-Bx;
   B1 := Ay-By;
   C1 := -(P1x*A1 + P1y*B1);

   // То-же самое для BC
   P2x := (Bx + Cx) / 2;
   P2y := (By + Cy) / 2;
   A2 := Bx-Cx;
   B2 := By-Cy;
   C2 := -(P2x*A2 + P2y*B2);

   // Точка пересечения прямых
   if A1 <> 0 then begin
      Dy := ((A2 * C1)/A1 - C2) * A1 / (B2 * A1 - B1 * A2);
      Dx := (-C1 - B1 * Dy ) / A1;
   end else begin
      Dx := ((B2 * C1)/B1 - C2) * B1 / (A2 * B1 - A1 * B2);
      Dy := (-C1 - A1 * Dx ) / B1;
   end;

   R := sqrt(sqr(Ax-Dx)+sqr(Ay-Dy));

   canvas.Ellipse(trunc(Dx-R), trunc(Dy-R), trunc(Dx+R), trunc(Dy+R));

   canvas.PolyLine([Point(Ax, Ay), Point(Bx, By), Point(Cx, Cy), Point(Ax, Ay)]);
end;

Последний раз редактировалось alexBlack; 31.03.2008 в 23:20.
alexBlack вне форума Ответить с цитированием
Старый 01.04.2008, 06:01   #20
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

alexBlack Красавчик!! Всё работает!!!
p.s. я же говорил, что через пересечение нормалей решение доступнее, чем через систему квадратных уравнений! ;-))
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан двумерный массив случайных чисел. Построить одномерный из исходного, выбрав из него все числа кратные ProWinD Паскаль, Turbo Pascal, PascalABC.NET 2 16.06.2008 20:12
Поиск разделяющих вершин в произвольном графе... Agnazar Помощь студентам 4 29.05.2008 22:51
нарисовать окружность состоящую из 36 разноцветных квадратов Invisible Hunter Паскаль, Turbo Pascal, PascalABC.NET 2 29.05.2008 18:03
Нужно передвигать окружность с ускорением/ Задачка по Делфи7 НУБ!!! Помощь студентам 4 20.05.2008 21:29
Сайт был недоступен около 40 часов, официальные причины. Alar О форуме и сайтах клуба 2 09.03.2007 16:46