create static method
Implementation
static Coriolis? create({
double? latitude,
double? azimuth,
required double muzzleVelocityFps,
}) {
if (latitude == null) return null;
final latRad = latitude * (math.pi / 180.0);
final sinLat = math.sin(latRad);
final cosLat = math.cos(latRad);
if (azimuth == null) {
return Coriolis._(
sinLat: sinLat,
cosLat: cosLat,
muzzleVelocityFps: muzzleVelocityFps,
flatFireOnly: true,
);
}
final azRad = azimuth * (math.pi / 180.0);
final sAz = math.sin(azRad);
final cAz = math.cos(azRad);
return Coriolis._(
sinLat: sinLat,
cosLat: cosLat,
muzzleVelocityFps: muzzleVelocityFps,
sinAz: sAz,
cosAz: cAz,
rangeEast: sAz,
rangeNorth: cAz,
crossEast: cAz,
crossNorth: -sAz,
flatFireOnly: false,
);
}