Programozásból kaptam házit, de nem megy. Delphiben, pascal nyelven kellene megcsinálni. Tudnátok segíteni?
Ábrázold az x=20*cos(a)+120*cos(a/3) és az y=20*sin(a)+120*sin(a/3)
egyenletekkel adott toroid görbét az a szögérték 0-19 között változik 0.01 lépésközzel!
itt egy hasonló feladat, amit órán csináltunk:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
UpDown1: TUpDown;
procedure rajzol;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Edit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
kpx,kpy,delta,bfsz:integer;
implementation
{$R *.dfm}
procedure tform1.rajzol;
var
e,r,x,y,i:integer;
alfa,dalfa:double;
begin
e:=40;
r:=360;
dalfa:=((bfsz+1)*2*pi)/6000;
alfa:=0.001;
for i:=1 to 6000 do
begin
x:=kpx+round(e*cos(alfa)+r*cos(alfa/(bfsz+1)));
y:=kpy-round(e*sin(alfa)+r*sin(alfa/(bfsz+1)));
form1.Canvas.Pixels[x,y]:=clyellow;
alfa:=alfa+dalfa;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
with form1.Canvas do
begin
pen.Color:=clred;
for i:=1 to 38 do
begin
moveto(kpx-i*delta,10);
lineto (kpx-i*delta,clientheight-10);
moveto(kpx+i*delta,10);
lineto (kpx+i*delta,clientheight-10);
end;
for i:=1 to 35 do
begin
moveto(10,kpy-i*delta);
lineto (form1.ClientWidth-10,kpy-i*delta);
moveto(10,kpy+i*delta);
lineto (form1.ClientWidth-10,kpy+i*delta);
end;
pen.Width:=2;
pen.Color:=clyellow;
moveto(10,kpy);
lineto(form1.ClientWidth-10,kpy);
moveto(kpx,10);
lineto(kpx,form1.Clientheight-10);
end;
rajzol;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
bfsz:=updown1.Position;
repaint;
button1.Click;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
form1.WindowState:=wsmaximized;
kpx:=round(form1.ClientWidth/2);
kpy:=round(form1.clientheight/2);
delta:=20;
bfsz:=0012;
end;
end.
Te lehetsz az első, aki segít a kérdezőnek!
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!