Пример #1
0
 public void ExecuteMatrix(Matrix matrix)
 {
     _v1 = matrix * _v1;
     _v2 = matrix * _v2;
     _v3 = matrix * _v3;
     _v4 = matrix * _v4;
 }
Пример #2
0
 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;
 }
Пример #3
0
 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);
 }
Пример #4
0
 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}
     });
 }
Пример #5
0
 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);
 }
Пример #6
0
        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();
        }
Пример #7
0
 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;
 }
Пример #8
0
 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;
 }
Пример #9
0
 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();
 }
Пример #10
0
 public void Can_get_magnitudes()
 {
     var v = new Vector( new PointD( 0, 0 ), new PointD( 3, 4 ) );
     Assert.That( v.Magnitude, Is.EqualTo( 5 ) );
 }
Пример #11
0
 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 ) );
 }
Пример #12
0
        private void Translate(Vector t)
        {
            Matrix matrix = mfactory.Translate(t);

            square.ExecuteMatrix(matrix);

            panel1.Invalidate();
        }