Các đối tượng trong World3D

Một phần của tài liệu XÂY DỰNG THƯ VIỆN PHẦN MỀM HỖ TRỢ HỆ THỐNG THÔNG TIN ĐNA LÝ GIS 3D DỰA TRÊN CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG BẰNG NGÔN NGỮ C++ (Trang 74 - 75)

a. WorldObject – cơ sở của các đối tượng 3D.

World3D là container chứa các đối tượng 3D, được gọi là WorldObject. WorldObject có được xây dựng tương tự như một điều khiển của Windows.

World3D chỉ nhìn thấy các đối tượng WorldObject và giao tiếp với các đối tượng này thông qua một hệ thống thông điệp định nghĩa sẳn. Như vậy, World3D hồn tồn khơng biết đến sự tồn tại của các đối tượng của Tin (đỉnh, tam giác, lưới tam giác). Do

đó, để người dùng có thể xem và tương tác với các đối tượng Tin ta cần định nghĩa các đối tượng tương ứng kế thừa từ WorldObject.

Đối tượng WorldObject định nghĩa một bộ khung các phương thức ảo để xử lý các

thông điệp do World3D gởi đến. Các lớp kế thừa từ WorldObject chỉ cần có định

nghĩa lại hoặc kế thừa một số phương thức cần thiết để World3D có thể tương tác với chúng. Sau đây là phần interface của lớp WorldObject.

class TWorldObject: public TObject

{

public:

__fastcall TWorldObject(TWorld3D* Owner);

virtual int __fastcall Compare(const TWorldObject& obj) const; void __fastcall CaptureMouse();

void __fastcall ReleaseMouse();

void __fastcall Invalidate();

virtual bool __fastcall GetProperty(int propname, void* value);

virtual bool __fastcall SetProperty(int propname, void* value);

virtual void __fastcall ShowProperties(bool edit_enabled); __property TWorld3D* Owner;

__property TBox MBR; __property char* Name; __property bool Visible;

__property int Color; __property int ID; __property int ObjType; protected: // Event handler

virtual void __fastcall MouseEnter();

virtual void __fastcall MouseLeave();

virtual void __fastcall MouseMove(TShiftState State, int X, int Y); virtual void __fastcall MouseDown(TMouseButton Button, TShiftState

State, int X, int Y);

virtual void __fastcall MouseUp(TMouseButton Button, TShiftState

State, int X, int Y);

virtual void __fastcall KeyDown(Word& Key, ShiT ftState Shift);

virtual bool __fastcall MouseHitTest(int X, int Y);

virtual void __fastcall MoveRel(const Point3D& disp);

virtual void __fastcall MoveTo(const Point3D& pos);

virtual void __fastcall PreRender() {};

virtual void __fastcall RenderScene(TRenderOptions Options, bool

);

Refresh

virtual void __fastcall RenderFastSelection(bool Refresh);

virtual void __fastcall CanDragNow(bool& dragnow); virtual void __fastcall BeginDrag();

virtual void __fastcall EndDrag(bool accepted, const Point3D& disp);

virtual void __fastcall Dragging(const Point3D& disp);

virtual void __fastcall LostFocus();

virtual void __fastcall RepairContextMenu(TPopupMenu* menu) {};

virtual void __fastcall SaveToIniFile(TStrings* file);

virtual bool __fastcall LoadFromIniFile(TIniFile* file);

virtual void __fastcall HitRangeSelection(int obj,int type) {};

void __fastcall SetFocus();

virtual void __fastcall RecieveFocus();

TPoint __fastcall GetMousePos();

Luận văn tốt nghiệp GVHH: Nguyễn Hữu Hải.

b. WorldTin.

WorldTin là đối tượng quan trọng nhất trong World3D. WorldTin là giao tiếp giữa người dùng với các đối tượng Tin trên database. WorldTin xử l ý các biến cố gởi đến từ World3D rồi tác động các thay đổi này lên database.

c. Các đối tượng khác.

Ngồi WorldTin, tầng Presentation cịn định nghĩa thêm một số đối tượng khác như:

WorldPoint, WorldEdge, WorldPlane, WorldBox, WorldLightSource. Các đối tượng

này giúp cho lập trình thêm thuận tiện hơn trong lập trình đối với tầng Presentation.

Ngồi ra, World3D có định nghĩa một đối tượng đặt biệt WorldCameraFocus dùng để xác định tâm nhìn của camera.

Một phần của tài liệu XÂY DỰNG THƯ VIỆN PHẦN MỀM HỖ TRỢ HỆ THỐNG THÔNG TIN ĐNA LÝ GIS 3D DỰA TRÊN CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG BẰNG NGÔN NGỮ C++ (Trang 74 - 75)

Tải bản đầy đủ (PDF)

(117 trang)