Я пытаюсь создать программу Python, использующую трассировку лучей, чтобы назначить цветовые значения графику на основе величины отраженного луча на поверхности. У меня уже есть код, который вычисляет нормализованный отраженный луч в форме [x, y, z]. Кроме того, поверхность ограничена трехмерным кубом 2x2 с центром в начале координат. Основываясь на величине отраженного луча от поверхности к стенкам куба, я хочу назначить цветовые значения для создания цветного графика, используя matplotlib и Axes3D. Все помогает!
#light[R_max,R_max,R_max]
for i in range(200):
for j in range(100):
#this is the point on the surface that will be used to calculate everything for each loop
point=[X[i,j],Y[i,j],Z[i,j]]
incident=[point[0]-initial[0],point[1]-initial[1],point[2]-initial[2]]
normal=np.zeros(3)
normal=np.cross([theta_x[i,j],theta_y[i,j],theta_z[i,j]],[phi_x[i,j],phi_y[i,j],phi_z[i,j]])
if j==0:
normal=np.array([0,0,1])
if j==100:
normal=np.array([0,0,-1])
proj_normal=normal*np.dot(incident,normal)
reflected=incident-2*proj_normal
#this is the normalized reflected ray in [?,?,?] form at the point
normalized_reflected=reflected/np.sqrt(reflected[0]**2+reflected[1]**2+reflected[2]**2)