小编Mic*_*ael的帖子

平滑地绘制二维散点

主要问题:

我写了一个小的光线追踪代码。这称为前向光线追踪,因此光线实际上是在光源处产生的,传播到唯一的镜子并被反射。随后,我计算每条射线与我选择的平面(我称之为探测器)的交点。我在探测器上得到的,将每个命中打印为一个像素,是(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()
Run Code Online (Sandbox Code Playgroud)

现在我正在寻找一种方法将点击的密度分布(强度)表示为平滑图像,就像这个一样。

因此每个像素的灰度应该与周围斑块的密度相对应。但看起来像我需要的一切都是针对像 z=f(x,y) 这样的 3d 数组。

还尝试了 hexbin(),但它不够平滑,对于非常小的垃圾箱,它变得太慢,而且只类似于我所拥有的。

那么有什么我可以使用的吗?

次要问题:

我以某种方式需要添加另一个维度,因为我对入射光线的平行性感兴趣。一种选择是将其定义如下:

  1. 计算 a + a*b,其中:

a = 入射光线与探测器法线之间的角度

b = 入射光线与 yz 平面之间的角度(光线大致平行于该平面传播)

  1. 该数量的平均值

  2. 每次命中的平均值的偏差

我想通过向灰度添加颜色将这两种信息合并到一个图中。这可行吗?

我是编程新手,任何提示、解释或替代想法将不胜感激。

python raytracing matplotlib

5
推荐指数
1
解决办法
2407
查看次数

标签 统计

matplotlib ×1

python ×1

raytracing ×1