
10.05.2012, 23:37
|
Прохожий
|
|
Регистрация: 18.02.2011
Сообщения: 38
Репутация: 156
|
|
Ось координат и построение прямой по двум точкам
Дана ось координат XY. На оси координат задаются две точки с координатами (начало отрезка и конец отрезка). По этим двум точкам построить прямую и определить, проходит ли это прямая через начало координат (0,0).
В общем, ось координат я построил. Не могу начертить прямую через координаты точки и как определить проходит ли это прямая через начало координат. Код на текущий момент прилагаю:
Код:
unit Unit2;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Menus, Vcl.ExtCtrls;
type
TForm2 = class(TForm)
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
Edit4: TEdit;
Button1: TButton;
Button2: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Clear;
procedure FormCreate(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
x,y,x1,y1,x2,y2: integer; // Координаты точек
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
x:=250; // Начало координат (условно X=0)
y:=250; // Начало координат (условно Y=0)
x1:=StrToint(Edit1.Text); // Координата X первой точки
y1:=StrToInt(Edit2.Text); // Координата Y первой точки
x2:=StrToInt(Edit3.Text); // Координата X второй точки
y2:=StrToInt(Edit3.Text); // Координата Y второй точки
Image1.Canvas.MoveTo(x+x1,y-y1); // Отмечаем на оси XY первую точку
Image1.Canvas.MoveTo(x+x2,y-y2); // Отмечаем на оси XY вторую точку точку
// Как дальше????
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
Clear; // Нажатием кнопки "Очистить" возвращаем все в первоначальное состояние
end;
procedure TForm2.Clear;
var i, k:integer;
begin
Image1.Canvas.Pen.Width:=1;
Image1.Canvas.pen.Color:=clBlack;
image1.Canvas.Brush.Color:=clwhite;
image1.Canvas.Rectangle(0,0,500,500);
image1.Canvas.MoveTo(250,0); image1.Canvas.LineTo(250,500);
image1.Canvas.MoveTo(0,250); image1.Canvas.LineTo(500,250);
k:=50;
for i:=1 to 9 do begin
image1.Canvas.MoveTo(247,k); image1.Canvas.LineTo(254,k);
image1.Canvas.MoveTo(k,247); image1.Canvas.LineTo(k,254);
image1.Canvas.TextOut(k-9,257,inttostr(k-250));
if k<>250 then image1.Canvas.TextOut(223,k-7,inttostr(-k+250));
k:=k+50;
end;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
Clear; // Процедура построения оси координат
end;
end.
|