コード例 #1
0
        // Норма вектора
        public TVector GetNorm()
        {
            TVector Result = new TVector(GetLength());

            for (int i = 0; i < GetLength(); i++)
            {
                Result[i] = this[i] / Abs();
            }
            return(Result);
        }
コード例 #2
0
        // Умножение на число
        public TVector Mult(double a)
        {
            double[] result = new double[Vector.Length];
            for (int i = 0; i < Vector.Length; i++)
            {
                result[i] = a * Vector[i];
            }
            TVector ResultVector = new TVector(result);

            return(ResultVector);
        }
コード例 #3
0
        // Скалярное произведение
        public double MultScalar(TVector Vector2)
        {
            double result = 0;

            if (Vector.Length == Vector2.Vector.Length)
            {
                for (int i = 0; i < Vector.Length; i++)
                {
                    result = result + Vector[i] * Vector2.Vector[i];
                }
            }
            return(result);
        }
コード例 #4
0
        // Умножение на вектор (Векторное произв.)
        public TVector Mult(TVector Vector2)
        {
            double[] result = new double[Vector.Length];
            if (Vector.Length == 3 & Vector2.Vector.Length == 3)
            {
                result[0] = Vector[1] * Vector2.Vector[2] - Vector[2] * Vector2.Vector[1];
                result[1] = Vector[2] * Vector2.Vector[0] - Vector[0] * Vector2.Vector[2];
                result[2] = Vector[0] * Vector2.Vector[1] - Vector[1] * Vector2.Vector[0];
            }
            TVector ResultVector = new TVector(result);

            return(ResultVector);
        }
コード例 #5
0
        // Поворот с помощью кватерниона
        public TVector RotateByQuaternion(TQuaternion Q)
        {
            TVector     Result = new TVector(Vector);
            TQuaternion ResultQ;
            TQuaternion vector = new TQuaternion(0, this);

            ResultQ = Q.Mult(vector);
            ResultQ = ResultQ.Mult(Q.Conjugate());
            for (int i = 1; i < 4; i++)
            {
                Result.Vector[i - 1] = ResultQ.Vec[i];
            }
            return(Result);
        }
コード例 #6
0
        // Сумма векторов
        public TVector Sum(TVector Vector2)
        {
            TVector ResultVector;

            double[] result = new double[Vector.Length];
            if (result.Length == Vector2.GetLength())
            {
                for (int i = 0; i < result.Length; i++)
                {
                    result[i] = Vector[i] + Vector2.Vector[i];
                }
            }
            ResultVector = new TVector(result);
            return(ResultVector);
        }
コード例 #7
0
        // Поворот на угол вокруг оси (через кватернионы)
        public TVector RotateByAngleOnAxis(double phi, TVector V)
        {
            TQuaternion Q = new TQuaternion(phi, V);

            Q = Q.Normalization();
            TQuaternion ThisVecQ = new TQuaternion(0, Vector[0], Vector[1], Vector[2]);
            TQuaternion ResultQ  = Q.Mult(ThisVecQ);

            ResultQ = ResultQ.Mult(Q.Conjugate());
            TVector Result = new TVector(Vector);

            for (int i = 1; i < 4; i++)
            {
                Result.Vector[i - 1] = ResultQ.Vec[i];
            }
            return(Result);
        }
コード例 #8
0
ファイル: TMatrix.cs プロジェクト: MikhailPr/Modules
        // Умножение на вектор
        public TVector Mult(TVector B)
        {
            TVector ResultVector;

            double[] result = new double[B.Vector.GetLength(0)];
            if (matrix.GetLength(0) == B.Vector.GetLength(0))
            {
                for (int i = 0; i < matrix.GetLength(0); i++)
                {
                    for (int k = 0; k < matrix.GetLength(0); k++)
                    {
                        result[i] = result[i] + matrix[i, k] * B.Vector[k];
                    }
                }
            }
            ResultVector = new TVector(result);
            return(ResultVector);
        }
コード例 #9
0
ファイル: TMatrix.cs プロジェクト: MikhailPr/Modules
        // Дальше перегрузка операторов

        public static TVector operator *(TMatrix a, TVector b)
        {
            TVector Result = a.Mult(b);

            return(Result);
        }