Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2011, 00:15   #1
Марина 666
 
Аватар для Марина 666
 
Регистрация: 21.03.2011
Сообщений: 4
Восклицание Нужно удалить невидимые линии на графике

Помогите пожалуйста!
Задание такое:
Составить программы, строящие на форме соответствующие поверхности. В приложении предусмотреть возможность изменения параметров, а также максимального и минимального значений аргументов. Поверхности должны строиться без прорисовки невидимых линий.
x^2/a^2-y^2/b^2 =1

Нужно удалить невидимые линии...

Код:
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.
Марина 666 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать линии исходящие из точки на графике на оси координат? Pavarotti Microsoft Office Excel 3 27.01.2011 09:06
Нужно знание о Поверхности и Графике функций Fainble Microsoft Office Excel 5 22.12.2010 22:42
Макрос, делающий линии на графике более толстыми? BaddyV Microsoft Office Excel 1 22.10.2009 05:57
Нужно написать прогу по графике за $$$ Xalegi Фриланс 2 26.11.2007 20:10