sinusoide

esci con turbomatematica.htm

program seno3;
(* curve trigonometriche *)

uses crt,graph;
var x,y,pausa,raggio,inizio,fine:integer;

procedure grafica;
var sc,tp:integer;
stringa:string;
begin
sc:=0;
tp:=0;
stringa:='bgi';
initgraph(sc,tp,stringa);
end;

procedure testo;
begin
writeln('rappresentazione curve cerchio trigonometrico');
writeln('indica velocita simulazione:1..100..200..');
readln(pausa);
writeln('indica angolo iniziale 0..30..90..');
readln(inizio);
writeln('indica angolo finale 30..90..360..');
readln(fine);
end;

procedure assi;
begin
setcolor(7);
line(10,y,350,y);
line(x,10,x,350);
end;

procedure traccia(a,b,cs,sn:integer;s,c,g,r:string);
begin
assi;
setcolor(a);
outtextxy(400,20,s);
line(x+cs,y,x+cs,y+sn);
setcolor(b);
outtextxy(400,40,c);
line(x,y,x+cs,y);
setcolor(6);
line(x,y,x+cs,y+sn);
outtextxy(400,60,g);
outtextxy(400,80,r);
delay(pausa);
setcolor(0);
outtextxy(400,20,s);
outtextxy(400,40,c);
outtextxy(400,60,g);
outtextxy(400,80,r);
end;

procedure disegna;
var angolo,seno,coseno,ragc,sinc,cosc:integer;
rad,sr,cr:real;
senos,cosenos,angolos,rads:string;

begin
line(200,10,200,350);
line(10,y,350,y);
outtextxy(300,20,'seno');
outtextxy(300,40,'coseno');
outtextxy(300,60,'angolo');
outtextxy(300,80,'radianti');
ragc:=30;
outtextxy(430,350,'sinusoide rossa');
outtextxy(430,370,'cosinusoide azzurra');
for angolo:=inizio to fine do
begin
rad:=angolo*PI/180;
seno:=-trunc(raggio*sin(rad));
sinc:=-trunc(ragc*sin(rad));
sr:=-100*sin(rad);
cr:=100*cos(rad);
coseno:=trunc(raggio*cos(rad));
cosc:=-trunc(ragc*cos(rad));
str(-sr,senos);
str(cr,cosenos);
str(angolo,angolos);
str(rad,rads);
setcolor(7);
circle(x,y,raggio);
setcolor(4);
line(50+angolo,380,50+angolo,380+sinc);
setcolor(3);
line(50+angolo,380,50+angolo,380+cosc);
setcolor(4);
line(50+angolo,380+sinc,50+angolo,380+sinc);
if (angolo<=90) then traccia(2,3,coseno,seno,senos,cosenos,angolos,rads);
if (angolo>=90) then traccia(4,5,coseno,seno,senos,cosenos,angolos,rads);
if (angolo>=180) then traccia(1,6,coseno,seno,senos,cosenos,angolos,rads);
if (angolo>=270) then traccia(4,3,coseno,seno,senos,cosenos,angolos,rads);
end;
assi;
outtextxy(10,400,'premi enter');
readln;
end;

begin
clrscr;
x:=200;
y:=200;
raggio:=150;
testo;
grafica;
disegna;
readln;
closegraph;
writeln('premi enter');
readln;
clrscr;
end.