Kezdőoldal » Számítástechnika » Programozás » Programozásból kaptam házit,...

Attilabezi kérdése:

Programozásból kaptam házit, de nem megy. Delphiben, pascal nyelven kellene megcsinálni. Tudnátok segíteni?

Figyelt kérdés

Á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.



2013. ápr. 20. 09:22
Sajnos még nem érkezett válasz a kérdésre.
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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!