clifford.tools.g3c¶
Tools for 3DCGA (g3c)
3DCGA Tools¶
Generation Methods¶
random_bivector () |
Creates a random bivector on the form described by R. |
standard_point_pair_at_origin () |
Creates a standard point pair at the origin |
random_point_pair_at_origin () |
Creates a random point pair bivector object at the origin |
random_point_pair () |
Creates a random point pair bivector object |
standard_line_at_origin () |
Creates a standard line at the origin |
random_line_at_origin () |
Creates a random line at the origin |
random_line () |
Creates a random line |
random_circle_at_origin () |
Creates a random circle at the origin |
random_circle () |
Creates a random circle |
random_sphere_at_origin () |
Creates a random sphere at the origin |
random_sphere () |
Creates a random sphere |
random_plane_at_origin () |
Creates a random plane at the origin |
random_plane () |
Creates a random plane |
generate_n_clusters (object_generator, …) |
Creates n_clusters of random objects |
generate_random_object_cluster (n_objects, …) |
Creates a cluster of random objects |
random_translation_rotor ([maximum_translation]) |
generate a random translation rotor |
random_rotation_translation_rotor ([…]) |
generate a random combined rotation and translation rotor |
random_conformal_point ([l_max]) |
Creates a random conformal point |
generate_dilation_rotor (scale) |
Generates a rotor that performs dilation about the origin |
generate_translation_rotor (euc_vector_a) |
Generates a rotor that translates objects along the euclidean vector euc_vector_a |
Geometry Methods¶
intersect_line_and_plane_to_point (line, plane) |
Returns the point at the intersection of a line and plane If there is no intersection it returns None |
val_intersect_line_and_plane_to_point |
Returns the point at the intersection of a line and plane |
quaternion_and_vector_to_rotor (quaternion, …) |
Takes in a quaternion and a vector and returns a conformal rotor that implements the transformation |
get_center_from_sphere (sphere) |
Returns the conformal point at the centre of a sphere by reflecting the point at infinity |
get_radius_from_sphere (sphere) |
Returns the radius of a sphere |
point_pair_to_end_points (T) |
Extracts the end points of a point pair bivector |
val_point_pair_to_end_points |
Extracts the end points of a point pair bivector |
get_circle_in_euc (circle) |
Extracts all the normal stuff for a circle |
circle_to_sphere (C) |
returns the sphere for which the input circle is the perimeter |
line_to_point_and_direction (line) |
converts a line to the conformal nearest point to the origin and a euc direction vector in direction of the line |
get_plane_origin_distance (plane) |
Get the distance between a given plane and the origin |
get_plane_normal (plane) |
Get the normal to the plane |
get_nearest_plane_point (plane) |
Get the nearest point to the origin on the plane |
val_convert_2D_polar_line_to_conformal_line (…) |
Converts a 2D polar line to a conformal line |
convert_2D_polar_line_to_conformal_line (rho, …) |
Converts a 2D polar line to a conformal line |
val_convert_2D_point_to_conformal |
Convert a 2D point to conformal |
convert_2D_point_to_conformal (x, y) |
Convert a 2D point to conformal |
val_distance_point_to_line (point, line) |
Returns the euclidean distance between a point and a line |
distance_polar_line_to_euc_point_2d (rho, …) |
Return the distance between a polar line and a euclidean point in 2D |
midpoint_between_lines (L1, L2) |
Gets the point that is maximally close to both lines Hadfield and Lasenby AGACSE2018 |
val_midpoint_between_lines |
Gets the point that is maximally close to both lines Hadfield and Lasenby AGACSE2018 |
midpoint_of_line_cluster (line_cluster) |
Gets an approximate center point of a line cluster Hadfield and Lasenby AGACSE2018 |
val_midpoint_of_line_cluster |
Gets an approximate center point of a line cluster Hadfield and Lasenby AGACSE2018 |
val_midpoint_of_line_cluster_grad |
Gets an approximate center point of a line cluster Hadfield and Lasenby AGACSE2018 |
get_line_intersection (L3, Ldd) |
Gets the point of intersection of two orthogonal lines that meet Xdd = Ldd*no*Ldd + no Xddd = L3*Xdd*L3 Pd = 0.5*(Xdd+Xddd) P = -(Pd*ninf*Pd)(1)/(2*(Pd|einf)**2)[0] |
val_get_line_intersection |
Gets the point of intersection of two orthogonal lines that meet Xdd = Ldd*no*Ldd + no Xddd = L3*Xdd*L3 Pd = 0.5*(Xdd+Xddd) P = -(Pd*ninf*Pd)(1)/(2*(Pd|einf)**2)[0] |
project_points_to_plane (point_list, plane) |
Takes a load of points and projects them onto a plane |
project_points_to_sphere (point_list, sphere) |
Takes a load of points and projects them onto a sphere |
project_points_to_circle (point_list, circle) |
Takes a load of point and projects them onto a circle The closest flag determines if it should be the closest or furthest point on the circle |
project_points_to_line (point_list, line) |
Takes a load of points and projects them onto a line |
Misc¶
meet_val |
The meet algorithm as described in “A Covariant Approach to Geometry” I5*((I5*A) ^ (I5*B)) |
meet (A, B) |
The meet algorithm as described in “A Covariant Approach to Geometry” I5*((I5*A) ^ (I5*B)) |
normalise_n_minus_1 (mv) |
Normalises a conformal point so that it has an inner product of -1 with einf |
val_normalise_n_minus_1 |
Normalises a conformal point so that it has an inner product of -1 with einf |
val_apply_rotor |
Applies rotor to multivector in a fast way - JITTED |
apply_rotor (mv_in, rotor) |
Applies rotor to multivector in a fast way |
val_apply_rotor_inv |
Applies rotor to multivector in a fast way takes pre computed adjoint |
apply_rotor_inv (mv_in, rotor, rotor_inv) |
Applies rotor to multivector in a fast way takes pre computed adjoint |
euc_dist (conf_mv_a, conf_mv_b) |
Returns the distance between two conformal points |
mult_with_ninf |
Convenience function for multiplication with ninf |
val_norm |
Returns sqrt(abs(~A*A)) |
norm (mv) |
Returns sqrt(abs(~A*A)) |
val_normalised |
Returns A/sqrt(abs(~A*A)) |
normalised (mv) |
fast version of the normal() function |
val_up |
Fast jitted up mapping |
fast_up (mv) |
Fast up mapping |
val_normalInv |
A fast, jitted version of normalInv |
val_homo |
A fast, jitted version of homo() |
val_down |
A fast, jitted version of down() |
fast_down (mv) |
A fast version of down() |
dual_func |
Fast dual |
fast_dual (a) |
Fast dual |
disturb_object (mv_object[, …]) |
Disturbs an object by a random rotor |
project_val |
fast grade projection |
get_line_reflection_matrix (lines[, n_power]) |
Generates the matrix that sums the reflection of a point in many lines |
val_get_line_reflection_matrix |
Generates the matrix that sums the reflection of a point in many lines |
val_truncated_get_line_reflection_matrix |
Generates the truncated matrix that sums the reflection of a point in many lines n_power should be 1 or a power of 2 |
interpret_multivector_as_object (mv) |
Takes an input multivector and returns what kind of object it is -1 -> not a blade 0 -> a 1 vector but not a point 1 -> a euclidean point 2 -> a conformal point 3 -> a point pair 4 -> a circle 5 -> a line 6 -> a sphere 7 -> a plane |
normalise_TR_to_unit_T (TR) |
Takes in a TR rotor extracts the R and T normalises the T to unit displacement magnitude rebuilds the TR rotor with the new displacement rotor returns the new TR and the original length of the T rotor |
scale_TR_translation (TR, scale) |
Takes in a TR rotor and a scale extracts the R and T scales the T displacement magnitude by scale rebuilds the TR rotor with the new displacement rotor returns the new TR rotor |
Root Finding¶
dorst_norm_val |
Square Root of Rotors - Implements the norm of a rotor |
check_sigma_for_positive_root_val |
Square Root of Rotors - Checks for a positive root |
check_sigma_for_positive_root (sigma) |
Square Root of Rotors - Checks for a positive root |
check_sigma_for_negative_root_val |
Square Root of Rotors - Checks for a negative root |
check_sigma_for_negative_root (sigma) |
Square Root of Rotors - Checks for a negative root |
check_infinite_roots_val |
Square Root of Rotors - Checks for a infinite roots |
check_infinite_roots (sigma) |
Square Root of Rotors - Checks for a infinite roots |
positive_root_val |
Square Root of Rotors - Evaluates the positive root Square Root of Rotors - Evaluates the positive root |
negative_root_val |
Square Root of Rotors - Evaluates the positive root |
positive_root (sigma) |
Square Root of Rotors - Evaluates the positive root |
negative_root (sigma) |
Square Root of Rotors - Evaluates the negative root |
general_root_val |
Square Root and Logarithm of Rotors in 3D Conformal Geometric Algebra Using Polar Decomposition Leo Dorst and Robert Valkenburg |
general_root (sigma) |
The general case of the root of a grade 0,4 multivector |
val_annihilate_k |
Removes K from C = KX via (K[0] - K[4])*C |
annihilate_k (K, C) |
Removes K from C = KX via (K[0] - K[4])*C |
pos_twiddle_root_val |
Square Root and Logarithm of Rotors in 3D Conformal Geometric Algebra Using Polar Decomposition Leo Dorst and Robert Valkenburg |
neg_twiddle_root_val |
Square Root and Logarithm of Rotors in 3D Conformal Geometric Algebra Using Polar Decomposition Leo Dorst and Robert Valkenburg |
pos_twiddle_root (C) |
Square Root and Logarithm of Rotors in 3D Conformal Geometric Algebra Using Polar Decomposition Leo Dorst and Robert Valkenburg |
neg_twiddle_root (C) |
Square Root and Logarithm of Rotors in 3D Conformal Geometric Algebra Using Polar Decomposition Leo Dorst and Robert Valkenburg |
square_roots_of_rotor (R) |
Square Root and Logarithm of Rotors in 3D Conformal Geometric Algebra Using Polar Decomposition Leo Dorst and Robert Valkenburg |
n_th_rotor_root (R, n) |
Takes the n_th root of rotor R n must be a power of 2 |
interp_objects_root (C1, C2, alpha) |
Hadfield and Lasenby, Direct Linear Interpolation of Geometric Objects, AGACSE2018 Directly linearly interpolates conformal objects Return a valid object from the addition result C |
general_object_interpolation (…[, kind]) |
Hadfield and Lasenby, Direct Linear Interpolation of Geometric Objects, AGACSE2018 This is a general interpolation through the |
average_objects (obj_list[, weights, …]) |
Hadfield and Lasenby, Direct Linear Interpolation of Geometric Objects, AGACSE2018 Directly averages conformal objects Return a valid object from the addition result C |
val_average_objects_with_weights |
Hadfield and Lasenby, Direct Linear Interpolation of Geometric Objects, AGACSE2018 Directly averages conformal objects Return a valid object from the addition result C |
val_average_objects |
Hadfield and Lasenby, Direct Linear Interpolation of Geometric Objects, AGACSE2018 Directly averages conformal objects Return a valid object from the addition result C |
rotor_between_objects (X1, X2) |
Lasenby and Hadfield AGACSE2018 For any two conformal objects X1 and X2 this returns a rotor that takes X1 to X2 Return a valid object from the addition result 1 + gamma*X2X1 |
val_rotor_between_objects_root |
Lasenby and Hadfield AGACSE2018 For any two conformal objects X1 and X2 this returns a rotor that takes X1 to X2 Uses the square root of rotors for efficiency and numerical stability |
val_rotor_between_objects_explicit |
Lasenby and Hadfield AGACSE2018 For any two conformal objects X1 and X2 this returns a rotor that takes X1 to X2 |
calculate_S_over_mu (X1, X2) |
Lasenby and Hadfield AGACSE2018 For any two conformal objects X1 and X2 this returns a factor that corrects the X1 + X2 back to a blade |
val_rotor_between_lines |
Implements a very optimised rotor line to line extraction |
rotor_between_lines (L1, L2) |
return the rotor between two lines |
rotor_between_planes (P1, P2) |
return the rotor between two planes |
val_rotor_rotor_between_planes |
return the rotor between two planes |
Functions
annihilate_k (K, C) |
Removes K from C = KX via (K[0] - K[4])*C |
apply_rotor (mv_in, rotor) |
Applies rotor to multivector in a fast way |
apply_rotor_inv (mv_in, rotor, rotor_inv) |
Applies rotor to multivector in a fast way takes pre computed adjoint |
average_objects (obj_list[, weights, …]) |
Hadfield and Lasenby, Direct Linear Interpolation of Geometric Objects, AGACSE2018 Directly averages conformal objects Return a valid object from the addition result C |
calculate_S_over_mu (X1, X2) |
Lasenby and Hadfield AGACSE2018 For any two conformal objects X1 and X2 this returns a factor that corrects the X1 + X2 back to a blade |
check_infinite_roots (sigma) |
Square Root of Rotors - Checks for a infinite roots |
check_sigma_for_negative_root (sigma) |
Square Root of Rotors - Checks for a negative root |
check_sigma_for_positive_root (sigma) |
Square Root of Rotors - Checks for a positive root |
circle_to_sphere (C) |
returns the sphere for which the input circle is the perimeter |
closest_points_on_circles (C1, C2[, niterations]) |
Given two circles C1 and C2 this calculates the closest points on each of them to the other |
convert_2D_point_to_conformal (x, y) |
Convert a 2D point to conformal |
convert_2D_polar_line_to_conformal_line (rho, …) |
Converts a 2D polar line to a conformal line |
distance_polar_line_to_euc_point_2d (rho, …) |
Return the distance between a polar line and a euclidean point in 2D |
disturb_object (mv_object[, …]) |
Disturbs an object by a random rotor |
enclosing_sphere (spheres) |
For a given set of spheres this finds a sphere that encloses all of them Tries to find the smallest one it can |
euc_dist (conf_mv_a, conf_mv_b) |
Returns the distance between two conformal points |
fast_down (mv) |
A fast version of down() |
fast_dual (a) |
Fast dual |
fast_up (mv) |
Fast up mapping |
furthest_points_on_circles (C1, C2[, niterations]) |
Given two circles C1 and C2 this calculates the closest points on each of them to the other |
general_object_interpolation (…[, kind]) |
Hadfield and Lasenby, Direct Linear Interpolation of Geometric Objects, AGACSE2018 This is a general interpolation through the |
general_root (sigma) |
The general case of the root of a grade 0,4 multivector |
generate_dilation_rotor (scale) |
Generates a rotor that performs dilation about the origin |
generate_n_clusters (object_generator, …) |
Creates n_clusters of random objects |
generate_random_object_cluster (n_objects, …) |
Creates a cluster of random objects |
generate_translation_rotor (euc_vector_a) |
Generates a rotor that translates objects along the euclidean vector euc_vector_a |
get_center_from_sphere (sphere) |
Returns the conformal point at the centre of a sphere by reflecting the point at infinity |
get_circle_in_euc (circle) |
Extracts all the normal stuff for a circle |
get_line_intersection (L3, Ldd) |
Gets the point of intersection of two orthogonal lines that meet Xdd = Ldd*no*Ldd + no Xddd = L3*Xdd*L3 Pd = 0.5*(Xdd+Xddd) P = -(Pd*ninf*Pd)(1)/(2*(Pd|einf)**2)[0] |
get_line_reflection_matrix (lines[, n_power]) |
Generates the matrix that sums the reflection of a point in many lines |
get_nearest_plane_point (plane) |
Get the nearest point to the origin on the plane |
get_plane_normal (plane) |
Get the normal to the plane |
get_plane_origin_distance (plane) |
Get the distance between a given plane and the origin |
get_radius_from_sphere (sphere) |
Returns the radius of a sphere |
interp_objects_root (C1, C2, alpha) |
Hadfield and Lasenby, Direct Linear Interpolation of Geometric Objects, AGACSE2018 Directly linearly interpolates conformal objects Return a valid object from the addition result C |
interpret_multivector_as_object (mv) |
Takes an input multivector and returns what kind of object it is -1 -> not a blade 0 -> a 1 vector but not a point 1 -> a euclidean point 2 -> a conformal point 3 -> a point pair 4 -> a circle 5 -> a line 6 -> a sphere 7 -> a plane |
intersect_line_and_plane_to_point (line, plane) |
Returns the point at the intersection of a line and plane If there is no intersection it returns None |
join_spheres (S1in, S2in) |
Find the smallest sphere that encloses both spheres |
left_gmt_generator () |
|
line_to_point_and_direction (line) |
converts a line to the conformal nearest point to the origin and a euc direction vector in direction of the line |
meet (A, B) |
The meet algorithm as described in “A Covariant Approach to Geometry” I5*((I5*A) ^ (I5*B)) |
midpoint_between_lines (L1, L2) |
Gets the point that is maximally close to both lines Hadfield and Lasenby AGACSE2018 |
midpoint_of_line_cluster (line_cluster) |
Gets an approximate center point of a line cluster Hadfield and Lasenby AGACSE2018 |
n_th_rotor_root (R, n) |
Takes the n_th root of rotor R n must be a power of 2 |
neg_twiddle_root (C) |
Square Root and Logarithm of Rotors in 3D Conformal Geometric Algebra Using Polar Decomposition Leo Dorst and Robert Valkenburg |
negative_root (sigma) |
Square Root of Rotors - Evaluates the negative root |
norm (mv) |
Returns sqrt(abs(~A*A)) |
normalise_TR_to_unit_T (TR) |
Takes in a TR rotor extracts the R and T normalises the T to unit displacement magnitude rebuilds the TR rotor with the new displacement rotor returns the new TR and the original length of the T rotor |
normalise_n_minus_1 (mv) |
Normalises a conformal point so that it has an inner product of -1 with einf |
normalised (mv) |
fast version of the normal() function |
point_pair_to_end_points (T) |
Extracts the end points of a point pair bivector |
pos_twiddle_root (C) |
Square Root and Logarithm of Rotors in 3D Conformal Geometric Algebra Using Polar Decomposition Leo Dorst and Robert Valkenburg |
positive_root (sigma) |
Square Root of Rotors - Evaluates the positive root |
project_points_to_circle (point_list, circle) |
Takes a load of point and projects them onto a circle The closest flag determines if it should be the closest or furthest point on the circle |
project_points_to_line (point_list, line) |
Takes a load of points and projects them onto a line |
project_points_to_plane (point_list, plane) |
Takes a load of points and projects them onto a plane |
project_points_to_sphere (point_list, sphere) |
Takes a load of points and projects them onto a sphere |
quaternion_and_vector_to_rotor (quaternion, …) |
Takes in a quaternion and a vector and returns a conformal rotor that implements the transformation |
random_bivector () |
Creates a random bivector on the form described by R. |
random_circle () |
Creates a random circle |
random_circle_at_origin () |
Creates a random circle at the origin |
random_conformal_point ([l_max]) |
Creates a random conformal point |
random_line () |
Creates a random line |
random_line_at_origin () |
Creates a random line at the origin |
random_plane () |
Creates a random plane |
random_plane_at_origin () |
Creates a random plane at the origin |
random_point_pair () |
Creates a random point pair bivector object |
random_point_pair_at_origin () |
Creates a random point pair bivector object at the origin |
random_rotation_translation_rotor ([…]) |
generate a random combined rotation and translation rotor |
random_sphere () |
Creates a random sphere |
random_sphere_at_origin () |
Creates a random sphere at the origin |
random_translation_rotor ([maximum_translation]) |
generate a random translation rotor |
right_gmt_generator () |
|
rotor_between_lines (L1, L2) |
return the rotor between two lines |
rotor_between_objects (X1, X2) |
Lasenby and Hadfield AGACSE2018 For any two conformal objects X1 and X2 this returns a rotor that takes X1 to X2 Return a valid object from the addition result 1 + gamma*X2X1 |
rotor_between_planes (P1, P2) |
return the rotor between two planes |
scale_TR_translation (TR, scale) |
Takes in a TR rotor and a scale extracts the R and T scales the T displacement magnitude by scale rebuilds the TR rotor with the new displacement rotor returns the new TR rotor |
sphere_in_sphere (S1, S2[, tolerance]) |
Checks if one sphere is inside the other (S1|S2)[0] < -1 |
sphere_line_intersect (s, l) |
Checks for intersection between a sphere and a line |
square_roots_of_rotor (R) |
Square Root and Logarithm of Rotors in 3D Conformal Geometric Algebra Using Polar Decomposition Leo Dorst and Robert Valkenburg |
standard_line_at_origin () |
Creates a standard line at the origin |
standard_point_pair_at_origin () |
Creates a standard point pair at the origin |
unsign_sphere (S) |
Normalises the sign of a sphere |
val_convert_2D_polar_line_to_conformal_line (…) |
Converts a 2D polar line to a conformal line |
val_distance_point_to_line (point, line) |
Returns the euclidean distance between a point and a line |
Classes
ConformalMVArray |
This class is for storing arrays of conformal multivectors |