Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.06.2011, 09:41
winged_kissa winged_kissa вне форума
Прохожий
 
Регистрация: 30.06.2011
Сообщения: 1
Репутация: 10
Вопрос интерфейсы, классы и функция

Доброго всем дня, недавно столкнулась с такой для меня проблемой: нужно было написать абстрактно как будет выглядеть интерфейс для работы с коллекциями кривых (контуров)
встала задача написать функцию, которая бы перебирала все кривые и оставляла только те их куски, которые бы входили в ограниченный прямоугольник.
интерфейсы я задала, задала классы, но вот как теперь это всё заюзать в функции, я не знаю, перерыла кучу литературы-везде описание классов и интерфейсов, а как конкретно их использовать-примера нет. Тема для меня новая, я в делфи больше по базам данных работала, чем с "чистым" ООП кодом...Прошу вашей помощи...Объясните, пожалуйста, как именно в функции использовать классы и интерфейсы.
вот, собственно, сам код:
Код:
TRect_Float= record
        X1, Y1, X2, Y2 : double; // Прямоугольник. Стороны параллельны осям координат. Для простоты гарантируется что X1<X2, Y1<Y2 
End;
 
IContourPoint = interface
        Function GetX : double;
        Function GetY : double;
End;
 
IContourBit = interface
        Function GetPointCount : integer
        Function IsClosed : Boolean; //флажок замкнутости контура. Тру – последняя точка соединена с первой.
        Function GetPoint(const idx : integer) : IContourPoint; // Nil если (idx < 0) or (idx >= GetPointCount) 
End;
 
IContour = interface
        Function GetContourBitCount : integer;
        Function GetContourBit(const idx : integer) : IContourBit; 
End;
 
IContours = interface
        Function GetContourCount: integer;
        Function GetContour(const idx : integer) : IContour; 
End;

IContourEdit = interface (IContour)
        procedure AddContourBit( const bit: IContourBit  );
        procedure Clear;
end;

IContourBitEdit = interface (IContourBit)
    procedure AddPoint( const x, y, value: double ); // Value всегда надо задавать равным 0
    procedure SetClosed( const closed: boolean );
    procedure Clear;
end;

Точка, кусочек контура, контур, коллекция контуров, и редактирующие интерфейсы.

Так же есть классы которые имплементируют эти интерфейсы:

TContourBitEdit = class(TInterfacedObject, IContourBit, IContourBitEdit)
TContourEdit = class(TInterfacedObject, IContour, IContourEdit)
Незамкнутый контурбит (IsClosed = false) состоит из N-1 отрезков соединяющих i –ю и i +1-ю точки, i от 0 до N -1. В замкнутом контурбите есть еще один отрезок, от 0й точки до N-1-й.

Задача – написать функцию
Function CutContoursByWindow(const Cntrs : IContours; const window : TRect_Float ) : IContour; Функция должна вернуть IContour, состоящий из отрезков входящих контуров, которые (отрезки) попадают внутрь заданного окна, либо пересекают/касаются его границ.
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:14.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025