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

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - 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