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)