Tangent

Tangent Basis

ipctk.point_point_tangent_basis(p0: numpy.ndarray[numpy.float64[m, 1]], p1: numpy.ndarray[numpy.float64[m, 1]]) numpy.ndarray[numpy.float64[m, n]]

Compute a basis for the space tangent to the point-point pair.

Parameters:
p0: numpy.ndarray[numpy.float64[m, 1]]

First point

p1: numpy.ndarray[numpy.float64[m, 1]]

Second point

Returns:

A 3x2 matrix whose columns are the basis vectors.

ipctk.point_edge_tangent_basis(p: numpy.ndarray[numpy.float64[m, 1]], e0: numpy.ndarray[numpy.float64[m, 1]], e1: numpy.ndarray[numpy.float64[m, 1]]) numpy.ndarray[numpy.float64[m, n]]

Compute a basis for the space tangent to the point-edge pair.

Parameters:
p: numpy.ndarray[numpy.float64[m, 1]]

Point

e0: numpy.ndarray[numpy.float64[m, 1]]

First edge point

e1: numpy.ndarray[numpy.float64[m, 1]]

Second edge point

Returns:

A 3x2 matrix whose columns are the basis vectors.

ipctk.edge_edge_tangent_basis(ea0: numpy.ndarray[numpy.float64[3, 1]], ea1: numpy.ndarray[numpy.float64[3, 1]], eb0: numpy.ndarray[numpy.float64[3, 1]], eb1: numpy.ndarray[numpy.float64[3, 1]]) numpy.ndarray[numpy.float64[3, 2]]

Compute a basis for the space tangent to the edge-edge pair.

Parameters:
ea0: numpy.ndarray[numpy.float64[3, 1]]

First point of the first edge

ea1: numpy.ndarray[numpy.float64[3, 1]]

Second point of the first edge

eb0: numpy.ndarray[numpy.float64[3, 1]]

First point of the second edge

eb1: numpy.ndarray[numpy.float64[3, 1]]

Second point of the second edge

Returns:

A 3x2 matrix whose columns are the basis vectors.

ipctk.point_triangle_tangent_basis(p: numpy.ndarray[numpy.float64[3, 1]], t0: numpy.ndarray[numpy.float64[3, 1]], t1: numpy.ndarray[numpy.float64[3, 1]], t2: numpy.ndarray[numpy.float64[3, 1]]) numpy.ndarray[numpy.float64[3, 2]]

Compute a basis for the space tangent to the point-triangle pair.

\[\begin{bmatrix} \frac{t_1 - t_0}{\|t_1 - t_0\|} & \frac{((t_1 - t_0)\times(t_2 - t_0)) \times(t_1 - t_0)}{\|((t_1 - t_0)\times(t_2 - t_0))\times(t_1 - t_0)\|} \end{bmatrix}\]
Parameters:
p: numpy.ndarray[numpy.float64[3, 1]]

Point

t0: numpy.ndarray[numpy.float64[3, 1]]

Triangle’s first vertex

t1: numpy.ndarray[numpy.float64[3, 1]]

Triangle’s second vertex

t2: numpy.ndarray[numpy.float64[3, 1]]

Triangle’s third vertex

Returns:

A 3x2 matrix whose columns are the basis vectors.

Tangent Basis Jacobians

ipctk.point_point_tangent_basis_jacobian(p0: numpy.ndarray[numpy.float64[m, 1]], p1: numpy.ndarray[numpy.float64[m, 1]]) numpy.ndarray[numpy.float64[m, n]]

Compute the Jacobian of the tangent basis for the point-point pair.

Parameters:
p0: numpy.ndarray[numpy.float64[m, 1]]

First point

p1: numpy.ndarray[numpy.float64[m, 1]]

Second point

Returns:

A 6*3x2 matrix whose columns are the basis vectors.

ipctk.point_edge_tangent_basis_jacobian(p: numpy.ndarray[numpy.float64[m, 1]], e0: numpy.ndarray[numpy.float64[m, 1]], e1: numpy.ndarray[numpy.float64[m, 1]]) numpy.ndarray[numpy.float64[m, n]]

Compute the Jacobian of the tangent basis for the point-edge pair.

Parameters:
p: numpy.ndarray[numpy.float64[m, 1]]

Point

e0: numpy.ndarray[numpy.float64[m, 1]]

First edge point

e1: numpy.ndarray[numpy.float64[m, 1]]

Second edge point

Returns:

A 9*3x2 matrix whose columns are the basis vectors.

ipctk.edge_edge_tangent_basis_jacobian(ea0: numpy.ndarray[numpy.float64[3, 1]], ea1: numpy.ndarray[numpy.float64[3, 1]], eb0: numpy.ndarray[numpy.float64[3, 1]], eb1: numpy.ndarray[numpy.float64[3, 1]]) numpy.ndarray[numpy.float64[36, 2]]

Compute the Jacobian of the tangent basis for the edge-edge pair.

Parameters:
ea0: numpy.ndarray[numpy.float64[3, 1]]

First point of the first edge

ea1: numpy.ndarray[numpy.float64[3, 1]]

Second point of the first edge

eb0: numpy.ndarray[numpy.float64[3, 1]]

First point of the second edge

eb1: numpy.ndarray[numpy.float64[3, 1]]

Second point of the second edge

Returns:

A 12*3x2 matrix whose columns are the basis vectors.

ipctk.point_triangle_tangent_basis_jacobian(p: numpy.ndarray[numpy.float64[3, 1]], t0: numpy.ndarray[numpy.float64[3, 1]], t1: numpy.ndarray[numpy.float64[3, 1]], t2: numpy.ndarray[numpy.float64[3, 1]]) numpy.ndarray[numpy.float64[36, 2]]

Compute the Jacobian of the tangent basis for the point-triangle pair.

Parameters:
p: numpy.ndarray[numpy.float64[3, 1]]

Point

t0: numpy.ndarray[numpy.float64[3, 1]]

Triangle’s first vertex

t1: numpy.ndarray[numpy.float64[3, 1]]

Triangle’s second vertex

t2: numpy.ndarray[numpy.float64[3, 1]]

Triangle’s third vertex

Returns:

A 12*3x2 matrix whose columns are the basis vectors.

Relative Velocity

ipctk.point_point_relative_velocity(dp0: numpy.ndarray[numpy.float64[m, 1]], dp1: numpy.ndarray[numpy.float64[m, 1]]) numpy.ndarray[numpy.float64[m, 1]]

Compute the relative velocity of two points

Parameters:
dp0: numpy.ndarray[numpy.float64[m, 1]]

Velocity of the first point

dp1: numpy.ndarray[numpy.float64[m, 1]]

Velocity of the second point

Returns:

The relative velocity of the two points

ipctk.point_edge_relative_velocity(dp: numpy.ndarray[numpy.float64[m, 1]], de0: numpy.ndarray[numpy.float64[m, 1]], de1: numpy.ndarray[numpy.float64[m, 1]], alpha: float) numpy.ndarray[numpy.float64[m, 1]]

Compute the relative velocity of a point and an edge

Parameters:
dp: numpy.ndarray[numpy.float64[m, 1]]

Velocity of the point

de0: numpy.ndarray[numpy.float64[m, 1]]

Velocity of the first endpoint of the edge

de1: numpy.ndarray[numpy.float64[m, 1]]

Velocity of the second endpoint of the edge

alpha: float

Parametric coordinate of the closest point on the edge

Returns:

The relative velocity of the point and the edge

ipctk.edge_edge_relative_velocity(dea0: numpy.ndarray[numpy.float64[3, 1]], dea1: numpy.ndarray[numpy.float64[3, 1]], deb0: numpy.ndarray[numpy.float64[3, 1]], deb1: numpy.ndarray[numpy.float64[3, 1]], coords: numpy.ndarray[numpy.float64[2, 1]]) numpy.ndarray[numpy.float64[3, 1]]

Compute the relative velocity of the edges.

Parameters:
dea0: numpy.ndarray[numpy.float64[3, 1]]

Velocity of the first endpoint of the first edge

dea1: numpy.ndarray[numpy.float64[3, 1]]

Velocity of the second endpoint of the first edge

deb0: numpy.ndarray[numpy.float64[3, 1]]

Velocity of the first endpoint of the second edge

deb1: numpy.ndarray[numpy.float64[3, 1]]

Velocity of the second endpoint of the second edge

coords: numpy.ndarray[numpy.float64[2, 1]]

Two parametric coordinates of the closest points on the edges

Returns:

The relative velocity of the edges

ipctk.point_triangle_relative_velocity(dp: numpy.ndarray[numpy.float64[3, 1]], dt0: numpy.ndarray[numpy.float64[3, 1]], dt1: numpy.ndarray[numpy.float64[3, 1]], dt2: numpy.ndarray[numpy.float64[3, 1]], coords: numpy.ndarray[numpy.float64[2, 1]]) numpy.ndarray[numpy.float64[3, 1]]

Compute the relative velocity of the point to the triangle.

Parameters:
dp: numpy.ndarray[numpy.float64[3, 1]]

Velocity of the point

dt0: numpy.ndarray[numpy.float64[3, 1]]

Velocity of the first vertex of the triangle

dt1: numpy.ndarray[numpy.float64[3, 1]]

Velocity of the second vertex of the triangle

dt2: numpy.ndarray[numpy.float64[3, 1]]

Velocity of the third vertex of the triangle

coords: numpy.ndarray[numpy.float64[2, 1]]

Baricentric coordinates of the closest point on the triangle

Returns:

The relative velocity of the point to the triangle

Relative Velocity as Multiplier Matricies

ipctk.point_point_relative_velocity_matrix(dim: int) numpy.ndarray[numpy.float64[m, n]]

Compute the point-point relative velocity premultiplier matrix

Parameters:
dim: int

Dimension (2 or 3)

Returns:

The relative velocity premultiplier matrix

ipctk.point_edge_relative_velocity_matrix(dim: int, alpha: float) numpy.ndarray[numpy.float64[m, n]]

Compute the point-edge relative velocity premultiplier matrix

Parameters:
dim: int

Dimension (2 or 3)

alpha: float

Parametric coordinate of the closest point on the edge

Returns:

The relative velocity premultiplier matrix

ipctk.edge_edge_relative_velocity_matrix(dim: int, coords: numpy.ndarray[numpy.float64[2, 1]]) numpy.ndarray[numpy.float64[m, n]]

Compute the edge-edge relative velocity matrix.

Parameters:
dim: int

Dimension (2 or 3)

coords: numpy.ndarray[numpy.float64[2, 1]]

Two parametric coordinates of the closest points on the edges

Returns:

The relative velocity matrix

ipctk.point_triangle_relative_velocity_matrix(dim: int, coords: numpy.ndarray[numpy.float64[2, 1]]) numpy.ndarray[numpy.float64[m, n]]

Compute the point-triangle relative velocity matrix.

Parameters:
dim: int

Dimension (2 or 3)

coords: numpy.ndarray[numpy.float64[2, 1]]

Baricentric coordinates of the closest point on the triangle

Returns:

The relative velocity matrix

Relative Velocity Matrix Jacobians

ipctk.point_point_relative_velocity_matrix_jacobian(dim: int) numpy.ndarray[numpy.float64[m, n]]

Compute the Jacobian of the relative velocity premultiplier matrix

Parameters:
dim: int

Dimension (2 or 3)

Returns:

The Jacobian of the relative velocity premultiplier matrix

ipctk.point_edge_relative_velocity_matrix_jacobian(dim: int, alpha: float) numpy.ndarray[numpy.float64[m, n]]

Compute the Jacobian of the relative velocity premultiplier matrix

Parameters:
dim: int

Dimension (2 or 3)

alpha: float

Parametric coordinate of the closest point on the edge

Returns:

The Jacobian of the relative velocity premultiplier matrix

ipctk.edge_edge_relative_velocity_matrix_jacobian(dim: int, coords: numpy.ndarray[numpy.float64[2, 1]]) numpy.ndarray[numpy.float64[m, n]]

Compute the Jacobian of the edge-edge relative velocity matrix.

Parameters:
dim: int

Dimension (2 or 3)

coords: numpy.ndarray[numpy.float64[2, 1]]

Two parametric coordinates of the closest points on the edges

Returns:

The Jacobian of the relative velocity matrix

ipctk.point_triangle_relative_velocity_matrix_jacobian(dim: int, coords: numpy.ndarray[numpy.float64[2, 1]]) numpy.ndarray[numpy.float64[m, n]]

Compute the Jacobian of the point-triangle relative velocity matrix.

Parameters:
dim: int

Dimension (2 or 3)

coords: numpy.ndarray[numpy.float64[2, 1]]

Baricentric coordinates of the closest point on the triangle

Returns:

The Jacobian of the relative velocity matrix

Closet Points

ipctk.point_edge_closest_point(p: numpy.ndarray[numpy.float64[m, 1]], e0: numpy.ndarray[numpy.float64[m, 1]], e1: numpy.ndarray[numpy.float64[m, 1]]) float

Compute the baricentric coordinate of the closest point on the edge.

Parameters:
p: numpy.ndarray[numpy.float64[m, 1]]

Point

e0: numpy.ndarray[numpy.float64[m, 1]]

First edge point

e1: numpy.ndarray[numpy.float64[m, 1]]

Second edge point

Returns:

barycentric coordinates of the closest point

ipctk.edge_edge_closest_point(ea0: numpy.ndarray[numpy.float64[3, 1]], ea1: numpy.ndarray[numpy.float64[3, 1]], eb0: numpy.ndarray[numpy.float64[3, 1]], eb1: numpy.ndarray[numpy.float64[3, 1]]) numpy.ndarray[numpy.float64[2, 1]]

Compute the barycentric coordinates of the closest points between two edges.

Parameters:
ea0: numpy.ndarray[numpy.float64[3, 1]]

First point of the first edge

ea1: numpy.ndarray[numpy.float64[3, 1]]

Second point of the first edge

eb0: numpy.ndarray[numpy.float64[3, 1]]

First point of the second edge

eb1: numpy.ndarray[numpy.float64[3, 1]]

Second point of the second edge

Returns:

Barycentric coordinates of the closest points

ipctk.point_triangle_closest_point(p: numpy.ndarray[numpy.float64[3, 1]], t0: numpy.ndarray[numpy.float64[3, 1]], t1: numpy.ndarray[numpy.float64[3, 1]], t2: numpy.ndarray[numpy.float64[3, 1]]) numpy.ndarray[numpy.float64[2, 1]]

Compute the barycentric coordinates of the closest point on the triangle.

Parameters:
p: numpy.ndarray[numpy.float64[3, 1]]

Point

t0: numpy.ndarray[numpy.float64[3, 1]]

Triangle’s first vertex

t1: numpy.ndarray[numpy.float64[3, 1]]

Triangle’s second vertex

t2: numpy.ndarray[numpy.float64[3, 1]]

Triangle’s third vertex

Returns:

Barycentric coordinates of the closest point

Closet Points Jacobians

ipctk.point_edge_closest_point_jacobian(p: numpy.ndarray[numpy.float64[m, 1]], e0: numpy.ndarray[numpy.float64[m, 1]], e1: numpy.ndarray[numpy.float64[m, 1]]) numpy.ndarray[numpy.float64[m, 1]]

Compute the Jacobian of the closest point on the edge.

Parameters:
p: numpy.ndarray[numpy.float64[m, 1]]

Point

e0: numpy.ndarray[numpy.float64[m, 1]]

First edge point

e1: numpy.ndarray[numpy.float64[m, 1]]

Second edge point

Returns:

Jacobian of the closest point

ipctk.edge_edge_closest_point_jacobian(ea0: numpy.ndarray[numpy.float64[3, 1]], ea1: numpy.ndarray[numpy.float64[3, 1]], eb0: numpy.ndarray[numpy.float64[3, 1]], eb1: numpy.ndarray[numpy.float64[3, 1]]) numpy.ndarray[numpy.float64[2, 12]]

Compute the Jacobian of the closest points between two edges.

Parameters:
ea0: numpy.ndarray[numpy.float64[3, 1]]

First point of the first edge

ea1: numpy.ndarray[numpy.float64[3, 1]]

Second point of the first edge

eb0: numpy.ndarray[numpy.float64[3, 1]]

First point of the second edge

eb1: numpy.ndarray[numpy.float64[3, 1]]

Second point of the second edge

Returns:

Jacobian of the closest points

ipctk.point_triangle_closest_point_jacobian(p: numpy.ndarray[numpy.float64[3, 1]], t0: numpy.ndarray[numpy.float64[3, 1]], t1: numpy.ndarray[numpy.float64[3, 1]], t2: numpy.ndarray[numpy.float64[3, 1]]) numpy.ndarray[numpy.float64[2, 12]]

Compute the Jacobian of the closest point on the triangle.

Parameters:
p: numpy.ndarray[numpy.float64[3, 1]]

Point

t0: numpy.ndarray[numpy.float64[3, 1]]

Triangle’s first vertex

t1: numpy.ndarray[numpy.float64[3, 1]]

Triangle’s second vertex

t2: numpy.ndarray[numpy.float64[3, 1]]

Triangle’s third vertex

Returns:

Jacobian of the closest point


Last update: Dec 12, 2024