public void ExecuteMatrix(Matrix matrix) { _v1 = matrix * _v1; _v2 = matrix * _v2; _v3 = matrix * _v3; _v4 = matrix * _v4; }
public static Vector operator *(Matrix lhs, Vector rhs) { Vector result = new Vector(); lhs.ForEach(delegate(int x, int y, double value) { result[y] += rhs[x] * value; }); return result; }
public Square(int size) { _size = size; _v1 = new Vector(-size / 2, -size / 2, 0, 1); _v2 = new Vector(size / 2, -size / 2, 0, 1); _v3 = new Vector(size / 2, size / 2, 0, 1); _v4 = new Vector(-size / 2, size / 2, 0, 1); }
public Matrix Translate(Vector t) { return new Matrix(new double[,]{ {1, 0, 0, t.x}, {0, 1, 0, t.y}, {0, 0, 1, t.z}, {0, 0, 0, t.w} }); }
public static double DistanceBetweenPointAndSegment( PointD point, PointD segmentStart, PointD segmentEnd ) { Vector AB = new Vector( segmentStart, segmentEnd ); Vector BA = new Vector( segmentEnd, segmentStart ); Vector AC = new Vector( segmentStart, point ); Vector BC = new Vector( segmentEnd, point ); if( AB * BC > 0 ) return BC.Magnitude; if( BA * AC > 0 ) return AC.Magnitude; return Math.Abs((AB ^ BC) / AB.Magnitude); }
static void Main(string[] args) { Matrix x = new Matrix(new double[,]{ {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16} }); Console.WriteLine(x.ToString()); Console.WriteLine(""); Matrix y = new Matrix(new double[,]{ {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16} }); Console.WriteLine("add and subtrackt"); Matrix z = x + y; Console.WriteLine(z); z = x - y; Console.WriteLine(z); Console.WriteLine("Multiplication"); z = x * 2; Console.WriteLine(z); z = 2 * y; Console.WriteLine(z); z = x * y; Console.WriteLine(z); Console.WriteLine("Vectors"); Console.WriteLine("add and subtrackt"); Vector v = new Vector(1,2,3,1); Console.WriteLine(v+v); Console.WriteLine(v-v); Console.WriteLine(v*v); Console.WriteLine("matrix times vector"); Console.WriteLine(x*v); Console.ReadKey(); }
public static Vector operator -(Vector lhs, Vector rhs) { Vector result = new Vector(); result.x = lhs.x - rhs.x; result.y = lhs.y - rhs.y; result.z = lhs.z - rhs.z; result.w = lhs.w - rhs.w; return result; }
public static Vector operator +(Vector lhs, Vector rhs) { Vector result = new Vector(); result.x = lhs.x + rhs.x; result.y = lhs.y + rhs.y; result.z = lhs.z + rhs.z; result.w = lhs.w + rhs.w; return result; }
public static double operator *(Vector lhs, Vector rhs) { Vector result = new Vector(); result.x = lhs.x * rhs.x; result.y = lhs.y * rhs.y; result.z = lhs.z * rhs.z; result.w = lhs.w * rhs.w; return result.sum(); }
public void Can_get_magnitudes() { var v = new Vector( new PointD( 0, 0 ), new PointD( 3, 4 ) ); Assert.That( v.Magnitude, Is.EqualTo( 5 ) ); }
public void Can_compute_dot_product() { var v1 = new Vector( new PointD( 0, 0 ), new PointD( 3, 4 ) ); var v2 = new Vector( new PointD( 0, 0 ), new PointD( 5, 6 ) ); Assert.That( v1*v2, Is.EqualTo( 39 ) ); }
private void Translate(Vector t) { Matrix matrix = mfactory.Translate(t); square.ExecuteMatrix(matrix); panel1.Invalidate(); }