nn so se ho capito la domanda, ti mando il programma che ho fatto e mi dici se è di questo tipo, poi fammi tutte le domande del caso:
uses graph,wincrt;
const r= 100;
var a,b:smallint;
i,x1,y1,k1:REAL;
k,yr,xr,nk,u,ang:INTEGER;
n:string;
c_1,c_2,delta_x,delta_y,delta,xp,yp,coef_1,coef_2:real;
x,y:array[0..10]of real;
procedure negativa;
begin
c_1:=(-coef_1*x[0]+y[0]);
c_2:=(-coef_2*x[0]+y[0]+r*sqrt(coef_2*coef_2+1));
delta:=(coef_2-coef_1);
delta_x:=(c_1-c_2);
delta_y:=(coef_2*c_1)-(coef_1*c_2);
xp:=delta_x/delta;
yp:=delta_y/delta;
setcolor(blue);
//line(trunc(x[0]),trunc(y[0]),trunc(xp),trunc(yp));
setcolor(trunc(k1));
//setfillstyle(1,trunc(k1));
fillellipse(trunc(xp),trunc(yp),trunc(k1)div 3,trunc(k1)div 2);
delay(50);
end;
procedure positiva;
begin
setcolor(blue);
c_1:=(-coef_1*x[0]+y[0]);
c_2:=(-coef_2*x[0]+y[0]-r*sqrt(coef_2*coef_2+1));
delta:=(coef_2-coef_1);
delta_x:=(c_1-c_2);
delta_y:=(coef_2*c_1)-(coef_1*c_2);
xp:=delta_x/delta;
yp:=delta_y/delta;
//line(trunc(x[0]),trunc(y[0]),trunc(xp),trunc(yp));
setcolor(trunc(k1));
//setfillstyle(1,trunc(k1));
fillellipse(trunc(xp),trunc(yp),trunc(k1)div 3,trunc(k1)div 2);
delay(50);
end;
begin
a:=detect;
initgraph(a,b,'');
xr:=(getmaxx div 2);
yr:=(getmaxy div 2);
x[0]:=(getmaxx div 2);
y[0]:=(getmaxy div 2);
i:=0;
//circle(trunc(x[0]),trunc(y[0]),r);
i:=2;
repeat
//circle(trunc(x[0]),trunc(y[0]),r);
if i>=14.4 then begin i:=2;x[1]:=0;y[1]:=0;xp:=0;yp:=0;end;
i:=(i+0.2); writeln(i);
k1:=k1+0.2;
setcolor(white);
x[1]:= ((x[0])*cos(i)-y[0]*sin(i));
y[1]:= ((x[0])*sin(i)+y[0]*cos(i));
coef_1:= (y[0]-y[1])/(x[0]-x[1]);
coef_2:=-1*(x[0]-x[1])/(y[0]-y[1]);
if(i<=8.6)then negativa;
if(i>8.6) then positiva;
if(trunc(k1)>=260)then k1:=0;
until keypressed;
closegraph;
end.
probabilmente ci saranno un po di variabili che nn sono state usate ma nn ci fare caso.
|