public bool GlobalToWorld(Coordinate converter, Vec3D position) { switch (_mapType) { case MapType.UNKNOWN: { return(false); } case MapType.UTM: UTMPos utmpos = new UTMPos(_metaData.Zone(), _metaData.North(), -(position.z + _origin.z), position.x + _origin.x, position.y + _origin.y); converter.SetUTMPos(utmpos); break; case MapType.GEOCENTRIC: CartPos cartpos = new CartPos(position.x + _origin.x, position.y + _origin.y, position.z + _origin.z); converter.SetCartPos(cartpos); break; } return(true); }
/// <summary> /// Returns a local orientation matrix for a specific CartPos position with east,north and up base vectors /// </summary> /// <param name="cartpos"></param> /// <param name="ellipsoid"></param> /// <returns>Matrix of [east][north][up] vectors</returns> public Matrix3 GetOrientationMatrix(CartPos cartpos, Ellipsoid ellipsoid = Ellipsoid.WGS84) { Matrix3 mat = new Matrix3(); Coordinate_getOrientationMatrix_CartPos(GetNativeReference(), ref cartpos, ellipsoid, ref mat); return(mat); }
public bool GlobalToWorld(Vec3D global_position, out CartPos result) { Coordinate converter = new Coordinate(); if (!GlobalToWorld(converter, global_position)) { result = null; return(false); } return(converter.GetCartPos(out result)); }
public bool LocalToWorld(MapPos pos, out CartPos result) { Vec3D position = pos.position; RoiNode roi = pos.node as RoiNode; if (roi != null && roi.IsValid()) // Convert to a global position { position += roi.Position; } return(GlobalToWorld(position, out result)); }
public bool SetPosition(MapPos result, CartPos pos, GroundClampType groundClamp = GroundClampType.NONE, ClampFlags flags = ClampFlags.DEFAULT) { Coordinate converter = new Coordinate(); converter.SetCartPos(pos); if (!WorldToMap(converter, ref result.position, ref result.local_orientation)) { return(false); } // Check possibly local 3D under a roiNode MapToRoi(result); return(UpdatePosition(result, groundClamp, flags)); }
public bool GetCartPos(MapPos pos, out CartPos result) { Coordinate converter = new Coordinate(); Vec3D position = pos.position; result = new CartPos(); // Check possibly local 3D under a roiNode RoiNode roi = pos.node as RoiNode; if (roi != null && roi.IsValid()) { position += roi.Position; } switch (_mapType) { case MapType.UNKNOWN: { return(false); } case MapType.UTM: UTMPos utmpos = new UTMPos(_utmZone, _north, -(position.z + _origin.z), position.x + _origin.x, position.y + _origin.y); converter.SetUTMPos(utmpos); break; case MapType.GEOCENTRIC: CartPos cartpos = new CartPos(position.x + _origin.x, position.y + _origin.y, position.z + _origin.z); converter.SetCartPos(cartpos); break; } return(converter.GetCartPos(out result)); }
public bool GetCartPos(out CartPos pos, Datum datum = Datum.WGS84) { pos = new CartPos(); return(Coordinate_getCartPos(GetNativeReference(), ref pos, datum)); }
public void SetCartPos(CartPos pos, Datum datum = Datum.WGS84) { Coordinate_setCartPos(GetNativeReference(), ref pos, datum); }
private static extern void Coordinate_getOrientationMatrix_CartPos(IntPtr nativeReference, ref CartPos pos, Ellipsoid ellipsoid, ref Matrix3 matrix);
private static extern bool Coordinate_getCartPos(IntPtr nativeReference, ref CartPos pos, Datum datum);
private static extern bool CartPos_create_pos(IntPtr native_reference, [Out] out CartPos pos);
private static extern IntPtr CartPos_create_dynamic(ref CartPos pos);
private static extern IntPtr CartPos_asString(ref CartPos pos);
private static extern void Coordinate_setCartPos(IntPtr nativeReference, CartPos pos, Datum datum);