Class DistanceFromEllipsoidSurfaceOp

All Implemented Interfaces:
Runnable, net.imagej.ops.Environmental, net.imagej.ops.Initializable, net.imagej.ops.Op, net.imagej.ops.special.BinaryInput<Ellipsoid,org.joml.Vector3dc>, net.imagej.ops.special.BinaryOp<Ellipsoid,org.joml.Vector3dc,net.imglib2.type.numeric.real.DoubleType>, net.imagej.ops.special.function.BinaryFunctionOp<Ellipsoid,org.joml.Vector3dc,net.imglib2.type.numeric.real.DoubleType>, net.imagej.ops.special.function.NullaryFunctionOp<net.imglib2.type.numeric.real.DoubleType>, net.imagej.ops.special.function.UnaryFunctionOp<Ellipsoid,net.imglib2.type.numeric.real.DoubleType>, net.imagej.ops.special.NullaryOp<net.imglib2.type.numeric.real.DoubleType>, net.imagej.ops.special.Output<net.imglib2.type.numeric.real.DoubleType>, net.imagej.ops.special.SpecialOp, net.imagej.ops.special.UnaryInput<Ellipsoid>, net.imagej.ops.special.UnaryOp<Ellipsoid,net.imglib2.type.numeric.real.DoubleType>, net.imagej.ops.Threadable, org.scijava.command.Command, org.scijava.Initializable, org.scijava.plugin.SciJavaPlugin

An Op that calculates the distance between a point and an ellipsoid surface

Uses a hard-coded bivariate Newton-Raphson solver to efficiently find values of theta and phi that solve the orthogonality condition F(theta,phi)=0 for the vector between the surface and the point. Then converts into Cartesian coordinates to calculate the distance. Derivation of required terms courtesy of Robert Nürnberg, Imperial College London (See https://wwwf.imperial.ac.uk/~rn/distance2ellipse.pdf). Works for three-dimensional case only.

Author:
Alessandro Felder