1. 1C / Говнокод #14252

    −104

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    Функция Дистанция(Откуда, Куда) Экспорт
    
    	Пи = 3.1415926535897932;
    	
    	ОткудаШиротаВРадианах 	= Откуда.Широта * Пи / 180;
    	ОткудаДолготаВРадианах 	= Откуда.Долгота * Пи / 180;
    	КудаШиротаВРадианах 	= Куда.Широта * Пи / 180;
    	КудаДолготаВРадианах 	= Куда.Долгота * Пи / 180;
    	Аргумент				= Sin(КудаШиротаВРадианах) * Sin(ОткудаШиротаВРадианах) +
            Cos(КудаШиротаВРадианах) * Cos(ОткудаШиротаВРадианах) * Cos(КудаДолготаВРадианах - ОткудаДолготаВРадианах);
    		
    	Аргумент  = ?(Аргумент > 1, 1, Аргумент);
    	Аргумент  = ?(Аргумент < -1, -1, Аргумент);
    		
        Возврат Окр(6378000 * ACos(Аргумент));
    
    КонецФункции

    Запостил: TamerlanDE, 20 Декабря 2013

    Комментарии (19) RSS

    • Не в падлу вам раскладку переключать ради Sin, Cos, etc?
      Ответить
      • Обеими руками "ЗА" за Синус(...) и Косинус(...)
        Ответить
        • > * Пи / 180
          они идут в этом направлении.
          и будет запись
          УМНОЖИТЬ Пи РАЗДЕЛИТЬ СтоВосемДесят
          Ответить
          • Разве НЕТЕХНАРЬ запомнит такие константы? Надо так:
            УМНОЖИТЬ ПолОборотаВРадианах РАЗДЕЛИТЬ ПолОборотаВГрадусах
            Ответить
            • ПолОборота - это запомнить надо. Помнить, почему не один оборот. Магический кусок идентификатора.
              УголВГрадусах УМНОЖИТЬ ГрадусыВРадианах
              Ответить
              • Не хватает ООП:
                УголВГрадусах.ПеревестиВРадианы()
                Ответить
                • переменная радианы присвоить новый УголВРадианах(градусы.ПолучитьГрадусы) семиколон
                  Ответить
                • ПеревестиВРадианы УголВГрадусах -- ноу семиколон
                  Ответить
        • В общем модуле экспортная функция:
          Функция Синус(Параметр) Экспорт
          Возврат Sin(Параметр)
          КонецФункции
          Как-то так )))))
          Ответить
          • А чего ждали то? что это на уровне лексера вшито синонимом?)
            Ответить
            • Вообще-то это человеку, который хотел синусы и косинусы по-русски писать в коде. Я ничего не жду
              Ответить
          • Такой общий модуль должен быть ГЛОБАЛЬНЫЙ !!!
            Ответить
      • Раскладку приходится переключать очень редко. Непереведенные функции в основном все математические. Для всякого же com, xml, dom, null и тд есть спец приблуды- например правый альт + d на русской раскладке вставляет dom
        Ответить
    • эм что это за хрень, я честно говоря вообще не в курсе как в 1С по координатам надо дистанцию определять, напишите как должно быть?
      Ответить
      • А при чём тут 1С? Это чистая математика. Вы с какого класса школу бросили, милейший, если простейшая математическая функция вызывает у вас столько вопросов?
        Ответить
    • Разобрался
      Ответить

    Добавить комментарий