Паскаль. Разработка программы для построения графика
Помогите пожалуста решить. Очень надо!
Нужно разработать программу для построения графика. Программа должна быть разбита на подпрограммы, решающие частные подзадачи. Желательно предусмотреть возможность изменения масштаба и фазы в тригонометрических функциях в реальном времени. x(t)=((sin(2t))^4)+((cos(4t))^3) y(t)=((cos(4t+6))^4)+((sin(4t))^3)
|
Вложений: 3
Да... забавная игрушка получилась. Правда, насчет масштаба и фазы я не очень понял, а потому ограничился фазой, причем под фазой подразумевается слагаемое, стоящее в формуле y(t) под косинусом, исходное значение коего равно 6 - вот его я и меняю. Для увеличения фазы на 1 нажимаем ↑ на клавиатуре, соответственно для уменьшения - ↓ (допускаются и отрицательные значения), а для выхода жмем клавишу "Esc".
Код:
Uses CRT, Graph; |
А почему эта прога не работает?
Uses winCRT,winGraph; const x1=0; x2=6; ymax=2; Var gd, gm,r:integer; x,mx,y,my,t:real; st:string; px1,px2,py1,py2,y0,x0,netx,nety:word; procedure Graf(mx,my,cx,cy:integer); var coordX,coordY:integer; t:real; begin t:=0; x:=cx+round(mx*sqr(sin(2*t))*sqr(cos(t))*cos(t)); y:=cy-round(my*sqr(sin(t))*sqr(cos(2*t))); moveto(x0,y0); while t<=2*pi do begin coordX:=cx+round(mx*sqr(sin(2*t))*sqr(cos(t))*cos( t)); coordY:=cy-round(my*sqr(sin(t))*sqr(cos(2*t))); lineto(coordX,coordY); t:=t+0.001; end; end; BEGIN gd:=nopalette; gm:=mCustom; setwindowsize (1280,1024); initgraph(gd,gm,'Function Plot'); if graphresult <>0 then begin writeln('graph error'); halt; end; px1:=80;px2:=getmaxx-60;py1:=60;py2:=getmaxy-30; y0:=(py1+py2) div 2; x0:=(px1+px2) div 2; settextstyle(couriernewfont,horizdir,24); mx:=(px2-px1)/(x2-x1);my:=(py2-py1+1)/(ymax*2); setlinestyle(dottedln,0,normwidth); x:=-(x2 div 2); netx:=(x2-x1) div 5; repeat setcolor($ff00ff); line(trunc(x*mx)+x0,py1,trunc(x*mx)+x0,py2); str(x:0:0,st); setcolor($ffffff); outtextxy(trunc(x*mx)+x0-textwidth(st) div 2, py2+10,st); x:=x+netx; until x > (x2 div 2) ; y:=-ymax; nety:=trunc(ymax*2) div 4; repeat setcolor($ff00ff); line(px1,-trunc(y*my)+y0,px2,-trunc(y*my)+y0); str(y:0:0,st); setcolor($ffffff); outtextxy(px1-20-textwidth(st),-trunc(y*my)+y0-10,st); y:=y+nety; until y>ymax; setcolor($ffffff); setlinestyle(solidln,0,normwidth); moveto(px1,y0); lineto(px2+50,y0); line(px2+50,y0,px2+15,y0-15); line(px2+50,y0,px2+15,y0+15); outtextxy(px2+40,y0+10,'x'); moveto(x0,py2); lineto(x0,py1-50); line(x0,py1-50,x0-15,py1-15); line(x0,py1-50,x0+15,py1-15); outtextxy(x0-30,py1-50,'y'); setcolor(yellow); graf(round(mx),round(my),x0,y0); repeat until keypressed; closegraph; END. |
Часовой пояс GMT +4, время: 23:07. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.