Jump to content


Photo

Вопросы по скриптингу

Arma3 как плотформа для созда Скритпы

  • Please log in to reply
1486 replies to this topic

#501 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 12 January 2017 - 18:49

 

спасибо за ответ

 

нет=не остаётся или не правильно понимаю?

кажеться вы что то не так прочитали (в моём посте)

чтобы что либо использовать нужно знать как это работает


Edited by Ilias, 12 January 2017 - 18:58.

  • 0

#502 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 12 January 2017 - 18:58


спасибо за ответ

нет=не остаётся или не правильно понимаю?
"который предназначен для хранения набора элементов, расположен в памяти последовательно"?
чтобы что либо использовать нужно знать как это работает
Прочитайте свой вопрос и сразу же мой ответ - не останется (Нсть такая вещь как "сборщик мусора")
Ну это описание массива, грубое немного - переменная представляющая собой непрерывный участок памяти заполненый элементами (Обычно одинаковой длинны (Элементы), но некоторые языки (Тот же SQF) позволяют и различной длинны хранить)
Нужно если ты пишешь на Си, любом низкоуровневом языке и подобное, но на высокоуровневых языках (К которым можно отнести SQF) этого знать не нужно (На то они и высокоуровневые что бы можно было абстрагироваться от таких подробностей, но если вам нужно это знать, то просто выучите C (Или прочитайте разделы в книгах по этому языку: "Массивы", "Ссылки/Указатели"))

Edited by vlad333000, 12 January 2017 - 19:02.

  • 0

#503 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 12 January 2017 - 19:02

 

 

 

да, верно, извиняюсь,

не совсем понимаю смысл наличия "в третих"

и ответом на вопрос будет: есть процесс удаляющий arrays к которым нет референций?  (спасибо за подробные ответы, но за исключением этого для меня новой информации в них нет ) )


Edited by Ilias, 12 January 2017 - 19:07.

  • 0

#504 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 12 January 2017 - 19:07




да, верно, извиняюсь,
не совсем понимаю смысл наличия "в третих"
и ответом на вопрос будет: есть процесс удаляющий arrays не имеющие никаких 'references'?
Без ссылки на сам массив (Или имени переменной ссылающейся на этот массив) ни один процесс не может удалить (Иск: в SQF есть команда allVariables, через которую можно удалить даже не имея ссылки (Т к эта команда возвращает имена всех переменных), но только идиот будет таким образом удалять без знания того какие переменные за что отвечают)
  • 0

#505 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 12 January 2017 - 19:09

 

Ну как же они тогда могут не оставаться ? )


  • 0

#506 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 12 January 2017 - 19:29

allvariables возвращает только имена, относительно того что вы написали:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

и ответом на вопрос будет: есть процесс удаляющий arrays к которым нет референций

?


Edited by Ilias, 12 January 2017 - 19:54.

  • 0

#507 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 12 January 2017 - 19:55

Ilias, а как вы себе представляете в SQF создание массива без ссылки на него?
  • 0

#508 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 12 January 2017 - 19:59

Ilias, а как вы себе представляете в SQF создание массива без ссылки на него?

что вы прочитали чтобы сложилось впечатление что я это говорил ("создание")?

(удаление ссылок на него)


Edited by Ilias, 12 January 2017 - 20:00.

  • 0

#509 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1831 posts

Posted 12 January 2017 - 20:34

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

-- первая заметка.


  • 0

#510 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 13 January 2017 - 00:20

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

-- первая заметка.

))) упустил )


  • 0

#511 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 15 January 2017 - 05:23

кто нибудь знает в чём ошибка?

//[|cp|,|cp|]execvm'sc\world\f\r.sqf'
//pnt1, pnt2 - точки между которыми вычисляются расстояния
//rad - радиус сферы (земли)
//19,428.67
//ya 6371
//19569.6
//6369
//19563.4
_rad = 6369;
//6215.6;
//6372795;

_lat1 = (_this select 0 select 0)*pi/180;
_long1 = (_this select 0 select 1)*pi/180;
_lat2 = (_this select 1 select 0)*pi/180;
_long2 = (_this select 1 select 1)*pi/180;

_cl1 = cos _lat1;
_cl2 = cos _lat2;
_sl1 = sin _lat1;
_sl2 = sin _lat2;
_delta = _long2 - _long1;
_cdelta = cos _delta;
_sdelta = sin _delta;

_p1 = (_cl2*_sdelta)^2;
_p2 = ((_cl1*_sl2) - (_sl1*_cl2*_cdelta))^2;
_p3 = (_p1 + _p2)^0.5;
_p4 = _sl1*_sl2;
_p5 = _cl1*_cl2*_cdelta;
_p6 = _p4 + _p5;
_p7 = _p3/_p6;
_anglerad = (atan _p7);
_anglerad*_rad;

google и bing выдают отличные от /|\ результаты (-~1%), изменение размеров земли не уравнивает различия (как будто до ~8000 разница увеличивается (с расстоянием) а потом уменьшается)


Edited by Ilias, 15 January 2017 - 18:08.

  • 0

#512 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 16 January 2017 - 16:19

Ilias, какое расстояние вы ищите? По поверхности? Или прямое (сквозь поверхность)? Зачем вам это понадобилось в Арме?
6369? Это у вас радиус в км? Вам не в м нужен, что бы определить расстояние в метрах?

Edited by vlad333000, 16 January 2017 - 16:42.

  • 0

#513 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 16 January 2017 - 17:32

Ilias, какое расстояние вы ищите? По поверхности? Или прямое (сквозь поверхность)? Зачем вам это понадобилось в Арме?
6369? Это у вас радиус в км? Вам не в м нужен, что бы определить расстояние в метрах?

по поверхности, в км потому что в м арма пишет ex: 5.474e+6 (не чтобы было нужно выводить в виде текста но всё же) да и в м ненужно,

у меня переброска войск с карты на карту и согласно сценариям происходит относительно назначенных местоположении локаций в мире.


Edited by Ilias, 16 January 2017 - 17:38.

  • 0

#514 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 16 January 2017 - 19:55

Ilias, а не легче задать это через конфиг или простую переменную в скрипте? Все равно это значение всегда будет константой

Edited by vlad333000, 16 January 2017 - 19:58.

  • 1

#515 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 16 January 2017 - 20:21

Ilias, а не легче задать это через конфиг или простую переменную в скрипте? Все равно это значение всегда будет константой

каждое соединение между 100-300 локациями? ) и расчёт ведётся от точки выхода (из лок.) до точки входа а не между центрами


  • 0

#516 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 16 January 2017 - 22:26

Ilias, ок, допустим... из интереса: что это вообще за локации и как они связаны с физическим миром армы и геймплеем? Почему обязательно учитывать точки входа/выхода? Почему этим нельзя пренебречь?

Edited by vlad333000, 16 January 2017 - 22:35.

  • 0

#517 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 16 January 2017 - 22:42

По формуле скажу так: вместо степени 0.5 лучше воспользоваться sqrt - все же ваши 0.5 не факт что на самом деле являются 0.5
И что тебя беспокоит? Отличие ~1%? Числа в арме хранятся в одинарной точности, когда твой гугл как минимум делает это в двойной точности если не больше
Вот вам подумать: одна и таже формула (6371 * atan(sqrt(((cos(0.837)*sin(0.837-0.959))^2)+(cos(0.959)*sin(0.837)-sin(0.959)*cos(0.837)*cos(0.837-0.959))^2)/(sin(0.959)*sin(0.837)+cos(0.959)*cos(0.837)*cos(0.837-0.959))))
А3: 1099.
WolframAlfa: 914.

Edited by vlad333000, 16 January 2017 - 23:33.

  • 0

#518 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 17 January 2017 - 01:37

По формуле скажу так: вместо степени 0.5 лучше воспользоваться sqrt - все же ваши 0.5 не факт что на самом деле являются 0.5
И что тебя беспокоит? Отличие ~1%? Числа в арме хранятся в одинарной точности, когда твой гугл как минимум делает это в двойной точности если не больше
Вот вам подумать: одна и таже формула (6371 * atan(sqrt(((cos(0.837)*sin(0.837-0.959))^2)+(cos(0.959)*sin(0.837)-sin(0.959)*cos(0.837)*cos(0.837-0.959))^2)/(sin(0.959)*sin(0.837)+cos(0.959)*cos(0.837)*cos(0.837-0.959))))
А3: 1099.
WolframAlfa: 914.

спасибо за ответ, 1% это 100км на расстоянии в 10000 (и вообще разница даже 2), никак нельзя повысить точность вычислений?

 

Ilias, ок, допустим... из интереса: что это вообще за локации и как они связаны с физическим миром армы и геймплеем? Почему обязательно учитывать точки входа/выхода? Почему этим нельзя пренебречь?

потому что это не сложно ) (ведь координаты всё равно, потому что  "каждое соединение между 100-300 локациями? ) " (100^100 соединений))

Edited by Ilias, 17 January 2017 - 01:48.

  • 0

#519 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 17 January 2017 - 02:07

Ilias, ну в моем примере так вообще не то что 1% от 10000, а вообще погрешность более чем на 100 при числе 1000 - это вообще разные числа по сути (При 1% от 10000 хотя бы можно гарантированно считать правильными десятки и единици тысяч, а тут ни один разряд не соответствует истине)
Повысить точность могут только разработчики SQF, которые переведут тип NUMBER с типа данных числа одинарной точности на тип данных числа двойной точности (Ну и еще скорее всего придется весь движок переводить на этот тип данных)... ну или написать реализацию своего типа данных и операций для него на SQF :) (Что крайне сложно и имеет плохую совместимость со стандартными типами данных)

Edited by vlad333000, 17 January 2017 - 02:12.

  • 0

#520 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 17 January 2017 - 16:39

Как вариант, написать плагинчик, он будет не сложным, достаточно посмотреть в примеры БЕСов, в этом плагинчике создаёте метод который будет производить необходимые операции с переданными в плагин координатами с любой желаемой вами точностью результата.


  • 0




Яндекс.Метрика