Преобразование градусов/минут/секунд в углы и обратно в Excel
Office 365 ProPlus переименован в Майкрософт 365 корпоративные приложения. Для получения дополнительной информации об этом изменении прочитайте этот блог.
Аннотация
Угловые измерения обычно выражаются в градусах, минутах и секундах (DMS). 1 градус равен 60 минутам, а одна минута — 60 секунд. Чтобы упростить некоторые математические вычисления, может потребоваться выражать угловые измерения в градусах и десятичных долях.
В этой статье содержится пример настраиваемой функции, которую можно использовать для преобразования значения степени, хранящегося в десятичном формате, в DMS, хранящейся в текстовом формате, а также пример функции, преобразующей DMS в значение степени, хранящееся в десятичном формате.
Дополнительная информация
Корпорация Майкрософт предоставляет примеры программирования только для иллюстраций, которые не выражаются или подразумеваемы, включая, но не ограничиваются, подразумеваемые гарантии пригодности и/или пригодности для конкретной цели. В этой статье предполагается, что вы знакомы с демонстрируемым языком программирования и инструментами, используемыми для создания и отладки процедур. Специалисты службы поддержки Майкрософт могут объяснить возможности конкретной процедуры, но они не изменяют эти примеры, чтобы предоставить дополнительные функции или создать процедуры для удовлетворения конкретных потребностей.
Если у вас ограниченный интерфейс программирования, вы можете обратиться в службу консультационных услуг Майкрософт. Для получения дополнительных сведений посетите веб-сайт Майкрософт:
Преобразование десятичных степеней в градусы/минуты/секунды
Приведенная ниже функция Microsoft Visual Basic для приложений принимает угол, отформатированный в виде десятичного значения, и преобразует его в текстовое значение, отображаемое в градусах, минутах и секундах.
Чтобы использовать эту функцию, создайте формулу преобразования, как показано в следующем примере:
Запустите Excel и нажмите клавиши ALT + F11, чтобы запустить редактор Visual Basic.
В меню Вставка выберите Модуль.
Введите пример кода для пользовательской функции Convert_Degree, описанной выше, в окне модуль.
Нажмите клавиши ALT + F11, чтобы вернуться в Excel.
В ячейке a1 введите 10,46.
В ячейке A2 введите формулу: = Convert_Degree (a1)
Формула возвращает значение 10 ° 27 ‘ 36 ‘
Преобразование градусов/минуты/секунды в десятичные градусы
Следующая настраиваемая функция Microsoft Visual Basic для приложений принимает текстовую строку в градусах, минутах и секундах в том же формате, что и функция Convert_Degree возвращает значение (например, 10 ° 27 ‘ 36 «), и преобразует его в угол, отформатированный в виде десятичного числа. Это только обратный Convert_Degree пользовательской функции.
Эта настраиваемая функция завершается с ошибкой, если аргумент Degree_Deg не имеет формат ° ‘ «, даже если значение секунд равно 0.
Чтобы использовать эту функцию, создайте формулу преобразования, как показано в следующем примере:
Запустите Excel и нажмите клавиши ALT + F11, чтобы запустить редактор Visual Basic.
В меню Вставка выберите Модуль.
Введите пример кода для пользовательской функции Convert_Decimal, описанной выше, в окне модуль.
Нажмите клавиши ALT + F11, чтобы вернуться в Excel.
В ячейке a1 введите следующую формулу:
= Convert_Decimal («10 ° 27» 36 «» «)
Необходимо ввести три знака кавычек («» «) в конце аргумента этой формулы, чтобы сбалансировать кавычки в секундах и знак кавычек для текстовой строки. Для ссылки на ячейку не требуется использование кавычек.
Пересчёт угловых размеров из десятичного представления в обычное (градусы-минуты-секунды) и обратно
В статьях посвящённых работе с GPS в Android (ссылки в конце статьи) было упомянуто о необходимости пересчёта получаемых значений географических координат и пояснены причины, вследствие которых это необходимо.
Рассмотрим алгоритмы пересчёта угловых размеров на примере Delphi и Java.
Пересчёт угловых размеров на Delphi
Допустим есть некоторое угловое значение 25,756897°. Приведём его к привычному представлению «градусы-минуты-секунды».
Для этого воспользуемся универсальным способом конвертации, который вытекает из самого определения данных единиц измерения.
Создадим три переменные для хранения градусов (Integer), минут (Integer) и секунд (double), а также одну вспомогательную переменную для удобства.
Сам пересчёт легко реализуется посредством стандартных функций Delphi.
Обратное преобразование выполняется ещё проще:
Работу с угловыми величинами лучше всего оформить в виде класса. Ниже приведён пример его возможной реализации.
В данном примере при изменении исходного десятичного значения или одной из составляющих представления «градусы-минуты-секунды» производится автоматический пересчёт всех связанных величин.
Далее приведена программа, которая наглядно демонстрирует работу данного класса.
Пересчёт угловых размеров на Java
В случае Java конкретный алгоритм зависит от используемой платформы.
Android SDK
При использовании Android SDK совершать никаких особых действий не требуется.
Пересчёт уже реализован в виде метода convert класса Location.
Его первый параметр – значение широты или долготы, а второй параметр – формат представления данных. Значение FORMAT_SECONDS соответствует представлению «градусы-минуты-секунды».
Этот метод имеет также перегрузку, которая принимает только один параметр в виде строки. Он выполняет обратное преобразование.
Если данный способ по каким-либо причинам не подходит можно воспользоваться способом, приведённым для Delphi транслированным на Java (см. ниже).
Java SE
В Java также можно использовать и универсальный способ пересчёта. Если программа пишется не для Android или возможности класса Location не обеспечивают нужный функционал.
В качестве примера возможной реализации перепишем на Java тот класс для работы с угловыми величинами, который был ранее приведён для Delphi.
Данный класс реализует тот же самый функционал, но на языке программирования Java. Ниже приведён пример его использования.
Величины углов
Как известно из курса геометрии длина полной окружности составляет 360°. И, как известно из курса географии значение широты не может превышать 90°, а долготы 180°.
Аналогично градус состоит из 60 минут, а минута из 60 секунд
Из этого следует, что в классе, описывающем угловую величину необходимо ввести обязательные ограничения на размер и в градусах. Однако это решение на самом деле ничем не оправдано.
Например, в технике часто встречаются угловые значения больше 360°. В частности 720° цикл двигателя внутреннего сгорания.
Поэтому наиболее разумно включить подобные проверки на правильность вводимых данных в бизнес-логику приложения или класс наследник, адаптированный для конкретной предметной области. А, исходный класс, описывающий угловое значение использовать просто для хранения информации или в качестве базового для реализации основных структур данных и алгоритмов по работе с ними.
Как перевести угловые величины в линейные?
Угловые величины активно используются в нашей жизни наряду с линейными. Тем важнее умение перевода одного типа величин в другие. Рассмотрим на «автомобильном» примере возможность перевода одних величин в другие.
Параметры угла тяги и развала принято измерять в градусах, однако они могут измеряться и отображаться градусами и минутами. Параметры схождения, также измеряются в градусах, но могут отображаться и параметрами длины. Перечисленные выше параметры принято считать угловыми, так как мы вычисляем угол.
Одним из самых важных вопросов будет являться вопрос: при каком значении диаметра шины или колеса измеряется расстояние угла? Вполне естественно то, то при большем диаметре, будет большим и расстояние угла. Здесь следует отметить некоторые нюансы: при соотношении дюймов и миллиметров эталонного диаметра, то используется значение эталона, который задается и отражается на экране «Спецификации автомобиля». Однако, если в качестве единиц измерения указанны миллиметры и дюймы, но при этом нет сведений о диаметре колесного диска, то предполагают, что диаметр равен стандартному, то есть 28,648 дюйма.
Обыкновенно схождение отображает ширину колеи между передними и задними концами колеса автомобиля. Вот общая формула нахождения схождения:
Человеческий глаз при нормальном освещении способен «фиксировать» величину примерно равную 1 минуте. То есть, разрешающая способность человеческого органа зрения воспринимает вместо двух точек, имеющих между собой расстояние равное одной минуте, а то и меньше, как одну.
Также стоит рассмотреть понятия синус и тангенс малых углов. Тангенсом угла прямоугольного треугольника принято называть отношение сторон противолежащего катета к прилежащему. Тангенс угла α принято обозначать: tg α. При малых углах (о которых, собственно говоря, и идет речь.), тангенс угла равен величине угла измеренной в радианах.
Диаметр предполагаемого диска: 360 mm
Схождение равно: 1,5 mm
Тогда считаем что, tg α ≈ α= 1,5/360 = 0.00417 (рад)
где: α[рад] — обозначение угла в радианах, α[°] — обозначение угла в градусах
Теперь осуществим процесс перевода в минуты:
Специальный конвертер поможет перевести некоторые единицы.
Таким образом, мы видим: конвертация угловых величин в линейные не составляет особого труда.