Rysowanie frontów meblowych z sinusami
: 15 wrz 2009, 22:11
Witam mam taki maly program do rysowania fajnych frontow z plecionka z sinus mam problem jednak bo niemoge wyrównac na koncach z gory i z dolu sinusów macie jakis pomysł?
[ Dodano: 2009-09-16, 19:36 ]
chodzi o to by tak dorac zmienne by to wyrównac ma ktos koncepcje?

Kod: Zaznacz cały
// frezowanie frontu po zewnetrznej z mozliwoscia zmiany marginesu
var
x,y,iloscszczeblin: integer;
a,b,ab,dopasowanie,amplituda,wysokosc,margines,krawedz,xa,ya,dwamarginesy,odstep,szczeblina: double;
begin
x := strtoint( inputbox('Szerokosc','Szerokosc frontu','296'));
y := strtoint( inputbox('Wysokosc','wysokosc frontu','713'));
krawedz := strtofloat( inputbox('Krawedz','Odleglosc srodka freza od krawedzi zewnetrznej','-2'));
margines := strtofloat( inputbox('Margines','Odleglosc srodka freza dekora od krawedzi','70'));
begin
clear;
IF margines < 0 THEN
begin
xa := x+(krawedz*-1);
ya := y+(krawedz*-1);
end
ELSE
begin
xa := x-krawedz;
ya := y-krawedz;
end
end;
dwamarginesy:=2*margines;
// 24
SetPenColor (clblue); //Rysowanie H
if (x > dwamarginesy+10) and (y > dwamarginesy+10) then
begin
clear;
// skalowanie do wysokosci (wysokosc teraz to PI*10
dopasowanie:=1;
wysokosc:=y; // wysokosc frezowania
amplituda:=20; // szerokosc calkowita to dwie wartosci amplitudy
ab:=0;
a:=0; //Przesuniecie o 0 PI
b:=0;
WHILE b < wysokosc DO
begin
ab:=margines+(sin(a*dopasowanie)*amplituda);
setpointarray(b,ab,b);
a:=a+0.05;
b:=b+1;
end;
polyline;
refresh;
ab:=0;
a:=3.14; //przesuniecie o PI/1
b:=0;
WHILE b < wysokosc DO
begin
ab:=margines+(sin(a*dopasowanie)*amplituda);
setpointarray(b,ab,b);
a:=a+0.05;
b:=b+1;
end;
polyline;
refresh;
ab:=0;
a:=1.57; // przesuniecie o PI/4
b:=0;
WHILE b < wysokosc DO
begin
ab:=margines+(sin(a*dopasowanie)*amplituda);
setpointarray(b,ab,b);
a:=a+0.05;
b:=b+1;
end;
polyline;
refresh;
ab:=0;
a:=4.71; // przesuniecie o 3PI/4
b:=0;
WHILE b < wysokosc DO
begin
ab:=margines+(sin(a*dopasowanie)*amplituda);
setpointarray(b,ab,b);
a:=a+0.05;
b:=b+1;
end;
polyline;
refresh;
////------------------------------------------------------------prawy
amplituda:=20; // szerokosc calkowita to dwie wartosci amplitudy
ab:=0;
a:=0; //Przesuniecie o 0 PI
b:=0;
WHILE b < wysokosc DO
begin
ab:=(x-margines)+(sin(a*dopasowanie)*amplituda);
setpointarray(b,ab,b);
a:=a+0.05;
b:=b+1;
end;
polyline;
refresh;
ab:=0;
a:=3.14; //przesuniecie o PI/1
b:=0;
WHILE b < wysokosc DO
begin
ab:=(x-margines)+(sin(a*dopasowanie)*amplituda);
setpointarray(b,ab,b);
a:=a+0.05;
b:=b+1;
end;
polyline;
refresh;
ab:=0;
a:=1.57; // przesuniecie o PI/4
b:=0;
WHILE b < wysokosc DO
begin
ab:=(x-margines)+(sin(a*dopasowanie)*amplituda);
setpointarray(b,ab,b);
a:=a+0.05;
b:=b+1;
end;
polyline;
refresh;
ab:=0;
a:=4.71; // przesuniecie o 3PI/4
b:=0;
WHILE b < wysokosc DO
begin
ab:=(x-margines)+(sin(a*dopasowanie)*amplituda);
setpointarray(b,ab,b);
a:=a+0.05;
b:=b+1;
end;
polyline;
refresh;
end
else
begin
end;
if (x >= dwamarginesy+10) and (y <= dwamarginesy+10) then
begin
prostokat (margines,y div 3.33,x-margines,y div 3.33*2);
end
else
begin
end;
if (x <= dwamarginesy+10) and (y > dwamarginesy+10) then
begin
prostokat (x div 3.33,margines,x div 3.33*2,y-margines);
end
else
begin
end;
if (x < dwamarginesy+10) and (y < dwamarginesy+10) then
begin
prostokat (x div 3.33,y div 3.33,x div 3.33*2,y div 3.33*2);
end
else
begin
end;
UstawWysokoscStrony(y+50);
SetWorkWidth(x+50);
SetPenColor (clred); //Rysowanie ramki
prostokat (krawedz,krawedz,xa,ya);
selectall;
end
end.
[ Dodano: 2009-09-16, 19:36 ]
chodzi o to by tak dorac zmienne by to wyrównac ma ktos koncepcje?
