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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2008, 18:59   #1
Lion
 
Регистрация: 27.03.2008
Сообщений: 7
По умолчанию Построить треугольник по координатам его вершин и описать около него окружность.

Люди добрые помогить пожалуйста сделать программу в Turbo Delphi 2006.vcl forms application.Я уже неделю мучаюсь сделать эту задачу ничего не получается,мне надо правда сдавать её уже завтра,кто нибудь попробует её сделать до завтра, до 13.00???
я уже все формулы перерыл ну чё то тугодумне судите строго.
труегольник строю и всё замыкается,а как описать окружность никак.
окружность пробовал рисовать через canvas.arc но не могу додумать какие точки надо туда вписывать.

Последний раз редактировалось Lion; 27.03.2008 в 19:07.
Lion вне форума Ответить с цитированием
Старый 27.03.2008, 19:21   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

http://img91.imageshack.us/my.php?image=graphic1ho4.jpg
Появились идеи?
Можно ещё решить систему трёх квадратных урвнений.
B_N вне форума Ответить с цитированием
Старый 27.03.2008, 21:39   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Если треугольник существует, то:
1.Находим уравнения двух сторон.
2. Находим уравнения нормалей к этим сторонам, проходящих через середины сторон.
3.Решаем систему из двух уравнений с двумя неизвестными-находим центр окружности.
4.Находим радиус-расстояние от центра до любой вершины.
5.Рисуем окружность.
Все формулы в школьном учебнике геометрии, или в любом учебнике по аналитической геометрии.
puporev вне форума Ответить с цитированием
Старый 28.03.2008, 11:24   #4
Lion
 
Регистрация: 27.03.2008
Сообщений: 7
По умолчанию

Да это понятно что формулы есть все,а как это организовать в делфи.
Там получаются действительные числа а нужно целые для описания окружности.Может кто нибудь попробует её сделать,плииззз
Напишите код

Последний раз редактировалось Lion; 28.03.2008 в 12:01.
Lion вне форума Ответить с цитированием
Старый 28.03.2008, 12:07   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

При описании координат точек применяется функция Round, например
x+round(sin(x))-это целое количество пикселей.
puporev вне форума Ответить с цитированием
Старый 28.03.2008, 19:19   #6
Lion
 
Регистрация: 27.03.2008
Сообщений: 7
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
При описании координат точек применяется функция Round, например
x+round(sin(x))-это целое количество пикселей.
можешь её сделать? я её не могу сделать хоть убей.
Lion вне форума Ответить с цитированием
Старый 28.03.2008, 19:47   #7
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Я то могу ее сделать, но учить вместо тебя геометрию, которую подзабыл, полдня считать координаты за тебя не собираюсь, мне это не интересно.
puporev вне форума Ответить с цитированием
Старый 29.03.2008, 11:20   #8
Lion
 
Регистрация: 27.03.2008
Сообщений: 7
По умолчанию

PHP код:
procedure TForm1.Button1Click(SenderTObject);
 var  
pol:array[1..3]of TPoint;
      
xc,yc,x1,x2,x3,y1,y2,y3integer;
begin
 x1 
:=StrToInt(edit1.Text) ;
 
y1 :=StrToInt(edit2.Text);
 
x2 :=StrToInt(edit3.Text);
 
y2 :=StrToInt(edit4.Text);
 
x3 :=StrToInt(edit5.Text);
 
y3 :=StrToInt(edit6.Text);
 if 
not((x1<1) or (y1<1) or (x2<1) or (y2<1) or (x3<1) or (y3<1) or (x1>400) or (y1>400) or (x2>400) or (y2>400) or (x3>400) or (y3>400)) then
  begin
    label7
.Visible:=false;
    
xc:=round(x1+(x3-x1)/2);
    
yc:=round(y2+(y3-y2)/2);
    
Canvas.Ellipse(x1,y2,x3,(2*yc-(y2)+(y3-y2)));
    
pol[1].:=x1;
    
pol[1].:=y1;
    
pol[2].:=x2;
    
pol[2].:=y2;
    
pol[3].:=x3;
    
pol[3].:=y3;
    
Canvas.Polygon(pol); 
Посмотри тут что то неправильно, 2 точки правильно рисует а одна немного выходит за пределы.Пожалуйста сделай у меня больше надежды ненакого.
Lion вне форума Ответить с цитированием
Старый 29.03.2008, 18:47   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну вы поймите, что вам нужно посчитать для начала центр треугольника!!!! Как - вам рассказал Puporev (смотрите выше...)
То, что Вы написали - никуда не годится. К сожалению, это не так просто, как хотелось бы! ;-(
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.03.2008, 20:32   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Кстати, есть такая книжка:
Название: Программирование в алгоритмах
Автор: Окулов С.М.
Издательство: Бином
Год: 2002
Страниц: 341

она была в сети в эл.виде..
например, попробуйте глянуть тут...


Там есть все нужные Вам алгоритмы и формулы (только прийдётся немножко подумать, как их применить).
вот, цитирую оттуда:
как проверить, можно ли построить треугольник.
Даны три отрезка а, b, с. Для существования треугольника с
такими длинами сторон требуется одновременное выполнение
условий (а+Ь>с), (Ь+с>а) и (а+с>Ь).
<...>
Три перпендикуляра к сторонам треугольника, проведенные через их середины, пересекаются в одной точке, служащей центром описанного круга. В тупоугольном треугольнике эта точка лежит вне треугольника, в остроугольном — внутри, в прямоугольном — на середине гипотенузы.
Его радиус вычисляется по формуле
R=(a*b*c)/(4*SQRT(p*(p-a)*(p-b)*(p-c))).
где p=(a+b+c)/2
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