Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nmz787/83a826ca4d40011262e7382b46c22570 to your computer and use it in GitHub Desktop.
Save nmz787/83a826ca4d40011262e7382b46c22570 to your computer and use it in GitHub Desktop.
import numpy as np
import cv2
import math
h=1000
w=1000
scaling = 20.
fin_w = 85
fin_l = 410
fin_h = 600
focal = 10000/scaling
design_wavelength = 600/scaling
_l = int(fin_l/scaling)
_w = int(fin_w/scaling)
_x1 = _l/-2
_y1 = _w/-2
_x3 = _l/2
_y3 = _w/2
_x2 = _x3
_y2 = _y1
_x4 = _x1
_y4 = _y3
spacing = 430
img = np.zeros((h, w, 3), np.uint8)
# step along Y
for i in xrange(0, h, int(spacing/scaling)):
# now step along X
for j in xrange(0, w, int(spacing/scaling)):
angle = (math.pi/design_wavelength) * (focal - math.sqrt((j-w/2)**2 + (i-h/2)**2 + focal**2))
#angle = (math.pi/design_wavelength) * (focal - math.sqrt((j)**2 + (i)**2 + focal**2))
angle_radians = angle #* math.pi / 180.0
rx1 = math.cos(angle_radians) * _x1 - math.sin(angle_radians) * _y1
ry1 = math.sin(angle_radians) * _x1 + math.cos(angle_radians) * _y1
rx2 = math.cos(angle_radians) * _x2 - math.sin(angle_radians) * _y2
ry2 = math.sin(angle_radians) * _x2 + math.cos(angle_radians) * _y2
rx3 = math.cos(angle_radians) * _x3 - math.sin(angle_radians) * _y3
ry3 = math.sin(angle_radians) * _x3 + math.cos(angle_radians) * _y3
rx4 = math.cos(angle_radians) * _x4 - math.sin(angle_radians) * _y4
ry4 = math.sin(angle_radians) * _x4 + math.cos(angle_radians) * _y4
cv2.line(img, (int(rx1 + j + _x3) , int(ry1 + i + _y3)), (int(rx2 + j + _x3), int(ry2 + i + _y3)), 255, 1)
cv2.line(img, (int(rx2 + j + _x3) , int(ry2 + i + _y3)), (int(rx3 + j + _x3), int(ry3 + i + _y3)), 255, 1)
cv2.line(img, (int(rx3 + j + _x3) , int(ry3 + i + _y3)), (int(rx4 + j + _x3), int(ry4 + i + _y3)), 255, 1)
cv2.line(img, (int(rx4 + j + _x3) , int(ry4 + i + _y3)), (int(rx1 + j + _x3), int(ry1 + i + _y3)), 255, 1)
cv2.imwrite('diffractive_lens.jpg', img)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment