import sk.uniba.fmph.pocprak.simplegraphics.GrGraphics;
/**
 * Rozhranie reprezentujuce vseobecne vlastnosti lamavej alebo odrazovej plochy
 * alebo roviny
 */
public interface OpticalSurface {
    /**
     * Skontroluje, ci Beam b sa siri v smere k ploche
     * @param b Beam testovany beam
     * @return boolean vrati true, ak sa Beam B siri smerom k ploche
     * false v opacnom pripade
     */
    public boolean movesTowards(Beam b);
    /**
     * Vola sa v okamihu, ked beam prave narazil do optickej roviny
     * vedlajsim efektom zmeni prislusne smer sirena Beamu B.dir a
     * zmeni index B.OptSurfId na index dalsej roviny v smere noveho sirenia sa beamu
     * @param b Beam
     */
    public void SurfaceEffect(Beam b);
    /**
     * Vykresli opticku plochu v rovine s grafikou gr obmedzenu rozmerom tubusu t
     * @param gr GrGraphics
     * @param t Tubus
     */
    public void draw(GrGraphics gr, Tubus t);
}
