[WikiDyd] [TitleIndex] [WordIndex

Laboratorium ,,Języki i metodyka programowania I''

Projekt indywidualny: Generator plików CBlock na podstawie przekroju 2D

Proszę zaprojektować i wykonać program generujący obiekty typu CBlock, które wypełniają obszar 2D o zadanym kształcie jak to zostało przykładowo pokazane na poniższym rysunku. Proszę uwzględnić możliwość transformacji z lokalnego układu współrzędnych do układu globalnego. Chodzi o możliwość umieszczenia wygenerowanego obiektu w dowolnym miejscu w przestrzeni oraz o jego odpowiednie ukierunkowanie.

CBlocki wypełniające przekrój

Definicje:

CBlock - trójwymiarowy równoległobok zdefiniowany za pomocą:

Rysunek przedstawiający geometrię CBlocka:

Geometria CBlocka.

Dane wejściowe składają się z:

   1+------------+2
    |            |
    |            +3
    |           /
    |          / 
   4+        7+------+8
     \               |   
      \              |
       5+------------+6

Dane wyjściowe:

Format pliku z CBlokami:

[liczba CBloków]
Px Py Pz CXx CXy CXz CYx CYy CYz L jr ji
(...)

Algorytm:

Program powinien czytać plik wejściowy i przechowywać go w postaci odpowiedniej struktury danych.

Program powinien wypełnić zadany obszar 2D CBlockami, których kierunki krawędzi bazowych CX i CY będą zgodne z osią OX i OY obszaru 2D. Pozostałe wartości CBlocków powinny być uzupełnione na podstawie argumentów podanych przy uruchomieniu programu.

Następnie program powinien wykonać transformację wygenerowanych CBlocków do układu globalnego. Transformacja powinna składać się z translacji lokalnego układu współrzędnych [Lx,Ly], do układu globalnego przekształcając układ lokalny w [L'x, L'y] np. za pomocą translacji o wektor Tx oraz definicji kierunków lokalnych osi Lx i Ly w układzie globalnym za pomocą dwóch wektorów GX i GY. Przedstawione oznaczenia zostały zaprezentowane na rysunku poniżej:

Transformacja lokalnego układu współrzędnych CBlocka do układu globalnego.

W sprawie transformacji lokalnego układu współrzędnych do globalnego warto przeczytać: J.D.Foley, "Wprowadzenie do grafiki komputerowej", Rozdział 5. Przekształcenia geometryczne.

W ostatnim etapie program powinien zapisać wygenerowane CBlocki do określonego pliku wyjściowego.

Wymagania techniczne:

1. Program ma być wywoływany z listą argumentów, przez które przekazywane są nazwy plików: wejściowego i wyjściowego, oraz argumenty do sterowania algorytmem.

2. Program powinien poprawnie reagować na błędy składniowe pliku wejściowego.

3. Program powinien poprawnie obsługiwać komentarze # w pliku wejściowym.

4. Program ma być zbudowany modularnie: należy "złożyć" go z kilku plików. Podział na pliki źródłowe ma być odzwierciedleniem funkcjonalnej struktury programu: należy na przykład wyróżnić moduł analizatora pliku wejściowego, itd.


2015-09-23 06:43