/// <summary>
        /// Поворачивает эту систему координат осью X на точку target.
        /// Точки из списка поворачиваются так, что их координаты в этой
        /// системе координат не меняются.
        /// </summary>
        ///
        /// <param name="target"> Точка в этой системе координат, на которую поворачивается эта.</param>
        /// <param name="points"> Список точек, которые поворачиваются вместе с этой системой координат.</param>
        ///
        /// <exception cref="ArgumentNullException">
        /// Вызывается, если в параметр target передается null.
        /// </exception>
        public void TurnTo(Vector target, List <Vector> points = null)
        {
            if (target == null)
            {
                throw new ArgumentNullException("target mustn't be null");
            }

            UnitVector direction = new UnitVector(target);
            UnitVector axis      = direction * basis.I;
            double     angle     = -Vector.GetAngle(direction, basis.I);

            if (points != null)
            {
                foreach (Vector point in points)
                {
                    point.TurnAxis(axis, angle);
                }
            }

            basis.TurnAxis(axis, angle);
        }
Exemple #2
0
 /// <summary>
 /// i {1; 0; 0}<br/>
 /// j {0; 1; 0}<br/>
 /// k {0; 0; 1}<br/>
 /// </summary>
 public Basis()
 {
     i = UnitVector.UnitVectorX;
     j = UnitVector.UnitVectorY;
     k = UnitVector.UnitVectorZ;
 }
Exemple #3
0
 /// <summary>
 /// Копирует вектора из параметров. Вектора не должны быть компланарны или null.
 /// </summary>
 ///
 /// <param name="i"> Единичный вектор i. Не должен быть равен null.</param>
 /// <param name="j"> Единичный вектор j. Не должен быть равен null.</param>
 /// <param name="k"> Единичный вектор k. Не должен быть равен null.</param>
 ///
 /// <exception cref="ArgumentNullException">
 /// Вызывается, если хотя бы один из параметров null.
 /// </exception>
 /// <exception cref="ArgumentException">
 /// Вызывается, если передаваемые векторы компланарны.
 /// </exception>
 public Basis(UnitVector i, UnitVector j, UnitVector k)
 {
     this.I = new UnitVector(i);
     this.J = new UnitVector(j);
     this.K = new UnitVector(k);
 }
Exemple #4
0
 /// <summary>
 /// Правая система координат по единичным векторам i и j. Эти вектора не должны быть коллинеарными.
 /// </summary>
 ///
 /// <param name="i"> Единичный вектор i. Не должен быть равен null.</param>
 /// <param name="j"> Единичный вектор j. Не должен быть равен null.</param>
 ///
 /// <exception cref="ArgumentNullException">
 /// Вызывается, если хотя бы один из параметров null.
 /// </exception>
 public Basis(UnitVector i, UnitVector j) : this(i, j, i *j)
 {
 }