## Interface SuperPosition

• All Known Implementing Classes:
`SuperPositionAbstract`, `SuperPositionQCP`, `SuperPositionQuat`, `SuperPositionSVD`

`public interface SuperPosition`
The SuperPosition interface defines and documents the required methods for any superpostion algorithm implementation, so that the input and expected output are uniform.
Since:
5.0.0
Author:
Aleix Lafita
• ### Method Summary

All Methods
Modifier and Type Method Description
`double` ```getRmsd​(javax.vecmath.Point3d[] x, javax.vecmath.Point3d[] y)```
Calculate the RMSD between two arrays of equivalent points that are not superposed.
`javax.vecmath.Matrix4d` ```superpose​(javax.vecmath.Point3d[] fixed, javax.vecmath.Point3d[] moved)```
Obtain the superposition matrix that minimizes the RMSD between two arrays of equivalent points.
`javax.vecmath.Matrix4d` ```superposeAndTransform​(javax.vecmath.Point3d[] fixed, javax.vecmath.Point3d[] moved)```
Transform an array of points so that the coordinates of its points minimize the RMSD to the other array of equivalent points, and return the transformation matrix applied.
• ### Method Detail

• #### superpose

```javax.vecmath.Matrix4d superpose​(javax.vecmath.Point3d[] fixed,
javax.vecmath.Point3d[] moved)```
Obtain the superposition matrix that minimizes the RMSD between two arrays of equivalent points.

The two point arrays have to be of the same length and the order of points have to be the same, so that a specific position in the one array is equivalent to the same position in the other array.

Parameters:
`fixed` - point array as reference, onto which the other point array is superposed. Original coordinates will not be modified.
`moved` - point array to which the resulting transformation matrix is applied. Original coordinates will not be modified.
Returns:
transformation matrix as a Matrix4d to superpose moved onto fixed point arrays
• #### superposeAndTransform

```javax.vecmath.Matrix4d superposeAndTransform​(javax.vecmath.Point3d[] fixed,
javax.vecmath.Point3d[] moved)```
Transform an array of points so that the coordinates of its points minimize the RMSD to the other array of equivalent points, and return the transformation matrix applied.

The two point arrays have to be of the same length and the order of points have to be the same, so that a specific position in the one array is equivalent to the same position in the other array.

Parameters:
`fixed` - point array as reference, onto which the other point array is superposed. Original coordinates will not be modified.
`moved` - point array to which the resulting transformation matrix is applied. Original coordinates will be transformed.
Returns:
transformation matrix as a Matrix4d to superpose moved onto fixed point arrays
• #### getRmsd

```double getRmsd​(javax.vecmath.Point3d[] x,
javax.vecmath.Point3d[] y)```
Calculate the RMSD between two arrays of equivalent points that are not superposed.

This is equivalent to first superposing the point arrays with `superposeAndTransform(Point3d[], Point3d[])` and then calculating the RMSD of the superposed point arrays with `CalcPoint.rmsd(Point3d[], Point3d[])`, but it will be faster when the transformation matrix is not needed.

The two point arrays have to be of the same length and the order of points have to be the same, so that a specific position in the one array is equivalent to the same position in the other array.

Parameters:
`x` - an array of points. Original coordinates will not be modified.
`y` - an array of points. Original coordinates will not be modified.
Returns:
the minimum RMSD between the equivalent point arrays (after superposition)