IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Треугольник, И всё что с ним связано.
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской
Реальное имя: Max

Репутация: -  0  +


задача по курсовой
По координатам трех точек построить треугольник (если это возможно, в про-тивном случае заново ввести координаты трех точек). Построить на чертеже треугольника все его медианы, биссектрисы, высоты, вписанную и описанную окружности. Рассчитать и вывести рядом с треугольником основные параметры (длины сторон, медиан, биссектрис, высот, радиусов вписанной и описанной окружностей). Построение и расчет характеристик делать одновременно: по-строить треугольник и вывести длины его сторон, начертить все медианы и вы-вести их длины и т.д.

Вобщем с углами, сторонами, медианами и биссектрисами я вроде разобрался, насчёт высот - прошу проверить, мне кажется что не всё учтено. Просьба подсказать как находить центр описанной окружности, радиус и ценрт вписанной окружности.
Не судите строго, просто я сам сейчас в 9 классе.

Вот нароботки кода (если лучше его убрать в .txt файл, то скажите, я понимаю что он огромный):
здесь я использую рандомное задание координат, чтобы профиксить все баги.

program
GrafChast;

uses
Crt, Graph;

var
AB, BC, CA:real;
XA, YA, XB, YB, XC, YC: Integer;
XMA, YMA, XMB, YMB, XMC, YMC: Integer;
MA, MB, MC: Real;
Driver, Mode: integer;
CosA, CosB, CosC,CosA2, SinA2, TanA2: Real;
SinA, SinB, SinC: Real;
XKA, YKA, XKB, YKB, XKC, YKC: Integer;
KA, KB, KC: Real;
UA,UB,UC: Real;
SumU: Real;
Square, Perimetr, PolPerimetr: Real;
HA, HB, HC: Real;
XHA, YHA, XHB, YHB, XHC, YHC: Integer;
HA1, HA2, HB1, HB2, HC1, HC2: Real;
T: Real;
RadiusO: Real;
XRO, YRO: Integer;
label
L1;

begin
L1:clrscr;

{-------------------------------------------------------------}

{Vvod koordinat}
{ writeln('***Vvedite koordinati to4ek***');

writeln;
writeln('To4ka A');
gotoxy(1, 4);
write('X= ');
gotoxy(7, 4);
write('Y=');
gotoxy(3, 4);
readln(XA);
gotoxy(9, 4);
readln(YA);

writeln;
writeln('To4KA B');
gotoxy(1, 7);
write('X=');
gotoxy(7, 7);
write('Y=');
gotoxy(3, 7);
readln(XB);
gotoxy(9, 7);
readln(YB);

writeln;
writeln('To4KA C');
gotoxy(1, 10);
write('X=');
gotoxy(7, 10);
write('Y=');
gotoxy(3, 10);
readln(XC);
gotoxy(9, 10);
readln(YC);

if (XA > 640) or (XB > 640) or (XC > 640) or (YA > 480) or (YB > 480) or (YC > 480) then
begin
writeln('Nepravilno Zadani koordinati to4ek!!!');
readkey;
goto l1;
end; }

randomize;
XA:=random(640);
YA:=random(480);
XB:=random(640);
YB:=random(480);
XC:=random(640);
YC:=random(480);
{ XA:=320;
YA:=60;
XB:=90;
YB:=380;
XC:=549;
YC:=130;

{-------------------------------------------------------------}

{Storoni}
AB := sqrt((XB - XA) * (XB - XA) + (YB - YA) * (YB - YA));
BC := sqrt((XC - XB) * (XC - XB) + (YC - YB) * (YC - YB));
CA := sqrt((XA - XC) * (XA - XC) + (XA - YC) * (YA - YC));

if (AB + BC <= CA) or (BC + CA <= AB) or (CA + AB <= BC) then
begin
writeln('Postroenia treugolniKA nevozmogno!!!');
readkey;
goto l1;
end;

Perimetr := AB + BC + CA;
PolPerimetr := Perimetr / 2;
Square := sqrt(PolPerimetr * (PolPerimetr - AB)*(PolPerimetr - BC)*(PolPerimetr - CA));
{-------------------------------------------------------------}

{Mediani}
XMA := trunc((XB + XC) / 2);
YMA := trunc((YB + YC) / 2);
MA := sqrt((XA - XMA) * (XA - XMA) + (YA - YMA) * (YA - YMA));

XMB := trunc((XC + XA) / 2);
YMB := trunc((YC + YA) / 2);
MB := sqrt((XB - XMB) * (XB - XMB) + (YB - YMB) * (YB - YMB));

XMC := trunc((XA + XB) / 2);
YMC := trunc((YA + YB) / 2);
MC :=sqrt((XC - XMC) * (XC - XMC) + (YC - YMC) * (YC - YMC));

{Cos and Sin}
CosA := (BC * BC - AB * AB - CA * CA) / ((-2) * AB * CA);
SinA := sqrt(1 - CosA * CosA);

CosB := (CA * CA - AB * AB - BC * BC) / ((-2) * AB * BC);
SinB := sqrt(1 -CosB * CosB);

CosC := (AB * AB - BC * BC - CA * CA) / ((-2) * BC * CA);
SinC := sqrt(1 - CosC * CosC);

{-------------------------------------------------------------}

{Bissektrisi}
XKA := trunc((CA * XB + AB * XC) / (CA + AB));
YKA := trunc((CA * YB + AB * YC) / (CA + AB));
KA := sqrt((XA - XKA) * (XA - XKA) + (YA - YKA) * (YA - YKA));

XKB := trunc((AB * XC + BC * XA) / (AB + BC));
YKB := trunc((AB * YC + BC * YA) / (AB + BC));
KB := sqrt((XB - XKB) * (XB - XKB) + (YB - YKB) * (YB - YKB));

XKC := trunc((BC * XA + CA * XB) / (BC + CA));
YKC := trunc((BC * YA + CA * YB) / (BC + CA));
KC := sqrt((XC - XKC)*(XC - XKC)+(YC - YKC)*(YC - YKC));

{-------------------------------------------------------------}

HA := 2 * Square / BC;
HB := 2 * Square / CA;
HC := 2 * Square / AB;

T := arctan((YC - YB) / BC / sqrt(1 - ((YC - YB) / BC) * ((YC - YB) / BC)));
if XB > XC then
T := Pi - T;
HA1 := sqrt(sqr(AB) - sqr(HA));
HA2 := sqrt(sqr(CA) - sqr(HA));

if (HA1 + HA2 > BC) and (HA1 < HA2) then
HA1 := -HA1;

XHA := round(HA1 * cos(T))+XB;
YHA := round(HA1 * sin(T))+YB;

T := arctan((YA - YC) / CA / sqrt(1 - ((YA - YC) / CA) * ((YA - YC) / CA)));
if XC > XA then
T := Pi - T;
HB1 := sqrt(sqr(BC) - sqr(HB));
HB2 := sqrt(sqr(AB) - sqr(HB));

if (HB1 + HB2 > CA) and (HB1 < HB2) then
HB1 := -HB1;

XHB := round(HB1 * cos(T))+XC;
YHB := round(HB1 * sin(T))+YC;

T := arctan((YB - YA) / AB / sqrt(1 - ((YB - YA) / AB) * ((YB - YA) / AB)));
if XA > XB then
T := Pi - T;
HC1 := sqrt(abs(sqr(CA) - sqr(HB)));
HC2 := sqrt(abs(sqr(BC) - sqr(HB)));

if (HC1 + HC2 > AB) and (HC1 < HC2) then
HC1 := -HC1;

XHC := round(HC1 * cos(T))+XA;
YHC := round(HC1 * sin(T))+YA;

{-------------------------------------------------------------}

{Ugli}
if CosA < 0 then
UA := 180 - arctan(SinA / sqrt(1 - SinA * SinA)) * 180 / pi
else UA := arctan(SinA / sqrt(1 - SinA * SinA)) * 180 / pi;

if CosB < 0 then
UB := 180 - arctan(SinB / sqrt(1 - SinB * SinB)) * 180 / pi
else UB := arctan(SinB / sqrt(1 - SinB * SinB)) * 180 / pi;

if CosC < 0 then
UC := 180 - arctan(SinC / sqrt(1 - SinC * SinC)) * 180 / pi
else UC := arctan(SinC / sqrt(1 - SinC * SinC)) * 180 / pi;
SumU := UA + UB + UC;

{-------------------------------------------------------------}

RadiusO :=Square / PolPerimetr;
CosA2 := sqrt((1 + CosA) / 2);
SinA2 := sqrt(1 - sqr(CosA2));
TanA2 := SinA2 / CosA2;
XRO := round(RadiusO / TanA2);
YRO := round(RadiusO);

{-------------------------------------------------------------}

{Vivod INFO}
writeln;
writeln('***AB=', AB:5:2, '*** ');
writeln('***BC=', BC:5:2, '*** ');
writeln('***CA=', CA:5:2, '*** ');

writeln;
writeln('***MA=', MA:5:2, '*** ');
writeln('***MB=', MB:5:2, '*** ');
writeln('***MC=', MC:5:2, '*** ');

writeln;
writeln('***KA=', KA:5:2, '*** ');
writeln('***KB=', KB:5:2, '*** ');
writeln('***KC=', KC:5:2, '*** ');

writeln;
writeln('***CosA=', CosA:5:2, '*** ');
writeln('***CosB=', CosB:5:2, '*** ');
writeln('***CosC=', CosC:5:2, '*** ');

writeln;
writeln('***^A=', UA:5:2, '*** ');
writeln('***^B=', UB:5:2, '*** ');
writeln('***^C=', UC:5:2, '*** ');
writeln('***^A + ^B + ^C = ', SumU:5:2, '***');

driver := 9;
mode := 2;
initgraph(driver, mode, 'EGAVGA.BGI');

setbkcolor(black);

{-------------------------------------------------------------}
circle(XRO, YRO, Round(RadiusO));

{Storoni}
setcolor(white);

putpixel(XA, YA, white);
outtextxy(XA + 4, YA + 4, 'A');

putpixel(XB, YB, white);
outtextxy(XB + 4, YB + 4, 'B');

putpixel(XC, YC, white);
outtextxy(XC + 4, YC + 4, 'C');

setcolor(green);

line(XA, YA, XB, YB);
line(XB, YB, XC, YC);
line(XC, YC, XA, YA);

{-------------------------------------------------------------}

{Visoti}
setcolor(white);

putpixel(XHA, YHA, white);
outtextxy(XhA + 4, YhA + 4, 'H1');

putpixel(XHB, YHB, white);
outtextxy(XHB + 4, YHB + 4, 'H2');

putpixel(XHC, YHC, white);
outtextxy(XHC + 4, YHC + 4, 'H3');

setcolor(yellow);

line(XA, YA, XHA, YHA);
line(XB, YB, XHB, YHB);
line(XC, YC, XHC, YHC);

{-------------------------------------------------------------}

{Mediani}
setcolor(white);

putpixel(XMA, YMA, white);
outtextxy(XMA + 4, YMA + 4, 'M1');

putpixel(XMB, YMB, white);
outtextxy(XMB + 4, YMB + 4, 'M2');

putpixel(XMC, YMC, white);
outtextxy(XMC + 4, YMC + 4, 'M3');

setcolor(red);

line(XA, YA, XMA, YMA);
line(XB, YB, XMB, YMB);
line(XC, YC, XMC, YMC);

{-------------------------------------------------------------}

{Bissektrisi}
setcolor(white);

putpixel(XKA, YKA, white);
outtextxy(XKA + 4, YKA + 4, 'K1');

putpixel(XKB, YKB, white);
outtextxy(XKB + 4, YKB + 4, 'K2');

putpixel(XKC, YKC, white);
outtextxy(XKC + 4, YKC + 4, 'K3');

setcolor(blue);

line(XA, YA, XKA, YKA);
line(XB, YB, XKB, YKB);
line(XC, YC, XKC, YKC);

{-------------------------------------------------------------}

readkey;

closegraph;

end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской
Реальное имя: Max

Репутация: -  0  +


Мне будет известен радиус, кроме него, для того чтобы построить окружость нужен и ценрт, допустим через советы Michael_Rybak я найду нужные стороны, но как найти точки?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Maxim Razor   Треугольник   5.01.2008 4:58
Bard   Ну пожалуй я тебе смогу помочь только формулами :y…   5.01.2008 22:08
Maxim Razor   Спасибо! Насчёт радиуса помог, но как координа…   6.01.2008 16:50
Michael_Rybak   Для вписанной. Смотри, для угла ВАС. Центр вписанн…   6.01.2008 17:54
Maxim Razor   спасибо, поидее суть я понял, но вот мучает вопрос…   6.01.2008 18:01
compiler   Как зная первую точку и дину отрезка найти вторую …   6.01.2008 18:04
Maxim Razor   Мне будет известен радиус, кроме него, для того чт…   6.01.2008 18:24
Michael_Rybak   Ты знаешь луч АС, на котором находится точка Н, …   6.01.2008 18:26
Maxim Razor   Бррр...Вроде и понятно, а вроде и не понятно :wall…   6.01.2008 19:11
Michael_Rybak   в виде кода - не вижу в этом необходимости. что не…   6.01.2008 20:56
Maxim Razor   Или, если так понятнее: тебе нужна точка Н, котора…   6.01.2008 23:31
Michael_Rybak   Правильно, но есть еще второй "центр": …   7.01.2008 3:47
Maxim Razor   Спасибо, буду пытаться, слушай, а можешь посмотрет…   7.01.2008 16:51
Michael_Rybak   Нет, извини, искать чужие баги мне лень. Разберись…   7.01.2008 20:08
Maxim Razor   Help, вписанную скошено рисует, а описанная тоже с…   9.01.2008 21:22
Maxim Razor   Пожалусто, помогите, только это осталось :mega_ch…   15.01.2008 1:06
Michael_Rybak   Пожалуйста, запости полный код в последней версии.   15.01.2008 2:04
Maxim Razor   program GrafChast; uses Crt, Graph; var AB,…   15.01.2008 2:18
Michael_Rybak   Ты меня таки заставил искать баги :) Ок. Только в…   15.01.2008 2:46
Maxim Razor   Знаешь что я хочу сказать... ОГРОМНОЕ ЧЕЛОВЕЧЕСКО…   15.01.2008 3:08
Michael_Rybak   Всегда пожалуйста :) Удачи! :)   15.01.2008 3:15


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 6:26
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name