stroom
05.12.2005, 07:34
Никак не могу заставить шарик вращаться ТОЧНО по окружности. Он катится но местами сходит с орбиты потом опять возвращается опять сходит и т.д. Так он описывает приплюснутую с боков окружность.Может кто подобное пробовал делать, может исходник не жалко прислать, мне на Паскале надо но и на сишке разберусь. Вывел результирующую матрицу, прикидывал на листочке координаты точек, вроде составил матрицу правильно. Вывод матрицы в аттаче.
Еще у нас требование обязательное использование страничек видеопамяти, шоб рисунок плавно двигался. Так вот без SetViewPort шо используй странички шо не используй всеравно все блымает. Может в алгоритме где недочет?Устанавливаю Граф режим VgaMed поддерживает две видеостраницы.
Вот кусок исходника(относится к движению шара по орбите)
begin
activepage:=1;
visualpage:=0;
x:=xc-R; //R-радиус орбиты, xc - x-овая координата центра окружности
y:=yc; //yc - y-овая коорд цен окр.
t:=0; //нач угол поворота
repeat
if activepage=1 then activepage:=0 else activepage:=1;
if visualpage=0 then visualpage:=1 else visualpage:=0;
SetActivePage(activepage);
SetVisualPage(visualpage);
SetViewPort(0,0,GetMaxX,GetMaxY,false);
x1:=round((x-xc)*cos(t*Pi/180)+(yc-y)*sin(t*Pi/180)+xc);
y1:=round((x-xc)*sin(t*PI/180)+(y-yc)*cos(t*Pi/180)+yc);
delay(1000);
ClearViewPort;
Drawing; //ну это процедура рисование орбиты и движущегося шарика
t:=t+1; //увел угол на 1 градус
until KeyPressed
end;
Еще у нас требование обязательное использование страничек видеопамяти, шоб рисунок плавно двигался. Так вот без SetViewPort шо используй странички шо не используй всеравно все блымает. Может в алгоритме где недочет?Устанавливаю Граф режим VgaMed поддерживает две видеостраницы.
Вот кусок исходника(относится к движению шара по орбите)
begin
activepage:=1;
visualpage:=0;
x:=xc-R; //R-радиус орбиты, xc - x-овая координата центра окружности
y:=yc; //yc - y-овая коорд цен окр.
t:=0; //нач угол поворота
repeat
if activepage=1 then activepage:=0 else activepage:=1;
if visualpage=0 then visualpage:=1 else visualpage:=0;
SetActivePage(activepage);
SetVisualPage(visualpage);
SetViewPort(0,0,GetMaxX,GetMaxY,false);
x1:=round((x-xc)*cos(t*Pi/180)+(yc-y)*sin(t*Pi/180)+xc);
y1:=round((x-xc)*sin(t*PI/180)+(y-yc)*cos(t*Pi/180)+yc);
delay(1000);
ClearViewPort;
Drawing; //ну это процедура рисование орбиты и движущегося шарика
t:=t+1; //увел угол на 1 градус
until KeyPressed
end;