Package pygeodesy :: Module vector3d
[frames] | no frames]

Module vector3d

Generic 3-D vector base class Vector3d, class VectorError and functions intersections2, iscolinearWith, nearestOn, parse3d, sumOf and trilaterate3d2.

Pure Python implementation of vector-based functions by (C) Chris Veness 2011-2015 published under the same MIT Licence**, see Vector-based geodesy.


Version: 20.10.08

Classes
  VectorError
Vector3d or *Nvector issue.
  Vector3d
Generic 3-D vector manipulation.
Functions
 
intersections2(center1, radius1, center2, radius2, sphere=True, Vector=None, **Vector_kwds)
Compute the intersection of two spheres or circles, each defined by a center point and a radius.
 
iscolinearWith(point, point1, point2, eps=2.22044604925e-16)
Check whether a point is colinear with two other points.
 
parse3d(str3d, sep=',', name='', Vector=<class 'pygeodesy.vector3d.Vector3d'>, **Vector_kwds)
Parse an "x, y, z" string.
 
sumOf(vectors, Vector=<class 'pygeodesy.vector3d.Vector3d'>, **Vector_kwds)
Compute the vectorial sum of several vectors.
 
trilaterate3d2(center1, radius1, center2, radius2, center3, radius3, eps=2.22044604925e-16, Vector=None, **Vector_kwds)
Trilaterate three spheres, each given as a (3d) center point and radius.
Variables
  __all__ = _ALL_LAZY.vector3d
Function Details

intersections2 (center1, radius1, center2, radius2, sphere=True, Vector=None, **Vector_kwds)

 

Compute the intersection of two spheres or circles, each defined by a center point and a radius.

Arguments:
  • center1 - Center of the first sphere or circle (Vector3d, Vector3Tuple or Vector4Tuple).
  • radius1 - Radius of the first sphere or circle (same units as the center1 coordinates).
  • center2 - Center of the second sphere or circle (Vector3d, Vector3Tuple or Vector4Tuple).
  • radius2 - Radius of the second sphere or circle (same units as the center1 and center2 coordinates).
  • sphere - If True compute the center and radius of the intersection of two spheres. If False, ignore the z-component and compute the intersection of two circles (bool).
  • Vector - Class to return intersections (Vector3d or Vector3Tuple) or None for Vector3d.
  • Vector_kwds - Optional, additional Vector keyword arguments, ignored if Vector=None.
Returns:
If sphere is True, a 2-Tuple of the center and radius of the intersection of the spheres. The radius is 0.0 for abutting spheres.

If sphere is False, a 2-tuple of the intersection points of two circles. For abutting circles, both points are the same Vector instance.

Raises:

See Also: Sphere-Sphere and circle-circle intersections.

iscolinearWith (point, point1, point2, eps=2.22044604925e-16)

 

Check whether a point is colinear with two other points.

Arguments:
  • point - The point (Vector3d, Vector3Tuple or Vector4Tuple).
  • point1 - Another point (Vector3d, Vector3Tuple or Vector4Tuple).
  • point2 - Another point (Vector3d, Vector3Tuple or Vector4Tuple).
  • eps - Tolerance (scalar), same units as x, y and z.
Returns:
True if colinear, False otherwise.
Raises:
  • TypeError - Invalid point, point1 or point2.

See Also: Function nearestOn.

parse3d (str3d, sep=',', name='', Vector=<class 'pygeodesy.vector3d.Vector3d'>, **Vector_kwds)

 

Parse an "x, y, z" string.

Arguments:
  • str3d - X, y and z values (str).
  • sep - Optional separator (str).
  • name - Optional instance name (str).
  • Vector - Optional class (Vector3d).
  • Vector_kwds - Optional Vector keyword arguments, ignored if Vector=None.
Returns:
New Vector or if Vector is None, a Vector3Tuple(x, y, z).
Raises:

sumOf (vectors, Vector=<class 'pygeodesy.vector3d.Vector3d'>, **Vector_kwds)

 

Compute the vectorial sum of several vectors.

Arguments:
  • vectors - Vectors to be added (Vector3d[]).
  • Vector - Optional class for the vectorial sum (Vector3d).
  • Vector_kwds - Optional Vector keyword arguments, ignored if Vector=None.
Returns:
Vectorial sum as Vector or if Vector is None, a Vector3Tuple(x, y, z).
Raises:

trilaterate3d2 (center1, radius1, center2, radius2, center3, radius3, eps=2.22044604925e-16, Vector=None, **Vector_kwds)

 

Trilaterate three spheres, each given as a (3d) center point and radius.

Arguments:
  • center1 - Center of the 1st sphere (Vector3d, Vector3Tuple or Vector4Tuple).
  • radius1 - Radius of the 1st sphere (same units as x, y and z).
  • center2 - Center of the 2nd sphere (Vector3d, Vector3Tuple or Vector4Tuple).
  • radius2 - Radius of this sphere (same units as x, y and z).
  • center3 - Center of the 3rd sphere (Vector3d, Vector3Tuple or Vector4Tuple).
  • radius3 - Radius of the 3rd sphere (same units as x, y and z).
  • eps - Tolerance (scalar), same units as x, y, and z.
  • Vector - Class to return intersections (Vector3d or Vector3Tuple) or None for Vector3d.
  • Vector_kwds - Optional, additional Vector keyword arguments, ignored if Vector=None.
Returns:
2-Tuple with two trilaterated points, each a Vector instance. Both points are the same instance if all three spheres abut/intersect in a single point.
Raises:
  • ImportError - Package numpy not found, not installed or older than version 1.15.
  • IntersectionError - No intersection, colinear or concentric centers or trilateration failed some other way.
  • TypeError - Invalid center1, center2 or center3.
  • UnitError - Invalid radius1, radius2 or radius3.

Note: Package numpy is required, version 1.15 or later.

See Also: Norrdine, A. An Algebraic Solution to the Multilateration Problem and implementation.