import numpy as np import matplotlib.pyplot as plt # 定义反射函数 def reflect(in_vec, norm_vec): return in_vec - 2 * np.dot(in_vec, norm_vec) * norm_vec # 定义入射光线方向向量 inc_vec = np.array([1, 0]) # 定义椭圆长轴和短轴长度 a = 5 b = 3 # 定义椭圆中心点 center = np.array([0, 0]) # 对椭圆进行采样,计算反射光线 sample_num = 1000 scatter_x = [] scatter_y = [] for i in range(sample_num): x = -a + 2*a/sample_num*i y = -b + 2*b/sample_num*i if (x/a)**2 + (y/b)**2 <= 1: norm_vec = np.array([x/a**2, y/b**2]) out_vec = reflect(inc_vec, norm_vec) if np.abs(out_vec[1]) <= np.tan(np.pi/6): # 只统计一定角度的反射光线 scatter_x.append(out_vec[0]) scatter_y.append(out_vec[1]) # 绘制散点图fig, ax = plt.subplots() ax.scatter(scatter_x, scatter_y) ax.axhline(y=np.tan(np.pi/6), color='r', linestyle='--') ax.axhline(y=-np.tan(np.pi/6), color='r', linestyle='--') ax.set_xlabel('x') ax.set_ylabel('y') plt.show()
时间: 2024-04-28 22:20:05 浏览: 86
import numpy as np import matplotlib.pyplot as plt import math
这段代码似乎没有问题,但是需要注意的是,在执行这段代码之前,需要将 `import` 语句分别写在不同的行上,而不是合并到同一行。你可以将这段代码复制到 Python 编辑器中,将 `import` 语句分开,然后再执行。另外,你还需要确保你的 Python 环境中已经安装了 `numpy` 和 `matplotlib` 库,否则代码也无法正常执行。
阅读全文