Форум: "Основная";
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];
ВнизВыскажите, пожалуйста, свои мысли по поводу моего задания =) Найти похожие ветки
← →
Бурундук (2002-03-25 01:06) [8]флаг Calculated придётся добавлять в список ссылок, т.к. это параметр, характеризующий не одну вершину,
а пару вершин (линию).
TVertex = class
FPoint: TPoint;
FLinks: TList;
FCalculated: TList; // ради простоты можно в списке хранить вместо указателей Boolean (несколько некрасиво, правда)
// но можно в FLinks хранить нечто вроде
// TLink = class
// FLink: TVertex;
// Calculated: Boolean;
// end;
// тогда просто нужно
// будет написать свой поиск по списку (ведь искать ты будешь
// TVertex, а не TLink)
procedure Draw(Canvas; TCanvas);
end;
TVertex.Draw(Canvas: TCanvas);
var
i, SelfIndex: Intger;
Link: TVertex;
begin
for i := 0 to FLinks.Count-1
begin
Link := TVertex(FLinks[i]);
if not Boolean(FCalculated[i]) then
begin
Canvas.MoveTo(FPoint.X, FPoint.Y);
Canvas.LineTo(Link.FPoint.X, Link.FPoint.Y);
SelfIndex := Link.FLinks.IndexOf(Self);
// if SelfIndex = -1 then Error;
Link.Calculated[SelfIndex] := Pointer(True); // когда
// очередь дойдёт до вершины, на которую ссылаетя Link,
// она уже не будет повторно рисовать эту линию
Calculated[i] := Pointer(True); //
end;
end;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.005 c