![]() |
|
#1
|
|||
|
|||
![]() необходимо найти максимальное х и максимальное у провести через них прямую линию, а затем найти минимальное х и у и тоже провести через них прямые линии в результате точки будут заключены в прямоугольник. необходима помощь в реализации этой задумкиглавная.rar
|
#2
|
|||
|
|||
![]() А я не понимаю, в чем проблема?
Ну есть у тебя, например, массив точек. Поиск мин и макс значений - один цикл. Соотв. получаешь 4 значения. |
#3
|
||||
|
||||
![]() Цитата:
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series, BubbleCh; type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Button1: TButton; Sg: TStringGrid; Label2: TLabel; Label3: TLabel; Button2: TButton; Button3: TButton; Chart1: TChart; Series1: TPointSeries; Button4: TButton; Edit2: TEdit; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin with Sg, Edit1 do begin ColCount := StrToIntDef(Text, Sg.ColCount); end; end; procedure TForm1.Button2Click(Sender: TObject); {заполнение из файла} var List: TStringList; i, j: Integer; begin List := TStringList.Create; List.LoadFromFile('Таблица.txt'); with Form1.Sg do for i := 0 to RowCount - 1 do for j := 0 to ColCount - 1 do Cells[j, i] := List[i * ColCount + j]; List.Free; end; procedure TForm1.Button3Click(Sender: TObject); var i: integer; begin if Series1 = nil then begin Series1 := TPointSeries.Create(Chart1); Series1.ParentChart := Chart1 end else Series1.clear; with Form1.Sg do for i := 0 to ColCount - 1 do Series1.AddXY(strtoint(cells[i, 0]), strtoint(cells[i, 1])); {поиск максимума} end; procedure TForm1.Button4Click(Sender: TObject); var i,j:integer; temp,max:integer; begin {поиск максимума x и y и провести через них прямые} temp:=0; max:=strtoint(sg.cells[0,0]); for i:=0 to sg.rowcount-1 do {i- номер столбца} for j:=0 to sg.colcount-1 do {j - номер строки } begin temp:= strtoint(sg.cells[j,i]); if temp>max then max:=temp; end; end; end. Последний раз редактировалось Admin, 23.04.2012 в 21:14. |
#4
|
|||
|
|||
![]() горю просто надо срочно доделать! а я не знаю как это реализовать притом что это еще не конец программы. когда заключили точки в прямоугольник его нужно разбить на несколько вот так Безымянный.JPG а потом по алгоритму мелзака в каждом из прямоугольников найти точку штейнера Пример 1.rar. затем повторить все это еще раз пока не найдется одна точка. очень прошу оказать помощь а то я просто пропадаю!!!!
|
#5
|
|||
|
|||
![]() нашла минимумы и максимумы а как через них провести прямые не знаю подскажите пожалуйста!главная.rar
|
#6
|
|||
|
|||
![]() Цитата:
Код:
Canvas.MoveTo(Xmin,Ymin); Canvas.LineTo(Xmax,YMin); Canvas.LineTo(Xmax,Ymax); Canvas.LineTo(Xmin,Ymax); Canvas.LineTo(Xmin,Ymin); |
#7
|
|||
|
|||
![]() надо чтобы рисовалось в chart
|
#8
|
|||
|
|||
![]() Цитата:
Ну и попробуй рисовать прямо на канве Chart'а. Хотя, там, вроде, свои координаты для рисования - он сам масштабируется, так что либо отказывайся от Chart'а (ну нарисовать оси и несколько точек самотоятельно не такая и большая проблема), либо думай как задать нужные тебе графики (посказка - надо создать еще 4 серии). Последний раз редактировалось lmikle, 25.04.2012 в 19:25. |