本文整理汇总了C#中Orbit.getObtAtUT方法的典型用法代码示例。如果您正苦于以下问题:C# Orbit.getObtAtUT方法的具体用法?C# Orbit.getObtAtUT怎么用?C# Orbit.getObtAtUT使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Orbit
的用法示例。
在下文中一共展示了Orbit.getObtAtUT方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: mapPosAtT
private static bool mapPosAtT(Rect maprect, SCANmap map, ref Rect r, Vessel vessel, Orbit o, double dT)
{
double UT = startUT + dT;
if(double.IsNaN(UT)) return false;
try {
if(double.IsNaN(o.getObtAtUT(UT))) return false;
Vector3d pos = o.getPositionAtUT(UT);
double rotation = 0;
if(vessel.mainBody.rotates) {
rotation = (360 * (dT / vessel.mainBody.rotationPeriod)) % 360;
}
double lo = (vessel.mainBody.GetLongitude(pos) - rotation);
double la = (vessel.mainBody.GetLatitude(pos));
double lon = (map.projectLongitude(lo, la) + 180) % 360;
double lat = (map.projectLatitude(lo, la) + 90) % 180;
lat = map.scaleLatitude(lat);
lon = map.scaleLongitude(lon);
if(lat < 0 || lon < 0 || lat > 180 || lon > 360) return false;
lon = lon * maprect.width / 360f;
lat = maprect.height - lat * maprect.height / 180f;
r.x = maprect.x + (float)lon;
r.y = maprect.y + (float)lat;
return true;
} catch(Exception) {
return false;
}
}
示例2: GetPositionAtT
private static bool GetPositionAtT(Vessel thatVessel, Orbit thatOrbit, double initial, double timePoint, out Vector2d coordinates, out bool collision)
{
coordinates = Vector2d.zero;
collision = false;
if (double.IsNaN(thatOrbit.getObtAtUT(initial + timePoint)))
return false;
double rotOffset = 0;
if (thatVessel.mainBody.rotates) {
rotOffset = (360 * ((timePoint - initial) / thatVessel.mainBody.rotationPeriod)) % 360;
}
Vector3d pos = thatOrbit.getPositionAtUT(timePoint);
if (thatOrbit.Radius(timePoint) < thatVessel.mainBody.Radius + thatVessel.mainBody.getElevation(pos)) {
collision = true;
return false;
}
coordinates = new Vector2d(thatVessel.mainBody.GetLongitude(pos) - rotOffset, thatVessel.mainBody.GetLatitude(pos));
return true;
}