irfpy.util.cone
¶
Cone is a cone, a geometry.
Code author: Yoshifumi Futaana
- irfpy.util.cone.get_surface_vectors(axis_vector, cone_angle_deg, ndiv=180)[source]¶
Make vectors of cone surfaces.
- Parameters:
axis_vector (
np.array
) – A 3-D vector.cone_angle_deg (
float
) – Cone angle in degrees
- Returns:
Vectors in (3, 180) shaped ndarray. Normalized.
- Return type:
np.array
The cone vectors, with its center acis vextor of (1, 1, -1) and the angle 60 degrees can be calculated as follows.
>>> vectors = get_surface_vectors((1., 1., -1.), 60.0) >>> print(vectors.shape) (3, 180) >>> import numpy as np >>> cos_angles = np.array((1., 1., -1)).dot(vectors) / np.sqrt(3) >>> np.allclose(cos_angles, 0.5) # All the values are 0.5, i.e. 60 deg True
- class irfpy.util.cone.Cone(apex, axis, cone_angle)[source]¶
Bases:
object
A cone. Single direction.
- Parameters:
apex – The location of the apex. (3,) shaped numpy array
axis – The direction. (3,) shaped numpy array
cone_angle – Cone angle in degrees
- apex¶
The coordinate of the apex
- axis¶
“Normal vector of the cone central axis
- cone_angle¶
Cone angle in degrees
- get_surface_vectors(length=1.0, ndiv=180)[source]¶
- Parameters:
ndiv –
- Returns:
(ndiv, 3) shaped vector
Note
The returned dimension is different (transposed) from
get_surface_vectors()
!! It is because the (N, 3) shape is more intuitive for specifying multiple 3-D vectors.>>> cone = Cone([-1, 0, 0], [1, 0, 0], 45) >>> surf = cone.get_surface_vectors(ndiv=4) >>> print(surf) [[-2.92893219e-01 0.00000000e+00 -7.07106781e-01] [-2.92893219e-01 6.12372436e-01 3.53553391e-01] [-2.92893219e-01 -6.12372436e-01 3.53553391e-01] [-2.92893219e-01 -1.73191211e-16 -7.07106781e-01]]
- within(points)[source]¶
Return a list of in-out.
Multipoint-version of in-out determinator. For a single point, you can use
>>> cone = Cone([0, 0, 0], [1, 0, 0], 45) # Apex at origin, axis in a-direction, 45 deg cone-angle >>> (3, 0, 0) in cone # Return if (3, 0, 0) is in the cone. True
This
within()
method get multiple point.>>> points = [[0, 0, 0], [1, 0, 0], [2, 0, 0], [-1, 0, 0]] >>> cone.within(points) array([ True, True, True, False])
It is equivalent to
>>> [p in cone for p in points] [True, True, True, False]
- Parameters:
points – (N, 3) shaped array representing 3-D points
- Returns:
(N,) shpaed boolean array