37 lines
817 B
Python
37 lines
817 B
Python
import numpy as np
|
|
import pylab
|
|
|
|
# elephant parameters
|
|
p1, p2, p3, p4 = (50 - 30j, 18 + 8j, 12 - 10j, -14 - 60j )
|
|
p5 = 40 + 20j # eyepiece
|
|
|
|
def fourier(t, C):
|
|
f = np.zeros(t.shape)
|
|
A, B = C.real, C.imag
|
|
for k in range(len(C)):
|
|
f = f + A[k]*np.cos(k*t) + B[k]*np.sin(k*t)
|
|
return f
|
|
|
|
def elephant(t, p1, p2, p3, p4, p5):
|
|
npar = 6
|
|
Cx = np.zeros((npar,), dtype='complex')
|
|
Cy = np.zeros((npar,), dtype='complex')
|
|
|
|
Cx[1] = p1.real*1j
|
|
Cx[2] = p2.real*1j
|
|
Cx[3] = p3.real
|
|
Cx[5] = p4.real
|
|
|
|
Cy[1] = p4.imag + p1.imag*1j
|
|
Cy[2] = p2.imag*1j
|
|
Cy[3] = p3.imag*1j
|
|
|
|
x = np.append(fourier(t,Cx), [-p5.imag])
|
|
y = np.append(fourier(t,Cy), [p5.imag])
|
|
|
|
return x,y
|
|
|
|
x, y = elephant(np.linspace(0,2*np.pi,1000), p1, p2, p3, p4, p5)
|
|
pylab.plot(y,-x,'.')
|
|
pylab.show()
|