uses crt,graph; type matrix=array [1..4,1..4] of integer; vector=array [1..4] of integer; Point=array [1..2] of integer; var i,j,c:integer; matr,matr_1,matrixX:matrix; vect_1,vect_2,vect_3,vect_4,vect_5:vector; p1,p2,p3,p4:point;
procedure vect_matr(vect:vector;matr:matrix); begin for i:=1 to 4 do begin for j:=1 to 4 do begin vect_5[i]:=vect_5[i]+vect[j]*matr[i,j]; end; end; end;
procedure Risunok; Var Gd,Gm:Integer; Begin Gd:=Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> grOk Then Halt(1);
А что имено должно происходить на экране ?(подробно) Я вижу белый квадрат.
Анна
6.05.2008 0:02
Перерисовка картинки. В данном случае относительно ОХ. Вектор перемножаем на матрицу в результате чего получаются новые координаты фигуры.
renesko1
6.05.2008 1:29
Я не очень понял задание, но попробуй поставить procedure vect_matr(VAR vect:vector;VAR matr:matrix); вместо того что у тебя. Те ты передаешь так по адресу и изменяешь входные папраметры.
Добавлено через 5 мин. А как звучало задание ?
volvo
6.05.2008 1:38
Цитата
matrixX[2,2]:=round(cos(90));
и ему подобные лучше все-таки записывать правильно, в радианах...
andriano
6.05.2008 1:47
Аня, глубоко не копал, но хочу напомнить, что при обращении к тригономерическим функциям аргумент задается в радианах, а не градусах. Вообще же координаты во всех случаях кроме экранных (пиксельных) принято записывать в числах с плавающей точкой. Еще: ты несколько раз суммируешь в vect_5, ни нигде его не очищаешь.
Анна
6.05.2008 11:16
Задание просто заставить фигуру вращаться вокруг осей путем перемножения вектора на матрицу. А где именно обнулять vect_5?
uses crt,graph; type matrix=array [1..4,1..4] of integer; vector=array [1..4] of integer; Point=array [1..2] of integer; var i,j,c:integer; matr,matr_1,matrixX:matrix; vect_1,vect_2,vect_3,vect_4,vect_5:vector; p1,p2,p3,p4:point;
procedure vect_matr(var vect:vector; var matr:matrix); begin for i:=1 to 4 do begin for j:=1 to 4 do begin vect_5[i]:=vect_5[i]+vect[j]*matr[i,j]; end; end; end;
procedure Risunok; Var Gd,Gm:Integer; Begin Gd:=Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> grOk Then Halt(1);