Автор: TOPEHTO 8.12.2006 0:59
Всем доброго времени суток!
Вот сеголня еще задали...В паскалевской графики Я вообще не силен, поэтому надеюсь что хоть ктонибудь даст алгоритм и не пройдет мима...
1 треугольник
Цитата
Построить на экране треугольник по введенным длинам трех сторон. Построенный треугольник должен поместиться на экране. Его изображение должно соответствовать принятым в школе стандартам: тупоугольный треугольник должен быть ориентирован большей стороной вниз; прямоугольный треугольник должен стоять на катете (прямой угол слева); равнобедренный треугольник должен стоять на основании.
2 треугольник
Цитата
Вывести на экран вращающееся изображение произвольного невырожденного треугольника.
в душе не представляю как это делать...народ подскажите хотя бы алгоритм, ПОИСК рез-татов не дал, хотя смотрел хорошо...
...
Автор: volvo 8.12.2006 7:07
Ну, начинать тебе надо совсем не с графики... Графика и отрисовка результата - завершающий этап...
Начинай с определения, является ли треугольник равносторонним/прямоугольным/тупоугольным... (кстати, в задании есть небольшая недоговоренность, что-ли: как, например, должен располагаться прямоугольный равнобедренный треугольник? Я надеюсь, оспаривать возможность его существования ты не станешь )
Сможешь по длинам трех сторон однозначно определить, к какому из этих видов треугольников относится заданный тебе?
Автор: TOPEHTO 8.12.2006 18:27
Н-у-у-у-у-у-у как тебе сказать чтобы сильно в твоих глазах не упасть... ...
Вообщем мне бы хотяб на словах алгоритм и поподробнее, а родить Я чтонибудь попытаюсь...просто сам алгоритмы рожать не могу...ну не получается и все тут... ...
А насчет того что если прямоугольный равнобедренный...думаю что тех которые в условие за глаза...
Цитата
тупоугольный треугольник должен быть ориентирован большей стороной вниз; прямоугольный треугольник должен стоять на катете (прямой угол слева); равнобедренный треугольник должен стоять на основании.
плиз помоги...хотя бы морально...
...
Автор: TOPEHTO 9.12.2006 3:33
Ребят ну помогите плиз........а то опять затухнет тема......
Автор: мисс_граффити 9.12.2006 3:48
что-то вспомнился Майерс....
в программе начать надо явно с проверки, можно ли из этих сторон слепить треугольник.
а так - подумай, чисто математически, как, зная координаты 2 вершин треугольника и длины сторон, найти координаты третей.
Автор: TOPEHTO 29.12.2006 16:05
Ну народ...выручайте...
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.
Очень надеюсь на Вашу помощь...
...
Автор: TOPEHTO 31.12.2006 16:33
ну что...никто помочь не может!
Автор: volvo 31.12.2006 16:36
Ну ТЫ же вопрос во втором посте проигнорировал, с чего бы на ТВОИ вопросы теперь должны отвечать?
Автор: ramzes 31.12.2006 20:47
Вот куб крутится, может пригодится.
Прикрепленные файлы
KUB1.PAS ( 1.79 килобайт )
Кол-во скачиваний: 251
Автор: TOPEHTO 1.01.2007 0:01
Volvo, Ну что ты злишся?
Естественно не смогу...ну так на вскидку...если толком расскажешь-может и смогу