
Среда программирования:
Lazarus 1.0.6 win64
Статья по теме:
Имеются две прямые,заданные уравнениями с угловым коэффициентом, где
m - угловой коэффициент первой прямой, p - угловой коэффициент второй;
k - показатель ординаты точки пересечения прямой с осью ординат первой прямой,
q - показатель ординаты точки пересечения прямой с осью ординат второй.
Программа определяет параллельность прямых, угол между прямыми и в случае непараллельности точку их пересечения.
Код программы:
unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; PaintBox1: TPaintBox; procedure Button1Click(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); var tanalfa:real; m,k,p,q:real; y00,y01,y10,y11,xp,yp:real; begin m := strtofloat(edit1.Text); k := strtofloat(edit2.Text); p := strtofloat(edit3.Text); q := strtofloat(edit4.Text); tanalfa:=(m-p)/(1+m*p); if(tanalfa<0) then tanalfa:=-1*tanalfa; y00 := -100*m+k; y01 := 100*m+k; y10 := -100*p+q; y11 := 100*p+q; form1.PaintBox1.canvas.Pen.Color:=clgreen; form1.PaintBox1.canvas.Line(-100,round(y00),100,round(y01)); form1.PaintBox1.canvas.Pen.Color:=clred; form1.PaintBox1.canvas.Line(-100,round(y10),100,round(y11)); label5.Caption:='Угол между прямыми(рад): '+ floattostr(arctan(tanalfa)); if(m=p)then label6.Caption:='Прямые параллельны' else begin xp:=(q-k)/(m-p); yp:=m*xp+k; label6.Caption:= 'Прямые не являютcя параллельными. Точка пересечения прямых:(' + floattostr(xp) + ';' + floattostr(yp) + ')'; end; end; end.
Прикрепленный файл | Размер |
---|---|
Исходные коды и запускаемый файл | 763.86 кб |