public static Matrix3d GetMapMatrix(Coordinates center, double fieldWidth, double fieldHeight, double rotation) { double offsetX = 0; double offsetY = 0; offsetX = -(((center.Lng + 180 - (fieldWidth / 2)) / 360)); offsetY = -((1 - ((center.Lat + 90 + (fieldHeight / 2)) / 180))); var mat = new Matrix2d(); double scaleX = 0; double scaleY = 0; scaleX = 360 / fieldWidth; scaleY = 180 / fieldHeight; mat = mat * Matrix2d.Translation(offsetX, offsetY); mat = mat * Matrix2d.Scaling(scaleX, scaleY); if (rotation != 0) { mat = mat * Matrix2d.Translation(-.5, -.5); mat = mat * Matrix2d.Rotation(rotation); mat = mat * Matrix2d.Translation(.5, .5); } return FromMatrix2d(mat); }
public static Matrix2d Translation(double x, double y) { var mat = new Matrix2d {M31 = x, M32 = y}; return mat; }
public static Matrix3d FromMatrix2d(Matrix2d mat) { var mat3d = CreateIdentity(); mat3d.M11 = mat.M11; mat3d.M12 = mat.M12; mat3d.M13 = mat.M13; mat3d.M21 = mat.M21; mat3d.M22 = mat.M22; mat3d.M23 = mat.M23; mat3d.M31 = mat.M31; mat3d.M32 = mat.M32; mat3d.M33 = mat.M33; mat3d._isNotKnownToBeIdentity = true; return mat3d; }
public static Matrix2d Scaling(double x, double y) { var mat = new Matrix2d {M11 = x, M22 = y}; return mat; }
public static Matrix2d Rotation(double angle) { var mat = new Matrix2d { M11 = Math.Cos(angle), M21 = -Math.Sin(angle), M12 = Math.Sin(angle), M22 = Math.Cos(angle) }; return mat; }
public static Matrix2d Translation(double x, double y) { Matrix2d mat = new Matrix2d(); mat.M31 = x; mat.M32 = y; return mat; }
public static Matrix2d Scaling(double x, double y) { Matrix2d mat = new Matrix2d(); mat.M11 = x; mat.M22 = y; return mat; }
public static Matrix2d Rotation(double angle) { Matrix2d mat = new Matrix2d(); mat.M11 = Math.Cos(angle); mat.M21 = -Math.Sin(angle); mat.M12 = Math.Sin(angle); mat.M22 = Math.Cos(angle); return mat; }