def draw_slit_pat(self, N, d, a, wav, choice="slits"):
        canvas = self.canvas
        x_stp = self.x_stp

        canvas.scale(1 / self.xu, 1 / self.xu)
        col = draw.wavelength_to_rgb(self.wav * 1e9)

        canvas.line_width = 2
        for i in range(0, int(self.cw), 2):
            canvas.begin_path()
            x = i / self.xu - float(self.W) / 2
            ang = math.asin(x / self.R)
            if choice == "slits":
                I = self.slit_int(N, d, wav, ang)
                ma = self.slit_int(N, d, wav, 0)
            else:
                I = self.single_int(a, wav, ang)
                ma = 1

            x += float(self.W) / 2
            canvas.move_to(x * self.xu + 1, 0)
            canvas.line_to(x * self.xu + 1, float(self.ch))
            canvas.stroke_style = "rgba({0}, {1}, {2}, {3})".format(
                col[0], col[1], col[2], math.sqrt(float(I / ma)))
            canvas.stroke()

        canvas.scale(self.xu, self.xu)
    def draw_slit_pat(self, N,d,a, wav, choice = "slits"):
        canvas = self.canvas
        x_stp = self.x_stp

        canvas.scale(1/self.xu, 1/self.xu)
        col = draw.wavelength_to_rgb(self.wav*1e9)

        canvas.line_width = 2
        for i in range(0,int(self.cw),2):
            canvas.begin_path()
            x = i/self.xu - float(self.W)/2
            ang = math.asin(x/self.R)
            if choice == "slits":
                I = self.slit_int(N,d,wav,ang)
                ma = self.slit_int(N,d,wav,0)
            else:
                I = self.single_int(a,wav,ang)
                ma = 1

            x +=float(self.W)/2
            canvas.move_to(x*self.xu+1,0)
            canvas.line_to(x*self.xu+1, float(self.ch))
            canvas.stroke_style = "rgba({0}, {1}, {2}, {3})".format(col[0],col[1],col[2],math.sqrt(float(I/ma)))
            canvas.stroke()

        canvas.scale(self.xu, self.xu)
    def draw_grating(self, n, wav):
        canvas = self.canvas

        draw.reset2(canvas, 1)
        canvas.translate(float(self.cw)/2, 0)
        col = draw.wavelength_to_rgb(self.wav*1e9)

        canvas.line_width = 5
        step = self.wav*n*self.R
        x = 0
        canvas.begin_path()
        while x*self.xu<float(self.cw)/2:
            xt = x*self.xu

            canvas.move_to(xt,0)
            canvas.line_to(xt, float(self.ch))
            canvas.move_to(-xt,0)
            canvas.line_to(-xt, float(self.ch))
            x+=step

        canvas.stroke_style = "rgb({0}, {1}, {2})".format(col[0],col[1],col[2])
        canvas.stroke()
        draw.reset2(canvas, self.xu)
    def draw_grating(self, n, wav):
        canvas = self.canvas

        draw.reset2(canvas, 1)
        canvas.translate(float(self.cw) / 2, 0)
        col = draw.wavelength_to_rgb(self.wav * 1e9)

        canvas.line_width = 5
        step = self.wav * n * self.R
        x = 0
        canvas.begin_path()
        while x * self.xu < float(self.cw) / 2:
            xt = x * self.xu

            canvas.move_to(xt, 0)
            canvas.line_to(xt, float(self.ch))
            canvas.move_to(-xt, 0)
            canvas.line_to(-xt, float(self.ch))
            x += step

        canvas.stroke_style = "rgb({0}, {1}, {2})".format(
            col[0], col[1], col[2])
        canvas.stroke()
        draw.reset2(canvas, self.xu)