#### Description:

This function resolves a vector into two perpendicular components. The vector from point 1 to point 2 is used as the basis vector. The vector from point 1 to point 3 is resolved into components parallel and perpendicular to this basis vector. The lengths of the two components are returned, together with the position of closest aproach of the basis vector to point 3.

#### Synopsis

void astResolve( AstFrame ∗this, const double point1[], const double point2[], const double point3[], double point4[], double ∗d1, double ∗d2 );

#### Parameters:

##### this

Pointer to the Frame.

##### point1

An array of double, with one element for each Frame axis (Naxes attribute). This marks the start of the basis vector, and of the vector to be resolved.

##### point2

An array of double, with one element for each Frame axis (Naxes attribute). This marks the end of the basis vector.

##### point3

An array of double, with one element for each Frame axis (Naxes attribute). This marks the end of the vector to be resolved.

##### point4

An array of double, with one element for each Frame axis in which the coordinates of the point of closest approach of the basis vector to point 3 will be returned.

##### d1

The address of a location at which to return the distance from point 1 to point 4 (that is, the length of the component parallel to the basis vector). Positive values are in the same sense as movement from point 1 to point 2.

##### d2

The address of a location at which to return the distance from point 4 to point 3 (that is, the length of the component perpendicular to the basis vector). The value is always positive.

#### Notes:

- Each vector used in this function is the path of shortest distance between two points, as defined by the astDistance function.

- This function will return `"` bad`"` coordinate values (AST__BAD) if any of the input coordinates has this value, or if the required output values are undefined.

Copyright (C) 2021 East Asian Observatory