plucker_line Derived Type

type, public :: plucker_line

Defines a line in 3D Euclidean space using Plücker coordinates.


Contents


Components

Type Visibility Attributes Name Initial
real(kind=real64), public :: v(6)

The 6-element array containing the Plücker coordinates. The first 3 elements contain the unit vector and the last 3 elements contain the moment vector.


Constructor

public interface plucker_line

  • private pure function pl_from_2pts(pt1, pt2) result(rst)

    Constructs a new plucker_line from two points.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(in) :: pt1(3)

    The first point.

    real(kind=real64), intent(in) :: pt2(3)

    The second point.

    Return Value type(plucker_line)

    The resulting line.

  • private pure function pl_from_line(ln) result(rst)

    Constructs a new plucker_line from a line object.

    Arguments

    Type IntentOptional Attributes Name
    class(line), intent(in) :: ln

    The line.

    Return Value type(plucker_line)

    The equivalent plucker_line.

  • private pure function pl_from_2_planes(p1, p2) result(rst)

    Constructs a new plucker_line from the intersection of two planes.

    Arguments

    Type IntentOptional Attributes Name
    class(plane), intent(in) :: p1

    The first plane.

    class(plane), intent(in) :: p2

    The second plane.

    Return Value type(plucker_line)

    The resulting line. NaN's are returned in the event that the two planes are parallel.

  • private pure function pl_from_array(x, nrm) result(rst)

    Constructs a new plucker_line from the supplied array.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(in) :: x(6)

    A 6-element array containing the Plücker coordinates.

    logical, intent(in), optional :: nrm

    An optional input that specifies if the first three coordinates (the unit vector) should be normalized (true), or left as-is (false). The default is true such that the vector is normalized.

    Return Value type(plucker_line)

    The resulting line.


Type-Bound Procedures

procedure, public :: m => pl_m

  • private pure function pl_m(this) result(rst)

    The line moment vector.

    Arguments

    Type IntentOptional Attributes Name
    class(plucker_line), intent(in) :: this

    The plucker_line object.

    Return Value real(kind=real64), (3)

    The moment vector.

procedure, public :: to_array => pl_to_array

  • private pure function pl_to_array(this) result(rst)

    Returns the plucker_line as a 6-element array of the form [u, m].

    Arguments

    Type IntentOptional Attributes Name
    class(plucker_line), intent(in) :: this

    The plucker_line object.

    Return Value real(kind=real64), (6)

    The resulting array.

procedure, public :: u => pl_u

  • private pure function pl_u(this) result(rst)

    The unit vector representing the orientation of the line.

    Arguments

    Type IntentOptional Attributes Name
    class(plucker_line), intent(in) :: this

    The plucker_line object.

    Return Value real(kind=real64), (3)

    The unit vector.