Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Пострить треугольники

Автор: TOPEHTO 8.12.2006 0:59

Всем доброго времени суток!
Вот сеголня еще задали...В паскалевской графики Я вообще не силен, поэтому надеюсь что хоть ктонибудь даст алгоритм и не пройдет мима...
1 треугольник

Цитата
Построить на экране треугольник по введенным длинам трех сторон. Построенный треугольник должен поместиться на экране. Его изображение должно соответствовать принятым в школе стандартам: тупоугольный треугольник должен быть ориентирован большей стороной вниз; прямоугольный треугольник должен стоять на катете (прямой угол слева); равнобедренный треугольник должен стоять на основании.

2 треугольник
Цитата
Вывести на экран вращающееся изображение произвольного невырожденного треугольника.

в душе не представляю как это делать...народ подскажите хотя бы алгоритм, ПОИСК рез-татов не дал, хотя смотрел хорошо... wacko.gif wacko.gif wacko.gif ...

Автор: volvo 8.12.2006 7:07

Ну, начинать тебе надо совсем не с графики... Графика и отрисовка результата - завершающий этап...

Начинай с определения, является ли треугольник равносторонним/прямоугольным/тупоугольным... (кстати, в задании есть небольшая недоговоренность, что-ли: как, например, должен располагаться прямоугольный равнобедренный треугольник? Я надеюсь, оспаривать возможность его существования ты не станешь wink.gif )

Сможешь по длинам трех сторон однозначно определить, к какому из этих видов треугольников относится заданный тебе?

Автор: TOPEHTO 8.12.2006 18:27

Н-у-у-у-у-у-у как тебе сказать чтобы сильно в твоих глазах не упасть... unsure.gif ...
Вообщем мне бы хотяб на словах алгоритм и поподробнее, а родить Я чтонибудь попытаюсь...просто сам алгоритмы рожать не могу...ну не получается и все тут... nea.gif ...
А насчет того что если прямоугольный равнобедренный...думаю что тех которые в условие за глаза...

Цитата
тупоугольный треугольник должен быть ориентирован большей стороной вниз; прямоугольный треугольник должен стоять на катете (прямой угол слева); равнобедренный треугольник должен стоять на основании.

плиз помоги...хотя бы морально... smile.gif ...

Автор: TOPEHTO 9.12.2006 3:33

Ребят ну помогите плиз........а то опять затухнет тема...sad.gif...

Автор: мисс_граффити 9.12.2006 3:48

что-то вспомнился Майерс....
в программе начать надо явно с проверки, можно ли из этих сторон слепить треугольник.

а так - подумай, чисто математически, как, зная координаты 2 вершин треугольника и длины сторон, найти координаты третей.

Автор: TOPEHTO 29.12.2006 16:05

Ну народ...выручайте...smile.gif
1 задачу все еще надо сделать и сдать, очень на Вас надеюсь...а вращающийся треугольник сделал, может кому и понадобится

Цитата
{$N+}
{$E+}
Program lab6_2;
uses Crt, Graph;
var Gd, Gm: Integer;
x1,x2,x3,y1,y2,y3:integer;
xc,yc:integer;
xx1,xx2,xx3,yy1,yy2,yy3:integer;
ugol,wag:real;
r1,r2,r3,u1,u2,u3:real;
g:boolean;
a:Char;
Procedure system_delay(x:longint);
var system_timer:longint absolute $0000:$046C;
stop_timer:longint;
begin
stop_timer:=system_timer;
repeat
until (stop_timer+x)<=system_timer;
End;

Function opred_ugol(katy,katx:integer):real;
var uu:real;
begin
if (katy<0)and(katx<0) then uu:=arctan((-1)*katy/katx);
if (katy<0)and(katx>0) then uu:=arctan((-1)*katy/katx)+Pi;

if ((katy>=0)and(katx<0)) then uu:=arctan((-1)*katy/katx);
if ((katy>=0)and(katx>0)) then uu:=arctan((-1)*katy/katx)+Pi;

if (katy<0)and(katx=0) then uu:=3*Pi/2;
if (katy>=0)and(katx=0) then uu:=Pi/2;
opred_ugol:=uu;
End;

begin
clrscr;
Write('Enter x1,y1,x2,y2,x3,y3: ');
Readln(x1,y1,x2,y2,x3,y3);
Write('Enter to4ku dentra vrawenii(x,y): ');
Readln(xc,yc);
Write('Enter wag: ');
Readln(wag);
Write('Pokazivat vspomogatelnie okrugnosti(y/n): ');
Readln(a);
g:=a='y';
r1:=sqrt(sqr(x1-xc)+sqr(y1-yc));
r2:=sqrt(sqr(x2-xc)+sqr(y2-yc));
r3:=sqrt(sqr(x3-xc)+sqr(y3-yc));
u1:=opred_ugol(y1-yc,x1-xc);
u2:=opred_ugol(y2-yc,x2-xc);
u3:=opred_ugol(y3-yc,x3-xc);
ugol:=0;
Gd := Detect;
InitGraph(Gd, Gm, '');
repeat
xx1:=xc+Round(r1*cos(ugol+u1));
yy1:=yc+Round(r1*sin(ugol+u1));
xx2:=xc+Round(r2*cos(ugol+u2));
yy2:=yc+Round(r2*sin(ugol+u2));
xx3:=xc+Round(r3*cos(ugol+u3));
yy3:=yc+Round(r3*sin(ugol+u3));
ClearDevice;
if g then begin
setcolor(3);
Circle(xc,yc,Round(r1));
Circle(xc,yc,Round(r2));
Circle(xc,yc,Round(r3));
End;
setcolor(15);
MoveTo(xx1,yy1);
LineTo(xx2,yy2);
LineTo(xx3,yy3);
LineTo(xx1,yy1);
if (ugol<6.28) then ugol:=ugol+wag else ugol:=ugol+wag-6.28;
system_delay(2);
until KeyPressed;
CloseGraph;
end.

Очень надеюсь на Вашу помощь... wink.gif ...

Автор: TOPEHTO 31.12.2006 16:33

ну что...никто помочь не может! dry.gif

Автор: volvo 31.12.2006 16:36

Ну ТЫ же вопрос во втором посте проигнорировал, с чего бы на ТВОИ вопросы теперь должны отвечать? mad.gif

Автор: ramzes 31.12.2006 20:47

Вот куб крутится, может пригодится.


Прикрепленные файлы
Прикрепленный файл  KUB1.PAS ( 1.79 килобайт ) Кол-во скачиваний: 177

Автор: TOPEHTO 1.01.2007 0:01

Volvo, Ну что ты злишся?smile.gif
Естественно не смогу...ну так на вскидку...если толком расскажешь-может и смогу