Мы подготовили модель орбитального движения и проверили ее на примере спутника Земли, получив хорошую сходимость с теоретическим расчетом. Теперь мы можем оценивать траектории ИСЗ вокруг Земли по самым разным орбитам. Но у нас нет инструментов для оценки видимости спутника относительно наблюдателя. Воспользуемся основами векторной алгебры и научимся определять расстояния и углы между произвольными линиями, плоскостями и точками. Создадим еще один модуль - Vect3D и уже опробованными нами приемом унаследуем от класса Array класс Vect3D. Приступим к добавлению методов, часть из которых будет проста и прозрачна - сложение и вычитание двух координат, умножение и деление вектора на скаляр, получение абсолютной величины вектора, приведение вектора к единичному. Две следующие функции немного сложнее. Именно они нужны для получения углов - это скалярное (dotProduct) и векторное (crossProduct) произведение. Первое нужно нам для абсолютной величины угла между векторами, второе - для извлечения зн