pylinkage.geometry package
Submodules
pylinkage.geometry.core module
Basic geometry features.
- pylinkage.geometry.core.cyl_to_cart(radius, theta, ori=(0, 0))
Convert polar coordinates into cartesian.
- Parameters:
radius – distance from ori
theta – angle is the angle starting from abscissa axis
ori – origin point (Default value = (0)).
- pylinkage.geometry.core.dist_builtin(point1, point2)
Euclidian distance between two 2D points.
Legacy built-in unoptimized equivalent of math.dist in Python 3.8.
- Parameters:
point1 (tuple[float, float]) – First point
point2 (tuple[float, float]) – Second point
- pylinkage.geometry.core.get_nearest_point(reference_point, first_point, second_point)
Return the point closer to the reference.
- Parameters:
reference_point (tuple[float, float]) – Point to compare to
first_point (tuple[float, float]) – First point candidate
second_point (tuple[float, float]) – Second point candidate
- Return tuple[float, float]:
Either first point or second point
- pylinkage.geometry.core.line_from_points(first_point, second_point)
A cartesian equation of the line joining two points.
- Parameters:
first_point (tuple[float, float]) – One point of the line.
second_point (tuple[float, float]) – Another point on the line.
- Return tuple[float, float, float]:
A cartesian equation of this line.
- pylinkage.geometry.core.norm(vec)
Return the norm of a 2-dimensional vector.
- Parameters:
vec (tuple[float, float]) – Vector to get norm from
- pylinkage.geometry.core.sqr_dist(point1, point2)
Square of the distance between two points.
Faster than dist.
- Parameters:
point1 (tuple[float, float]) – First point to compare
point2 (tuple[float, float]) – Second point
- Return float:
Computed distance
pylinkage.geometry.secants module
The geometry module provides general geometry functions.
It is used extensively, so each function should be highly optimized.
- pylinkage.geometry.secants.bounding_box(locus)
Compute the bounding box of a locus.
Parameters
- locuslist[tuple[float]]
A list of point or any iterable with the same structure.
Returns
- tuple[float]
Bounding box as (y_min, x_max, y_max, x_min).
- pylinkage.geometry.secants.circle_intersect(circle1, circle2, tol=0.0)
Get the intersections of two circles.
Transcription of a Matt Woodhead program, method provided by Paul Bourke, 1997. http://paulbourke.net/geometry/circlesphere/.
- Parameters:
circle1 (tuple[float, float, float]) – first circle
circle2 (tuple[float, float, float]) – second circle
tol (float) – distance under which two points are considered equal (Default value = 0.0)
- Returns:
the intersections of two circles. Can be: - (0, ) when no intersection. - (1, (float, float)) if the intersection is one point. - (2, (float, float), (float, float)) for two points of intersection. - (3, (float, float, float)) if the intersection is a circle.
- Return type:
tuple[int] | tuple[int, tuple[float, float]] |
tuple[int, tuple[float, float], tuple[float, float]] | tuple[int, tuple[float, float, float]]
- pylinkage.geometry.secants.circle_line_from_points_intersection(circle, first_point, second_point)
Intersection(s) of a circle and a line defined by two points.
- Parameters:
circle (tuple[float, float, float]) – Sequence of (abscissa, ordinate, radius)
first_point (tuple[float, float]) – One point of the line.
second_point (tuple[float, float]) – Another point on the line.
- Returns:
Either 0, 1 or two intersection points, the first elements indicates the intersection type.
- Return type:
tuple | tuple[tuple[float, float]] | tuple[tuple[float, float], tuple[float, float]]
- pylinkage.geometry.secants.circle_line_intersection(circle, line)
Return the intersection between a line and a circle.
From https://mathworld.wolfram.com/Circle-LineIntersection.html
Circle((x0,y0), r).intersection(Line(a*x+b*y+c)) # sympy
- Parameters:
circle (tuple[float, float, float]) – Sequence of (abscissa, ordinate, radius)
line (tuple[float, float, float]) – Cartesian equation of a line.
- Returns:
Nothing, one or two intersections. The length of the tuple gives the intersection type.
- Return type:
tuple | tuple[tuple[float, float]] | tuple[tuple[float, float], tuple[float, float]]
- pylinkage.geometry.secants.intersection(obj_1, obj_2, tol=0.0)
Intersection of two arbitrary objects.
The input objects should be points or circles.
- Parameters:
obj_1 (tuple[float, float] | tuple[float, float, float]) – First point or circle
obj_2 (tuple[float, float] | tuple[float, float, float]) – Second point or circle
tol (float) – absolute tolerance to use if provided. (Default value = 0.0)
- Returns:
The intersection found, if any
- Return type:
tuple[float, float] | tuple[float, float, float] | None
- pylinkage.geometry.secants.secant_circles_intersections(distance, dist_x, dist_y, mid_dist, radius1, projected)
Return the TWO intersections of secant circles.
Module contents
Basic geometry package.