Добро пожаловать!

Войдите или зарегистрируйтесь сейчас!

Войти

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

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

  1. stout

    Форумчанин

    Регистрация:
    5 янв 2008
    Сообщения:
    4.172
    Симпатии:
    11.939
    Адрес:
    Златоглавая и Белокаменная
    2 geokm
    во фразе
    специально курсивом выделил секунды с их долями ::biggrin24.gif::
     
    #41
  2. Sh_Alex

    Форумчанин

    Регистрация:
    1 май 2007
    Сообщения:
    641
    Симпатии:
    72
    Адрес:
    Санкт-Петербург
    Уважаемые форумчане!
    Приношу свои извинения, что своими формулами внес неразбериху в предыдущий пост “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

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

    Форумчанин

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

    Вложения:

    #43

Поделиться этой страницей

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