Программы по геодезии на java

Тема в разделе "Другие программы", создана пользователем 0xba0bab, 5 июл 2010.

  1. stout

    stout Форумчанин

    2 geokm
    во фразе
    специально курсивом выделил секунды с их долями ::biggrin24.gif::
     
  2. Sh_Alex

    Sh_Alex Форумчанин

    Уважаемые форумчане!
    Приношу свои извинения, что своими формулами внес неразбериху в предыдущий пост “stout” от 06 Июля, 2010 - 13:02:07
    Поспешив, я привел формулы перевода D.mmmm.(Градусы_точка десятичная_минуты и доли минут) в D.dddddd (Градусы_точка десятичная_ доли градуса), а у Александра Юрьевича формат с секундами и долями секунд, как он уже объяснил.
    Но осмелюсь продолжить в этой ветке: для тех, кто любит (или вынужден) работать в Excel, запись в одной ячейке угловой величины формата D.mmssss удобнее переводить сразу в радианы, так как все тригонометрические функции Excel, в качестве параметра принимают (и возвращают) угловые величины в радианах. Можно конечно использовать встроенные функции «Радианы», «Градусы», но лучше использовать написанные для этих нужд пользовательские функции, например такие:

    Public Const pi = 3.14159265358979
    Public Const delta = 0.00000000001

    'Перевод углов в формате D.mmssss в радианы
    Function Radian(Grad As Double) As Double
    If Grad >= 0 Then
    Grad = Grad + delta
    Else
    Grad = Grad - delta
    End If
    g = Fix(Grad)
    mm = (Fix((Grad - g) * 100)) / 60
    ss = (Grad * 100 - Fix(Grad * 100)) / 36
    Radian = (g + mm + ss) / 180 * pi
    End Function

    'Перевод углов из радиан в формат D.mmssss.
    Function Gradus(Rad As Double) As Double
    Grad = Rad * 180 / pi
    g = Fix(Grad)
    mm = Fix((Grad - g) * 60) / 100
    ss = ((Grad - g) * 60 - Fix((Grad - g) * 60)) * 0.006
    Gradus = g + mm + ss
    If Gradus >= 0 Then
    Gradus = Gradus + delta
    Else
    Gradus = Gradus - delta
    End If
    End Function

    С уважением, Александр.
     
  3. Sh_Alex

    Sh_Alex Форумчанин

    В качестве компенсации причиненных неудобств для начинающих в Exce привожу файл в нем находятся 4-е пользовательских функции: кроме вышеприведенных, еще функция =direct(x1;y1;x2;y2), вычисляющая дирекционный угол между двумя точками с координатами, указанными в параметрах числами или ссылками на соответствующие ячейки; и функция =dist(x1;y1;x2;y2),вычисляющая расстояние между этими точками.
    При вводе, как минуты, так и секунды должны содержать по две цифры, если за ними есть значащие цифры. Машинное представление и обработка угловых величин выполняется со всеми введенными значащими знаками
    Прежде, чем открыть файл установите в настройках Excel:
    Сервис_Параметры_Безопасность_Безопасность макросов и установите «Средняя». На предупреждение системы безопасности - жмите кнопку «не отключать макросы». На листе книги находится несколько примеров использования функций. А вот сам файл следует сохранить с расширением *.xla (файл надстройки), имя может быть любое, но лучше не менять. Теперь при следующем запуске сеанса Excel, следует подключить новые возможности таблиц, для этого Сервис_Надстройки и ставим «галку» рядом с именем сохраненного файла. После этого во всех Книгах Excel на данном компьютере можно будет использовать новые функции точно также как и стандартные.
    Для того, что бы они действовали на другой машине, нужно на нее установить эту надстройку или для вашего переносимого файла в VBE создать модуль и скопировать туда листинг пользовательских функций.
    С уважением, Александр.
     

    Вложения:

  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление