主要问题:
我写了一个小的光线追踪代码。它被称为前向光线追踪,因此光线实际上是在源头创建的,传播到唯一的镜子并被反射。随后,我计算每条射线与我选择的平面的交点,我称之为检测器。我在检测器上得到的,将每个命中打印为一个像素,是(x,y)的散点图。像这个:
import matplotlib.pyplot as plt
import numpy as np
import random
x = np.zeros(1000)
y = np.zeros(1000)
for i in range(len(x)):
x[i] = random.random()
y[i] = random.random()
plt.plot(x,y,'k,')
plt.show()
现在我正在寻找一种将命中的密度分布(强度)表示为平滑图像的方法,就像这个一样。
所以每个像素的灰度应该与周围patch的密度相对应。但是看起来我需要的一切都是针对像 z=f(x,y) 这样的 3d 数组。
还尝试了 hexbin(),但它不够平滑,对于非常小的垃圾箱,它变得太慢,而且只类似于我所拥有的。
那么有什么我可以使用的吗?
次要问题:
我不知何故需要添加另一个维度,因为我对入射光线的平行度感兴趣。一种选择是将其定义如下:
- 计算 a + a*b,其中:
a = 入射光线与探测器法线之间的夹角
b = 入射光线与 yz 平面之间的角度(光线大致平行于该平面传播)
这个量的平均值
与每次命中的平均值的偏差
我想通过在灰度中添加颜色来将这两个信息合并到一个图中。这可行吗?
我是编程新手,任何提示、解释或替代想法将不胜感激。