ladybug.viewsphere module¶
Class to subdivide the sphere and hemisphere for view-based and radiation studies.
- class ladybug.viewsphere.ViewSphere[source]¶
Bases:
object
Class for subdividing the sphere and hemisphere for view-based studies.
Note
[1] Tregenza, Peter. (1987). Subdivision of the sky hemisphere for luminance measurements. Lighting Research & Technology - LIGHTING RES TECHNOL. 19. 13-14. 10.1177/096032718701900103.
- Properties:
tregenza_dome_vectors
tregenza_sphere_vectors
tregenza_dome_mesh
tregenza_dome_mesh_high_res
tregenza_sphere_mesh
tregenza_solid_angles
reinhart_dome_vectors
reinhart_sphere_vectors
reinhart_dome_mesh
reinhart_sphere_mesh
reinhart_solid_angles
- dome_patch_weights(division_count=1)[source]¶
Get a list of numbers corresponding to the area weight of each dome patch.
- Parameters:
division_count – A positive integer for the number of times that the original Tregenza patches are subdivided. (Default: 1).
- Returns:
A list of numbers with a value for each patch that corresponds to the area of that patch. The average value of all the patches is equal to 1.
- dome_patches(division_count=1, subdivide_in_place=False)[source]¶
Get Vector3Ds and a corresponding Mesh3D for a dome.
- Parameters:
division_count – A positive integer for the number of times that the original Tregenza patches are subdivided. 1 indicates that the original Tregenza patches will be used, 2 indicates the Reinhart patches will be used, and so on. (Default: 1).
subdivide_in_place – A boolean to note whether patches should be subdivided according to the extension of Tregenza’s original logic through the Reinhart method (False) or they should be simply divided into 4 in place (True). The latter is useful for making higher resolution Mesh visualizations of an inherently low-resolution dome.
- Returns:
A tuple with two elements
patch_mesh: A ladybug_geometry Mesh3D that represents the dome at the input division_count. There is one quad face per patch except for the last circular patch, which is represented by a number of triangles equal to division_count * 6.
patch_vectors: A list of ladybug_geometry Vector3D with one vector per patch. These will align with the faces of the patch_mesh up until the last circular patch, which will have a single vector for the several triangular faces. All vectors are unit vectors.
- dome_radial_patch_weights(azimuth_count=72, altitude_count=18)[source]¶
Get a list of numbers corresponding to the area weight of each dome patch.
- Parameters:
azimuth_count – A positive integer for the number of times that the horizontal circle will be subdivided into azimuth patches. (Default: 72).
altitude_count – A positive integer for the number of times that the dome quarter-circle will be subdivided into altitude patches. (Default: 18).
- Returns:
A list of numbers with a value for each patch that corresponds to the area of that patch. The average value of all the patches is equal to 1.
- dome_radial_patches(azimuth_count=72, altitude_count=18)[source]¶
Get Vector3Ds and a corresponding Mesh3D for a a radial dome.
- Parameters:
azimuth_count – A positive integer for the number of times that the horizontal circle will be subdivided into azimuth patches. (Default: 72).
altitude_count – A positive integer for the number of times that the dome quarter-circle will be subdivided into altitude patches. (Default: 18).
- Returns:
A tuple with two elements
patch_mesh: A ladybug_geometry Mesh3D that represents the patches at the input azimuth_count and altitude_count.
patch_vectors: A list of ladybug_geometry Vector3D with one vector per mesh face. These will align with the faces of the patch_mesh. All vectors are unit vectors.
- dome_view_mesh(center_point=Point3D(0.00, 0.00, 0.00), radius=1, azimuth_count=72, altitude_count=18)[source]¶
Get a mesh of a horizontal circle with vertices coordinated with view_vectors.
- Parameters:
center_point – A Point3D for the center of the mesh. (Default: (0, 0, 0)).
radius – A number for the radius of the circle. (Default: 1).
azimuth_count – An integer greater than or equal to 3, which notes the number of horizontal orientations to be evaluated on the dome. (Default: 72).
altitude_count – An integer greater than or equal to 3, which notes the number of vertical orientations to be evaluated on the dome. (Default: 18).
- Returns:
A tuple with two elements
dome_mesh: A ladybug_geometry Mesh3D that represents the hemispherical view dome at the input azimuth_count and altitude_count.
view_vecs: A list of ladybug_geometry Vector3D with one vector per mesh vertex.
- static fin_pattern(plane_normal, left_fin_angle, right_fin_angle, view_vectors)[source]¶
Get booleans for whether a view vectors are blocked by left and right fins.
- Parameters:
plane_normal – A Vector3D for the normal of the plane.
left_fin_angle – A number between 0 and 90 for the projection angle of a fin on the left side in degrees.
right_fin_angle – A number between 0 and 90 for the projection angle of a fin on the right side in degrees.
view_vectors – A list of view vectors which will be evaluated to determine if they are blocked by the plane or not.
- Returns:
A list of booleans for whether each of the view vectors are blocked by the fins (True) or not (False).
- horizontal_circle_view_mesh(center_point=Point3D(0.00, 0.00, 0.00), radius=1, azimuth_count=72)[source]¶
Get a mesh of a horizontal circle with vertices coordinated with view_vectors.
- Parameters:
center_point – A Point3D for the center of the mesh. (Default: (0, 0, 0)).
radius – A number for the radius of the circle. (Default: 1).
azimuth_count – A positive integer greater than or equal to 3 for the number of times that the horizontal circle will be subdivided into vertices. (Default: 72).
- Returns:
A tuple with two elements
circle_mesh: A ladybug_geometry circular Mesh3D that represents the horizontal view at the input azimuth_count.
view_vecs: A tuple of ladybug_geometry Vector3D with one vector per mesh vertex. The first vertex of the circle_mesh is the center and each one after that is coordinated with the vector here.
- horizontal_radial_patch_weights(offset_angle=30, division_count=1)[source]¶
Get a list of numbers corresponding to the area weight of each radial patch.
- Parameters:
offset_angle – A number between 0 and 90 for the angle offset from the horizontal plane at which vectors will be included. Vectors both above and below this angle will be included (Default: 30).
division_count – A positive integer for the number of times that the original Tregenza patches are subdivided. (Default: 1).
- Returns:
A list of numbers with a value for each patch that corresponds to the area of that patch. The average value of all the patches is equal to 1.
- horizontal_radial_patches(offset_angle=30, division_count=1, subdivide_in_place=False)[source]¶
Get Vector3Ds within a certain angle offset from the horizontal plane.
- Parameters:
offset_angle – A number between 0 and 90 for the angle offset from the horizontal plane at which vectors will be included. Vectors both above and below this angle will be included (Default: 30 for the rough vertical limit of human peripheral vision).
division_count – A positive integer for the number of times that the original Tregenza patches are subdivided. 1 indicates that the original Tregenza patches will be used, 2 indicates the Reinhart patches will be used, and so on. (Default: 1).
subdivide_in_place – A boolean to note whether patches should be subdivided according to the extension of Tregenza’s original logic through the Reinhart method (False) or they should be simply divided into 4 in place (True).
- Returns:
A tuple with two elements
patch_mesh: A ladybug_geometry Mesh3D that represents the patches at the input division_count. There is one quad face per patch.
patch_vectors: A list of ladybug_geometry Vector3D with one vector per patch. These will align with the faces of the patch_mesh. All vectors are unit vectors.
- horizontal_radial_vectors(vector_count)[source]¶
Get perfectly horizontal Vector3Ds radiating outward in a circle.
- Parameters:
vector_count – An integer for the number of vectors to generate in the horizontal plane. This can align with any of the dome or sphere patches by setting this to 30 * division_count.
- Returns:
A list of ladybug_geometry horizontal Vector3D radiating outward in a circle. All vectors are unit vectors.
- horizontal_radial_view_mesh(center_point=Point3D(0.00, 0.00, 0.00), radius=1, offset_angle=30, azimuth_count=72, altitude_count=6)[source]¶
Get a mesh of a radial circle with vertices coordinated with view_vectors.
- Parameters:
center_point – A Point3D for the center of the mesh. (Default: (0, 0, 0)).
radius – A number for the radius of the circle. (Default: 1).
offset_angle – A number between 0 and 90 for the angle offset from the horizontal plane at which vectors will be included. Vectors both above and below this angle will be included (Default: 30).
azimuth_count – A positive integer greater than or equal to 3 for the number of times that the horizontal circle will be subdivided into vertices. (Default: 72).
altitude_count – An integer greater than or equal to 1, which notes the number of vertical orientations at which the altitude will be evaluated. (Default: 18).
- Returns:
A tuple with two elements
radial_mesh: A ladybug_geometry Mesh3D that represents the horizontal radial view at the input azimuth_count and altitude_count.
view_vecs: A list of ladybug_geometry Vector3D with one vector per mesh vertex. The first vertex of the radial_mesh is the center and each one after that is coordinated with the vector here.
- static orientation_pattern(plane_normal, view_vectors)[source]¶
Get booleans for whether view vectors are blocked by a plane.
- Parameters:
plane_normal – A Vector3D for the normal of the plane.
view_vectors – A list of view vectors which will be evaluated to determine if they are blocked by the plane or not.
- Returns:
A tuple with two values.
mask_pattern – A list of booleans for whether each of the view vectors are blocked by the plane (True) or not (False).
angles – A list of angles in radians for the angle between the plane normal and each view vector.
- static overhang_pattern(plane_normal, overhang_angle, view_vectors)[source]¶
Get booleans for whether a view vectors are blocked by a overhang.
- Parameters:
plane_normal – A Vector3D for the normal of the plane.
overhang_angle – A number between 0 and 90 for the projection angle of an overhang in degrees.
view_vectors – A list of view vectors which will be evaluated to determine if they are blocked by the plane or not.
- Returns:
A list of booleans for whether each of the view vectors are blocked by the overhang (True) or not (False).
- sphere_patch_weights(division_count=1)[source]¶
Get a list of numbers corresponding to the area weight of each sphere patch.
- Parameters:
division_count – A positive integer for the number of times that the original Tregenza patches are subdivided. (Default: 1).
- Returns:
A list of numbers with a value for each patch that corresponds to the area of that patch. The average value of all the patches is equal to 1.
- sphere_patches(division_count=1, subdivide_in_place=False)[source]¶
Get Vector3Ds and a corresponding Mesh3D for a sphere.
- Parameters:
division_count – A positive integer for the number of times that the original Tregenza patches are subdivided. 1 indicates that the original Tregenza patches will be used, 2 indicates the Reinhart patches will be used, and so on. (Default: 1).
subdivide_in_place – A boolean to note whether patches should be subdivided according to the extension of Tregenza’s original logic through the Reinhart method (False) or they should be simply divided into 4 in place (True). The latter is useful for making higher resolution Mesh visualizations of an inherently low-resolution dome.
- Returns:
A tuple with two elements
patch_mesh: A ladybug_geometry Mesh3D that represents the sphere at the input division_count. There is one quad face per patch except for the last circular patch of each hemisphere, which is represented by a number of triangles equal to division_count * 6.
patch_vectors: A list of ladybug_geometry Vector3D with one vector per patch. These will align with the faces of the patch_mesh except for the two circular patches, which will have a single vector for the several triangular faces. All vectors are unit vectors.
- sphere_view_mesh(center_point=Point3D(0.00, 0.00, 0.00), radius=1, azimuth_count=72, altitude_count=18)[source]¶
Get a mesh of a sphere with vertices coordinated with view_vectors.
- Parameters:
center_point – A Point3D for the center of the mesh. (Default: (0, 0, 0)).
radius – A number for the radius of the sphere. (Default: 1).
azimuth_count – An integer greater than or equal to 3, which notes the number of horizontal orientations to be evaluated on the sphere. (Default: 72).
altitude_count – An integer greater than or equal to 3, which notes the number of vertical orientations to be evaluated on the sphere. (Default: 18).
- Returns:
A tuple with two elements
sphere_mesh: A ladybug_geometry Mesh3D that represents the view sphere at the input azimuth_count and altitude_count.
view_vecs: A list of ladybug_geometry Vector3D with one vector per mesh vertex.
- REINHART_COEFFICIENTS = (0.0113221971, 0.0111894547, 0.0109255262, 0.0105335058, 0.0125224872, 0.0117312774, 0.0108025291, 0.00974713106, 0.011436609, 0.00974295956, 0.0119026242, 0.00905126163, 0.0121875626, 0.00612971396, 0.00921483254)¶
- REINHART_PATCHES_PER_ROW = (60, 60, 60, 60, 48, 48, 48, 48, 36, 36, 24, 24, 12, 12)¶
- TREGENZA_COEFFICIENTS = (0.0435449227, 0.0416418006, 0.0473984151, 0.0406730411, 0.0428934136, 0.0445221864, 0.0455168385, 0.0344199465)¶
- TREGENZA_PATCHES_PER_ROW = (30, 30, 24, 24, 18, 12, 6)¶
- property reinhart_dome_mesh¶
An Mesh3D representing the Reinhart sky dome.
There is one quad face per patch except for the last circular patch, which is represented by 12 triangles.
- property reinhart_dome_vectors¶
An array of 577 vectors representing the Reinhart sky dome.
- property reinhart_solid_angles¶
Get a list of solid angles that align with the reinhart_dome_vectors.
- property reinhart_sphere_mesh¶
An Mesh3D representing a Reinhart sphere.
There is one quad face per patch except for the two circular patches, which are each represented by 12 triangles.
- property reinhart_sphere_vectors¶
An array of 1154 vectors representing a sphere of Reinhart vectors.
- property tregenza_dome_mesh¶
An Mesh3D representing the Tregenza sky dome.
There is one quad face per patch except for the last circular patch, which is represented by 6 triangles.
- property tregenza_dome_mesh_high_res¶
An high-resolution Mesh3D representing the Tregenza sky dome.
Each patch is represented by a 3x3 set of quad faces except for the last circular patch, which is represented by 18 triangles.
- property tregenza_dome_vectors¶
An array of 145 vectors representing the Tregenza sky dome.
- property tregenza_solid_angles¶
Get a list of solid angles that align with the tregenza_dome_vectors.
- property tregenza_sphere_mesh¶
An Mesh3D representing a Tregenza sphere.
There is one quad face per patch except for the two circular patches, which are each represented by 6 triangles.
- property tregenza_sphere_vectors¶
An array of 290 vectors representing a sphere of Tregenza vectors.