1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| import numpy as np
ka = 1 kb = 1
def get_proj(ka, kb): xr = 1/(ka**2+kb**2+1) xr = xr**.5 cnt = 200 A = np.zeros((2,2)) A[:,0] = ka A[0,1] = -kb A[1,1] = kb x = np.zeros((2, cnt)) t = np.linspace(0,2*np.pi, cnt) x[0,:] = np.cos(t)*xr x[1,:] = np.sin(t)*xr y = np.matmul(A, x) ya = y[0,:] yb = y[1,:] xa = x[0,:] xb = x[1,:] kt = -2/(ya-1) X = yb * kt Y = xa * kt Z = xb * kt return X, Y, Z
import matplotlib.pyplot as plt
fig = plt.figure() ax = plt.axes(projection='3d')
for i in range(10): rs = get_proj(ka, kb) ax.scatter3D(*rs) ka += 0.05 plt.show()
|