//---------------------------------------------------------------------------
#ifndef aRelatywH
#define aRelatywH

#include "geometria.h"          //klasy TPunkt, TLinia
//---------------------------------------------------------------------------
//	Projekcja obiektów 3-wymiarowych na płaski ekran.
//	Obiekt posiada dwa konstruktory.
//	Potrafi znaleźć ekranowe miejsce punktu,
//	wykreślić linię i czworokąt.
class TRelatyw3d
{
 private:
    double odl_obserwatora;
    TPunkt obserwator;                          //pozycja obserwatora
    double odl_ekr, sf, cf, st, ct, A, B, C, D; //współczynniki pomocnicze
    double beta, gamma;                         //parametry relatywistyczne
    TCanvas *cnv;                               //wskaźnik do aparatu kreślącego
    bool wylicz_punkt_relatyw( int &xe, int &ye, TPunkt p);

 public:
    TRelatyw3d(                                 //konstruktor
        TPunkt Aobserwator,                     //pozycja obserwatora
        int xe0, int ye0, int eszer, int ewys,  //okno ekranowe
        double v,                               //prędkość w kierunku osi 'x'
        TCanvas *Acnv,                          //aparat kreślący
        double Aodl_ekr=0.5,
        double szer_ekr=0, double wys_ekr=0);   //fizyczny opis ekranu

    bool punkt_relatyw( TPunkt p, TColor kolor = clBlack);

                                                //__closure - borlandowski modyfikator
                                                //wskaźnika do funkcji - elementu klasy
                                                //Oprócz adresu dodaje do wskaźnika informację
                                                //o macierzystym obiekcie.
    bool linia_relatyw( TPunkt p1, TPunkt p2, int il_podzial,
        void (__closure* kolor_fun)( TCanvas *, int)=NULL);
    bool uproszczona_linia_relatyw( TPunkt p1, TPunkt p2,
        int il_podzial, TColor kolor);

    bool czworokat_relatyw( TPunkt p1, TPunkt p2, TPunkt p3, TPunkt p4, int il_podzial,
        void (__closure* kolor_fun)( TCanvas *, int, int)=NULL);
    bool uproszczony_czworokat_relatyw( TPunkt p1, TPunkt p2, TPunkt p3, TPunkt p4,
        int il_podzial, TColor k1, TColor k2);
};
#endif
