sinusoide

esci con turbomatematica.htm

program sinusoide;
(* curve sinusoidali *)

uses crt,graph;
var pausa: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 sinusoidali');
writeln('collegamento tra cerchio e sinusoide');
writeln('stampa angoli,radianti,valore seno');
writeln('indica velocita simulazione:1..100..200..');
readln(pausa);
end;

procedure disegna;
var x2,y2,raggio,angolo,finale,seno,seno1,coseno,x,y,x1:integer;
rad,rad1:real;
ang,rads,vaseno:string;
begin
x:=120;
y:=120;
y2:=300;
x2:=200;
finale:=360;
raggio:=100;
x1:=x+raggio+30;
line(1,y,700,y);
outtextxy(10,10,'curva sinusoidale');
outtextxy(x2-100,y2-20,'gradi');
outtextxy(x2,y2-20,'radianti');
outtextxy(x2+200,y2-20,'seno angolo');
circle(x,y,raggio);
for angolo:=0 to finale do
begin
str(angolo,ang);
setcolor(7);
rad:=(angolo+90)*PI/180;
rad1:=(angolo*PI/180);
seno:=(trunc(raggio*sin(rad)));
seno1:=trunc(-raggio*sin(rad1));
str(sin(angolo*PI/180),vaseno);
str(rad1,rads);
line(x1+angolo,y+seno1,x1+angolo,y+seno1);
coseno:=trunc(raggio*cos(rad));
line(x+seno,y+coseno,x+seno,y+coseno);
if (angolo<=90) or (angolo>=180) and (angolo<=270) then sound(360+angolo)
else sound(360-angolo);
if (angolo=0) or (angolo=30) or (angolo=60) or (angolo=90)
or (angolo=120) or (angolo=150) or (angolo=180)
or (angolo=210) or (angolo=240) or (angolo=270)
or (angolo=300) or (angolo=330) or (angolo=360) then
begin
y2:=y2+10;
outtextxy(x2-100,y2,ang);
outtextxy(x2,y2,rads);
outtextxy(x2+200,y2,vaseno);
setcolor(6);
line(x+seno,y+coseno,x+seno,y);
setcolor(5);
line(x+seno,y+coseno,x1+angolo,y+seno1);
setcolor(3);
line(x,y,x+seno,y+coseno);
end;
delay(pausa);
end;
nosound;
outtextxy(400,10,'premi ENTER');
readln;
end;

begin
clrscr;
testo;
grafica;
disegna;
closegraph;
writeln('premi enter');
readln;
clrscr;
end.