Ellipsoid Class

  • An Ellipsoid is a (complete) unit sphere with an arbitrary (possibly skewed) Transform to 3d.
  • The (unit) sphere parameterization with respect to longitude theta and latitude phi is
    • u = cos(theta) * cos (phi)
    • v = sin(theta) * cos(phi)
    • w = sin(phi)
      • The sphere (u,v,w) multiply the x,y,z columns of the Ellipsoid transform.

Methods

Name Description
anglePairToGreatArc(angleA: LongitudeLatitudeNumber, angleB: LongitudeLatitudeNumber, result?: Arc3d): Arc3d | undefined See radiansPairToGreatArc, which does this computation with positions from angleA and angleB directly as radians  
clone(): Ellipsoid return a clone with same coordinates  
cloneTransformed(transform: Transform): Ellipsoid | undefined return a cloned and transformed ellipsoid.  
constantLatitudeArc(longitudeSweep: AngleSweep, latitude: Angle, result?: Arc3d): Arc3d | undefined Return an arc (circular or elliptical) at constant longitude  
constantLongitudeArc(longitude: Angle, latitudeSweep: AngleSweep, result?: Arc3d): Arc3d | undefined Return an arc (circular or elliptical) at constant longitude  
createPlaneSection(plane: Plane3dByOriginAndUnitNormal): Arc3d | undefined Construct an arc for the section cut of a plane with the ellipsoid.  
createSectionArcPointPointVectorInPlane(pointAnglesA: LongitudeLatitudeNumber, pointAnglesB: LongitudeLatitudeNumber, inPlaneVector: Vector3d, result?: Arc3d): Arc3d | undefined Construct an arc which
start at pointA (defined by its angle position)
ends at pointB (defined by its angle position)
* contains the 3rd vector as an in-plane point.
 
intersectRay(ray: Ray3d, rayFractions: number[] | undefined, xyz: Point3d[] | undefined, thetaPhiRadians: Point2d[] | undefined): number Compute intersections with a ray.  
isAlmostEqual(other: Ellipsoid): boolean test equality of the 4 points  
otherEllipsoidAnglesToThisEllipsoidAngles(otherEllipsoid: Ellipsoid | undefined, otherAngles: LongitudeLatitudeNumber, result?: LongitudeLatitudeNumber): LongitudeLatitudeNumber | undefined Evaluate the surface normal on other ellipsoid at given angles
If other is undefined, default to unit sphere.
 
patchRangeStartEndRadians(theta0Radians: number, theta1Radians: number, phi0Radians: number, phi1Radians: number, result?: Range3d): Range3d Return the range of a uv-aligned patch of the sphere.  
projectPointToSurface(spacePoint: Point3d): LongitudeLatitudeNumber | undefined Find the closest point of the (patch of the) ellipsoid.  
radiansPairToEquatorialEllipsoid(thetaARadians: number, phiARadians: number, thetaBRadians: number, phiBRadians: number, result?: Ellipsoid): Ellipsoid | undefined For a given pair of points on an ellipsoid, construct another ellipsoid
touches the same xyz points in space
* has transformation modified so that the original two points are on the equator.
 
radiansPairToGreatArc(thetaARadians: number, phiARadians: number, thetaBRadians: number, phiBRadians: number, result?: Arc3d): Arc3d | undefined For a given pair of points on an ellipsoid, construct an arc (possibly elliptical) which
passes through both points
is completely within the ellipsoid surface
has its centerEvaluate a point on the ellipsoid at angles give in radians.
 
radiansToFrenetFrame(thetaRadians: number, phiRadians: number, result?: Transform): Transform | undefined Evaluate a point and rigid local coordinate frame the ellipsoid at angles give in radians.  
radiansToPoint(thetaRadians: number, phiRadians: number, result?: Point3d): Point3d Evaluate a point on the ellipsoid at angles give in radians.  
radiansToPointAnd2Derivatives(thetaRadians: number, phiRadians: number, point: Point3d, d1Theta: Vector3d, d1Phi: Vector3d, d2ThetaTheta: Vector3d, d2PhiPhi: Vector3d, d2ThetaPhi: Vector3d): void Evaluate a point and derivatives wrt to theta, phi, thetaTheta, phiPhi, and thetaPhi.  
radiansToPointAndDerivatives(thetaRadians: number, phiRadians: number, applyCosPhiFactor: boolean = true, result?: Plane3dByOriginAndVectors): Plane3dByOriginAndVectors Evaluate a point and derivatives with respect to angle on the ellipsoid at angles give in radians.  
radiansToUnitNormalRay(thetaRadians: number, phiRadians: number, result?: Ray3d): Ray3d | undefined Evaluate a point and unit normal at given angles.  
sectionArcWithIntermediateNormal(angleA: LongitudeLatitudeNumber, intermediateNormalFraction: number, angleB: LongitudeLatitudeNumber): Arc3d * create a section arc with and end at positions A and B, and in plane with the normal at a fractional
interpolation between.
 
surfaceNormalToAngles(normal: Vector3d, result?: LongitudeLatitudeNumber): LongitudeLatitudeNumber Find the (unique) extreme point for a given true surface perpendicular vector (outward)  
surfaceNormalToRadians(normal: Vector3d, result?: Point2d): Point2d Find the (unique) extreme point for a given true surface perpendicular vector (outward) Deprecated
tryTransformInPlace(transform: Transform): boolean Apply the transform to each point  
create(matrixOrTransform?: Transform | Matrix3d): Ellipsoid Static Create with a clone (not capture) with given transform.  
createCenterMatrixRadii(center: Point3d, axes: Matrix3d, radiusX: number, radiusY: number, radiusZ: number): Ellipsoid Static Create a transform with given center and directions, applying the radii as multipliers for the respective columns of the axes.  
radiansToUnitNormalRay(ellipsoid: Ellipsoid | undefined, thetaRadians: number, phiRadians: number, result?: Ray3d): Ray3d | undefined Static * if ellipsoid is given, return its surface point and unit normal as a Ray3d.  

Properties

Name Type Description
transformRef Accessor ReadOnly Transform    

Defined in

Last Updated: 08 January, 2020