public static BlhPoint Wgs72ToWgs84(BlhPoint pWgs72) { BlhPoint delta = GetDeltas(pWgs72.ɸ); BlhPoint res = new BlhPoint(); res.Assign(pWgs72); res.Id = pWgs72.Id; res.B = pWgs72.B + delta.B; res.L = pWgs72.L + delta.L; res.H = pWgs72.H + delta.H; return res; }
//Δφλ private static BlhPoint GetDeltas(double ɸ) { double Cosɸ = Math.Cos(ɸ); double Sinɸ = Math.Sin(ɸ); double Sin2ɸ = Math.Sin(2 * ɸ); BlhPoint deltas = new BlhPoint(); deltas.ɸ = (4.5 * Cosɸ) / (a) + (Δf * Sin2ɸ); deltas.λ = Δλ; deltas.H = 4.5 * Sinɸ + a * Δf * Sinɸ * Sinɸ - Δa + Δr; return deltas; }
public NehPoint GetNE(string Id, string B, string L, string H) { BlhPoint blhPoint = new BlhPoint(); blhPoint.Id = Id; blhPoint.B = Angle.FromString(B, AngleUnits.Degrees); blhPoint.L = Angle.FromString(B, AngleUnits.Degrees); blhPoint.H = H.ToDouble(); return GetNE(blhPoint); }
public override PointBase FromWgs84(BlhPoint p) { double n, e; GetNE(p.B, p.L, out n, out e); var res = new NehPoint(); res.Assign(p); res.N = n; res.E = e; return res; }
public override BlhPoint ToWgs84(PointBase p) { double b, l; GetBL(p.Coord1.Value, p.Coord2.Value, out b, out l); var res = new BlhPoint(); res.Assign(p); res.B = b; res.L = l; return res; }
public NehPoint GetNE(BlhPoint pnt) { double n; double e; double b = pnt.B; double l = pnt.L; GetNE(b, l, out n, out e); NehPoint res = new NehPoint(); res.Id = pnt.Id; res.N = n; res.E = e; res.H = pnt.H; return res; }
public BlhPoint GetBL(NehPoint pnt) { double n = pnt.N; double e = pnt.E; double b; double l; GetBL(n, e, out b, out l); BlhPoint res = new BlhPoint(); res.Id = pnt.Id; res.B = b; res.L = l; res.H = pnt.H; return res; }
public BlhPoint GetBlh(XyzPoint p) { BlhPoint res = new BlhPoint(); double rp = Calc.Dist(p.X, p.Y); res.Id = p.Id; double B0 = EstimateB(p.Z, rp, 0.0); //Przybliżona wartość B res.B = IterateB(p.Z, rp, B0); // B obliczone iteracyjnie - dokładne res.L = Math.Acos(p.X / rp); double sinB = Math.Sin(res.B); double rn = a / Math.Sqrt(1 - e2 * sinB * sinB); double DeltaR = rp - rn * Math.Cos(res.B); double DeltaZ = p.Z - rn * Math.Sin(res.B) + Delta(res.B); res.H = Calc.Dist(DeltaR, DeltaZ); if ((DeltaR < 0) || (DeltaZ < 0)) res.H = -res.H; return res; }
public XyzPoint GetXyz(BlhPoint p) { XyzPoint res = new XyzPoint(); double rn = Rn(p.B); double rp = (rn + p.H) * Math.Cos(p.B); res.Id = p.Id; res.X = rp * Math.Cos(p.L); res.Y = rp * Math.Sin(p.L); res.Z = (rn * (1 - e2) + p.H) * Math.Sin(p.B); return res; }
public static BlhPoint Wgs84ToWgs72(BlhPoint pWgs84) { BlhPoint delta = GetDeltas(pWgs84.ɸ); BlhPoint res = new BlhPoint(); res.Assign(pWgs84); res.Id = pWgs84.Id; res.B = pWgs84.B - delta.B; res.L = pWgs84.L - delta.L; res.H = pWgs84.H - delta.H; return res; }
public override PointBase FromWgs84(BlhPoint p) { return Wgs72ToWgs84(p); }
public override PointBase FromWgs84(BlhPoint p) { var res = new BlhPoint(); res.Assign(p); return res; }
public override BlhPoint ToWgs84(PointBase p) { var res = new BlhPoint(); res.Assign(p); return res; }
public abstract PointBase FromWgs84(BlhPoint p);