Составить программы, строящие на форме соответствующие поверхности. В приложении предусмотреть возможность изменения параметров, а также максимального и минимального значений аргументов. Поверхности должны строиться без прорисовки невидимых линий.
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, Spin;
type
TForm1 = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
SpinEdit1: TSpinEdit;
SpinEdit2: TSpinEdit;
SpinEdit3: TSpinEdit;
SpinEdit4: TSpinEdit;
Button1: TButton;
Button2: TButton;
Label5: TLabel;
SpinEdit5: TSpinEdit;
procedure Ris(x,y,z: real);
procedure FormPaint(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
t:integer;
implementation
{$R *.dfm}
procedure TForm1.Ris(x,y,z: real);
var
x0,y0: integer;
begin
x0:=Form1.ClientWidth div 2-130;
y0:=Form1.ClientHeight div 2-200;
Form1.Canvas.Pixels[x0+round(spinedit5.Value*(y)),y0+round(spinedit5.Value*(-z+x))]:=clred;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
Canvas.Pen.Width:=2;
Canvas.Pen.Color:=clBlack;
Canvas.MoveTo(400,400); {оси}
Canvas.LineTo(400,100);
Canvas.MoveTo(400,400);
Canvas.LineTo(700,400);
Canvas.MoveTo(400,400);
Canvas.LineTo(300,600);
Canvas.MoveTo(700,400); {ось у и подпись у}
Canvas.LineTo(690,390);
Canvas.MoveTo(700,400);
Canvas.LineTo(690,410);
Canvas.MoveTo(720,400);
Canvas.LineTo(730,410);
Canvas.LineTo(740,400);
Canvas.MoveTo(730,410);
Canvas.LineTo(730,420);
Canvas.MoveTo(400,100); {ось z и подпись z}
Canvas.LineTo(390,110);
Canvas.MoveTo(400,100);
Canvas.LineTo(410,110);
Canvas.MoveTo(420,100);
Canvas.LineTo(430,100);
Canvas.LineTo(420,110);
Canvas.LineTo(430,110);
Canvas.MoveTo(300,600); {ось х и подпись х}
Canvas.LineTo(315,595);
Canvas.MoveTo(300,600);
Canvas.LineTo(300,585);
Canvas.MoveTo(270,580);
Canvas.LineTo(290,600);
Canvas.MoveTo(290,580);
Canvas.LineTo(270,600);
end;
procedure TForm1.Button1Click(Sender: TObject);
var x,y,z,a,b,z1: real;
begin
a:=spinedit2.Value;
b:=spinedit3.Value;
if t<>0 then begin
with Canvas do
begin
Canvas.Brush.Color:=clSkyBlue;
rectangle(0,0,Width,Height);
end;end
else
t:=1;
FormPaint(Sender);
x:=a;
while x<-1*spinedit4.Value do
begin
z:=-100/spinedit5.Value;
z1:=abs(z);
while z<=z1 do
begin
y:=(sqrt(x*x-a*a))*b/a;
Ris(x,y,z);
y:=-(sqrt(x*x-a*a))*b/a;
Ris(x,y,z);
z:=z+1/spinedit1.Value;
end;
x:=x+1/(3*spinedit1.Value);
end;
x:=-a;
while x>=spinedit4.Value do
begin
z:=-100/spinedit5.Value;
z1:=abs(z);
while z<=z1 do
begin
y:=sqrt(x*x-a*a)*b/a;
Ris(x,y,z);
y:=-sqrt(x*x-a*a)*b/a;
Ris(x,y,z);
z:=z+1/spinedit1.Value;
end;
x:=x-1/(spinedit1.Value);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Left:=0;
Form1.top:=0;
Form1.ClientWidth:=1024;
Form1.ClientHeight:=1024;
t:=0;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
close
end;
end.