Each sub-list of the matrix (aka. branch of the Data Tree) represents one of the points used for analysis. The length of each sub-list matches the number of sky patches in the input sky matrix (145 for the default Tregenza sky and 577 for the high_density Reinhart sky).
This is not a critical question but will be nice to understand if i’m missing something or there is a bug in the output.
My python isn’t the best, but from what I can tell all_vecs is a list 290 long made up of sky and ground vectors.
int_mtx is then generated from int_mtx_init taking all_vecs as an input, so I assume the length of int_mtx should be based on the sky and ground vectors.
Here’s a snippet from
for vec in lb_vecs)
all_vecs = [from_vector3d(vec) for vec in lb_vecs + lb_grnd_vecs]
# intersect the rays with the mesh
normals = [from_vector3d(vec) for vec in study_mesh.face_normals]
int_matrix_init, angles = intersect_mesh_rays(
shade_mesh, points, all_vecs, normals, cpu_count=workers)
# compute the results
results = 
int_matrix = 
for int_vals, angles in zip(int_matrix_init, angles):
pt_rel = [ival * math.cos(ang) for ival, ang in zip(int_vals, angles)]
Hi @charlie.brooker ,
You are right. Checked the code and the sun vectors are duplicated and their direction reversed. I’m assuming here that some diffused radiation is included in the calculation (the one from the ground).
What confused me at the beginning is the hint explanation of int_max output. I believe it is not correct.