Русский
Русский
English
Статистика
Реклама

Куда идут лучи под водой?

В военное время значение синуса может достигать четырех

(С) Willebrord Snel van Royen, Cyclometricus, 1621

Приветствую вас, глубокоуважаемые!

Представьте, каким был бы наш мир, если бы условия распространения звука в нем были бы несколько иными. Например, иногда ваш крик был бы не слышен на расстоянии десяти метров, но становился бы вполне различим на сотне-другой и, скажем, на паре километров? А иногда, негромкий разговор или даже шепот разносился бы на километры от вас. Уверен, что пословица слово - не воробей.. - заиграла бы совершенно новыми красками!

А еще, все эти эффекты сильно зависели бы от времени года и суток, погоды и даже наклона вашей головы. Как бы нам жилось в таком мире?

К счастью, нам даже не придется напрягать воображение, потому что такой мир существует рядом с нами и сегодня я немного расскажу о нем.

Для тех, кто услышал мой шепот в современном потоке информации - добро пожаловать под кат, у нас сегодня не только ликбез и культпросвет, но модель с красивыми картинками, исходным кодом на двух языках и онлайн-симулятором, а также видео, где за 15 минут отображаются все научные морские экспедиции с 1961 по 2010 год.

Псевдопритча

Для всех нас должна быть поучительной жизнь и судьба мореплавателя Кристобаля Колона, который четырежды топтал земли нового света, пребывая в упрямой уверенности, что ступает то по благословенной индийской земле, то по беднейшей части восточного Китая. Так до самой смерти и не узнавший, что он стал первым из европейцев, кто бороздил просторы карибского и саргассова морей. Кто знает, может быть его бы и не расстроило, что на тихоокеанскую плиту наползает Северо-Американская, а не Северо-Колумбийская, но вот то, что доливкой кипятка в эспрессо получают Американо, а не Колумбиано - точно бы опечалило.

Поэтому, не то, чтобы необходимо, но исключительно важно:

  • понимать, где ты находишься

  • иметь связь, как минимум, чтобы спросить у того, кто понимает.

Конечно, Америго Веспуччи, или, по другим данным, Ричард Америке обошлись судя по всему и без этого, но это лишь делает им честь, которая на нас автоматически не экстраполируется.

Океан прекрасен, опасен и неясен.

И именно поэтому, так живучи дежурные фразы про то, что большая часть океана до сих пор не исследована, и то, что поверхность марса картирована лучше, чем поверхность земли.

Но почему так происходит? Помимо того, что под водой, как известно, на нас оказывается огромное давление и благодаря эволюции мы утратили жабры, а вместе с ними и возможность дышать растворенным кислородом, под водой практически не распространяются радиоволны, а еще там в основном темно, холодно и страшно.

Все задачи, которые на земле и в воздухе решаются при помощи радиоволн: GPS, радар, спутниковая связь и мобильная связь перекладываются на узкие, рахитичные плечики гидроакустики.

Кратко напомню, что глубина Бездны Челленжера (самой глубокой точки земных океанов) определена с точностью +/- 10 метров - и на сегодняшний день это все, что может современная наука.

А все потому, что скорость звука в океане не остается неизменной: она очень сильно зависит от температуры, солености и глубины. Это приводит к искривлению траектории распространения звуковых волн в вертикальной плоскости, говоря научным языком - к рефракции акустического поля. Сложная стратифицированность присуща не только океанической среде, но вполне наблюдается и в более мелких водоемах - вспомните хотя бы теплый, прогретый слой воды в речке летом.

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

Это не наш профиль

В прошлой статье мы уже познакомились с понятием профиля скорости звука: ученые непосредственно измеряют скорость звука по всей глубине, и затем интегрируют (суммируют) времена прохождения звука через слои и таким образом более точно определяют глубину.

Пару слов про источники данных. Наборы измерений CTD (температура/соленость) я брал у NOAA.

Я уже как-то рассказывал про эту кладезь и несметные сокровища в статье "Кто, как и на чем исследовал мировой океан". И было собирался написать вторую статью про эти данные, но утратил интерес. Поэтому предлагаю просто посмотреть результат работы - видео, которое в за пятнадцать минут отображает на карте 49 лет морских экспедиций с 1961 по 2010.

Примерно 20 дней в секунду. Цвет точки - температура поверхности, текущие измерения выделяются яркостью.

Профили могут быть самые разнообразные, и для иллюстрации этого я приведу пару примеров.

Вниз по вертикали направлена ось глубин, желтым отображается температурный профиль, а бирюзовым - профиль солености. Зеленый график - вычисленные по глубине, температуре и солености значения скорости звука.

А что же будет, если нам нужна не простоглубина, а, скажем, горизонтальная дальность? А вот здесь, как сказал поэт, к нам и повернется, черное лицо досуга.

Лучано Поворотти (итал. Luciano Pоvоrotti) - буквально: Луч рефрагирует

Я уже упомянул о изгибании траектории звуковых волн, но давайте сначала порассуждаем на стихийно-бытовом уровне и вспомним школьные уроки физики:

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

Этот феномен описывается законом Снеллиуса, или Снелля. Он гласит, что:

Отношение синусов угла под которым волна падает на границу раздел сред и угла, под которым она покидает границу равно отношению скоростей распространения волны в этих средах.

sin \theta/sin\theta_1=c/c_1

Пока я не забыл, для нашего рассказа удобно ввести понятие луча - перпендикуляра к касательной, проведенной в какой-либо точке к фронту волны. В курсе школьной физике мы как раз и рисовали лучи. Давайте я нарисую парочку, для демонтсрации закона Снелля.

Если кто-то не помнит, как он выводится, то может заглянуть под спойлер и освяжить память.

Вспомнить все!

Осознать закон Снелля очень просто. У нас есть два параллельных луча, которые падают на границу раздела под углом . Очевидно, что время хода второго луча на отрезке АB должно совпадать времени хода первого луча на отрезке АB - в противном случае пришлось бы принять, что они перестали быть параллельными.

Для обоих лучей это время равно отношению длины пройденного пути к скорости распространения волны:

t=A'B/c=AB'/c

Если взглянуть на два прямоугольных треугольника AAB и ABB, то окажется, что у них общая сторона AB, которую можно выразить двумя способами:

AB=A'B/sin\theta=AB'/sin\theta_1

Исключив из выражения отрезки AB и AB получаем закон Снелля, Снеллиуса или закон синусов:

sin\theta/sin\theta_1=c/c_1

Это очень глубокая штука. Я предлагаю тщательно ее обдумать, ведь фактически, волна решает оптимизационную задачу: она старается двигаться по пути наименьшего (экстремального) времени распространения. (Принцип Ферма).

Запомните это, дальше выяснится, что это приводит к неожиданным результатам.

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

Лучи не боги изгибают

Детали реализации

Недавний случай из жизни

Где-то осенью 2020 года ко мне в линкедин постучался американский молодой разраб, с просьбой помочь ему с трассировкой лучей в подводе. В тот момент я не сильно интересовался темой (почему - станет понятно в конце статьи) и знал только, что качественную трассировку можно сделать винрарным приложением BELLHOP. Я вежливо отнекивался, ведь мне действительно нечем было ему помочь! Я упомянул невзначай про пресловутый BELLHOP, на что получил обескураживающий ответ: у меня не получилось запустить это приложение.

А ведь да, если просто запустить BELLHOP, то просто моргнет черное окно консоли. BELLHOP - утилита, работающая из командной строки, с кучей параметров, берущая на вход один файл и выдающая на выходе другой. По которому можно потом строить красивые картинки в Matlab.

Терпение, мы уже практически полностью вооружены всей необходимой математикой, чтобы это начать.

Нам понадобится только вспомнить совсем простое правило, что:

Угол падения равен углу отражения

И договориться о том, что мы считаем дно и поверхность воды совершенно плоским, но каждый раз, когда звук отражается ото дна или поверхности, энергия, им переносимая уменьшается определенным образом, скажем умножается на какой-нибудь коэффициент от 0 до 1.

Итак, о входных и выходных параметрах.

В качестве входных у нас будут:

  • Профиль скорости звука, как набор значений скорости звука с привязкой к глубине

  • Число лучей

  • Положение источника на оси Z (т.е. глубина)

  • Диаграмма направленности - угол, в пределах которого лучи выходят из источника

  • Интервал интегрирования по глубине

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

  • Коэффициенты отражения для дна и поверхности

С выходом все предельно понятно: мы хотим иметь траектории движения лучей. То есть последовательные наборы точек, где сопоставляются горизонтальная и вертикальные координаты, к которым можно добавить параметр, определяющий энергию луча в данной точек Напомню, в нашей упрощенной модели луч теряет энергию только при отражениях ото дна и от поверхности.

Перед тем, как выполнить симуляцию нужно подготовить профиль скорости звука к удобному виду: доступные по базам NOAA профили собирались в разные годы и зачастую интервал по глубине может отличаться и для двух соседних измерений. Поэтому линейно интерполируем профиль через 0.1 м.

В проекте на C# это выполняется в методе BuildVSSP() класса Simulator.

После этого создаем список экземпляров класса Ray, каждому из которых передаем угол из заданного диапазона:

double dTheta_deg = thetaRange_deg / numRays;double theta_deg = -thetaRange_deg / 2;for (int i = 0; i < numRays; i++){   rays.Add(new Ray(Z0_m, profileZMax_m, theta_deg, GetSoundSpeed));   theta_deg += dTheta_deg;                }

Последним параметров в конструктор класса Ray передается функция, возвращающая скорость звука на заданной глубине. Она ищет ближайшее значение в интерполированном профиле и кэширует все возвращаемые значения в словаре для ускорения работы всей симуляции в целом, т.к. как минимум до первого отражения все лучи проходят по одним и тем же слоям.

Сама же симуляция выполняется таким образом:

bool finished = false;while (!finished){   finished = true;   foreach (var ray in rays)   {         if ((ray.XMax_m < maxX_m) && (ray.Path_m < maxPath_m))         {               ray.Step(dZ);               finished = false;          }                        }}

Сама же логика поведения луча заключена в методе Step() класса Ray, она-то и делает следующий шаг - решает каково будет следующее положение головы луча.

double z = rayPoints[rayPoints.Count - 1].Z_m;double x = rayPoints[rayPoints.Count - 1].X_m;double e = rayPoints[rayPoints.Count - 1].E;double theta_sign = Theta_rad > 0 ? 1 : -1;z += (dZ * theta_sign);if (z > ZMax_m){   if (z >= ZMax_m)   {      Theta_rad = -Theta_rad;      theta_sign = -theta_sign;      z = ZMax_m * 2 - z;      e *= EtaBottom;      // bottom reflection   }}else{   if (z <= 0)   {      Theta_rad = -Theta_rad;      theta_sign = -theta_sign;      z = -z;      e *= EtaSurface;      // surface reflection   }}            double rsn = dZ / Math.Abs(Math.Sin(Theta_rad));            double drn = Math.Sqrt(rsn * rsn - dZ * dZ);Path_m += Math.Abs(rsn);x += drn;c = getSoundSpeed(z);                        double cosTheta = Math.Cos(Theta_rad);double recipSinTheta = 1.0 / Math.Sin(Theta_rad);double cncp = cosTheta * c / cPrev;if ((Math.Abs(cncp) <= 1) && (!double.IsInfinity(recipSinTheta))){    prevTheta_deg_valid = Theta_rad;    Theta_rad = theta_sign * Math.Acos(cncp);}else{    Theta_rad = -prevTheta_deg_valid;}           cPrev = c;RayPoint newPoint = new RayPoint(x, z, e);rayPoints.Add(newPoint);return newPoint;

Сама логика достаточно проста. Позволю себе лишь упомянуть, что для удобства мы здесь переходим от угла падения (угол, который луч образует с вертикалью) к углу скольжения (угол, который луч образует с горизонталью) - мне просто удобнее так мыслить, коль скоро процесс у нас развивается слева направо. Закон синусов у нас в связи с этим заменяется на закон косинусов - синус угла падения это есть косинус угла скольжения.

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

Один скользкий момент связан с тем случаем, когда угол скольжения становится близок к вертикали или горизонтали. Лучевая теория решительно не может нам здесь адекватно помочь: согласно ей тут происходит фокусировка и уровень сигнала стремится к бесконечности. В реальности, конечно, такого произойти не может.

Чтобы избежать деления на ноль или попыток взять арккосинус от значения, большего по модулю чем единица, мы, во-первых, всегда сохраняем предыдущее адекватное значение угла, а во-вторых, когда дело начинает пахнуть керосином, берем это предыдущее значение, но с противоположным знаком. Это приводит к тому, что угол, стремящийся к горизонтали, как бы отразится от нее и начнет изменяться в противоположную сторону. Так же дело обстоит и при стремлении угла к вертикали.

Ну что ж, достаточно о реализации. Скучная часть окончена, перейдем к картинкам.

Все, что угодно за ваши лучезарные улыбки

Взяв на себя смелость я быстренько накидал простое приложение на С#, который мне ближе всего при разработке чего-нибудь для десктопа. Проект, как обычно, положил на наш гихаб.

И собрался было уже писать статью, как вспомнил, что на одну из таких статей с исходниками и скомпиленным релизом кто-то написал в комментариях: Открыл ссылку - а там win exe :(

Мне очень хотелось, чтобы поиграться с моделью для читателей было бы совсем просто, настолько, насколько я вообще могу себе представить. Вооружившись блокнотом я погрузился на пару дней в чуждый для меня мир JavaScript. Этим я как бы покупаю у вас индульгенцию на неряшливый код :)

Результатом стала онлайн версия трассировщика лучей.

Так давайте же уже запустим это!

Устанавливаю в поле Z значение 0.1 (глубина первого профиля всего 38 метров и разрешение по умолчанию в 1 метр нам будет недостаточно) и загружаем предустановленный профиль GR-553 при помощи одноименной кнопки.

В заголовке профиля указано где, когда и кем он был получен:

NODC Cruise ID              ,,GR-553         ,,,Latitude                    ,,         39.682,decimal degrees,,Longitude                   ,,        19.8750,decimal degrees,,Year                        ,,           1991,,,Month                       ,,              9,,,Day                         ,,              5,,,Time                        ,,          13.17,decimal hours (UT),,METADATA,Country                     ,,             GR,NODC code,GREECEPlatform                    ,,          9628.,OCL code,AEGAEO (R/V;call sign SXYY;built 12.1985;ex.AEGAIO 10.1994;IMO8412429),Institute                   ,,          1445.,NODC code,HELLENIC CENTRE FOR MARINE RESEARCH (HCMR); former NATIONAL CMR (06.2003),Bottom depth                ,,            38.,meters,,

Профиль был получен славными эллинами, 5 сенября 1991 года на вот этом исследовательском судне вот здесь.

Оно кстати, до сих пор бороздит просторы.

Нажимаем кнопку RUN SIMULATION и через некоторое время скрипт генерирует такую красоту:

Сентябрь, греческий Корфу, жаркий (наверное) полдень - теплая вода у поверхности и прохладная у дна. Я не был в греции, но могу сказать, что у нас на р. Пичуга под Волгоградом в самое июльское пекло на 15-20 метрах температура обычно 13-14С.

Слева мы видим сам профиль, значения скорости звука (зеленый график) почти 1 в 1 повторяют график температуры. Соленость не влияет совсем, т.к. меняется лишь незначительно от 38.3 до 38.5 PSU. Скорость звука же уменьшается от 1537 м/с на поверхности, достигая минимума в 1528 м/с у дна.

Все это приводит к тому, что звук, от расположенного на глубине Z0 = 2 метра источника, придет к поверхности не далее чем в 400 метрах от положения этого самого источника. Это будут т.н. прямые лучи. Все остальное - отражения от дна и многократные поверхность-дно-поверхность.

Мы видим, что лучи загибаются вниз. А что там такого, что им туда так хочется попасть? Вот здесь мы подходим к самому основному, фактически, это самый минимум, который я хочу, чтобы вы запомнили. Из этого выводится все остальное.

Траектории лучей загибаются в сторону уменьшения скорости звука.

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

А помните, я обращал ваше внимание на то, что суть закона Снелля в том, что при преодолении границы раздела сред, волна идет путем экстремального (минимального) времени распространения? Ирония состоит в том, что волна, локально сокращая время распространения всегда стремится в область с меньшей скоростью звука, что в глобальном смысле наоборот увеличивает время распространения.

Чтобы закрепить, откроем следующий профиль NA-35, но немного изменим параметры симуляции: максимум по оси X установим равным 2000 метров. Что же мы видим?

Ого, глубина уже лодочная! А температура падает от 16С у поверхности до 6С у дна. И снова отрицательная рефракция, и снова звук стремится ко дну.

21 июня 1996 года. В России вовсю свирепствуют девяностые, я закончил 6 класс и наверное отдыхаю на даче с братьями, а судно под названием Dr. Fridtjof Nansen берет CTD пробы у берегов Намибии.

Необычайно прохладная для этих мест вода обязана холодному течению Бенгела.

Почему это важно? Мы, например, производим гидроакустические модемы, у которых среди характеристик указана т.н. энергетическая дальность - дальность, на которой два таких модема могут передать данные между собой. Для самых маленьких наших модемов она составляет 1000 метров. Длины лучей на картинке выше как раз и ограничены одним километром.

И сложно не заметить, что максимум, что можно получить опустив модемы чуть ниже поверхности воды - метров 400. А учитывая волнение и вовсе не гладкую поверхность воды - десятки метров. А вот если опустить приемник хотя бы метров на 10-20, можно уверенно получить фактическую дальность в районе километра.

Ладно, надоела уже эта отрицательная рефракция. Поехали дальше.

Профиль US-32437. Я поставил предел по оси Х и максимальную длину луча равными 2000 метров. Остальные условия те же.

30 января 2009 года. Исследовательское судно NOAA Delaware II на своем 41 году жизни берет пробы у восточной оконечности Лонг-Айленда. Невероятно, но факт: marinetraffic сообщает, что Delaware II до сих пор в строю в свои 53 года. Правда называется теперь Med Surveyor и ходит под флагом Панамы.

Ситуация с точностью до наоборот: минимум скорости звука на поверхности. В этом нет ничего удивительного: 30 января, северная атлантика. В нью-йорке, говорят, иногда идет снег. Когда упоминается Нью-Йорк, в моей голове сразу возникает Let it snow, let it snow, let it snow голосом Фрэнка Синатры.

Так вот, сверху летит сноу и возможно даже небольшой минус, а у дна вода не остыла, плюс это все-таки атлантика. Все это приводит к тому, что звук в таких условиях загибается наоборот - к поверхности.

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

И что же мы видим на картинке? Если наш робот находится глубже 30 метров и отошел от нас метров на 400 - связь может стать очень неустойчивой и даже полностью пропасть. На дальности более 1000 метров и глубине более 20 ничего, кроме возможных отражений от поверхности мы не поймаем. Кстати, большой привет тем, кто работает с УКБ и использует вертикальный угол прихода сигнала для определения глубины объекта.

Но скорее всего не поймаем даже эти отражения: январь, атлантика. Наверняка ветрено и большие волны, они явно больше длины волны нашего сигнала - вот и на отражения от поверхности можно не рассчитывать.

Тем временем, мы подходим к следующему профилю из онлайн-трассировщика. Я уменьшил угол диаграммы направленности до 60 и установил глубину источника в 60 метров. Вот что получается:

Этот профиль особенно примечателен. Мы видим, что график скорости звука (и температуры) имеет экстремумы. То есть главный минимум находится ни у дна ни у поверхности. К чему это приводит?

Звук, как мы уже выяснили, загибается в сторону уменьшения скорости распространения. И, будучи излученным под небольшими углами скольжения в области минимума скорости звука оказывается заперт: он обречен постоянно пересекать горизонт минимума и постоянно возвращаться к нему. Такую область называют каналом, а условия распространения - канальными.

Впервые описали и объяснили условия канального распространения звука в океане в 1947 году советские ученые во главе с академиком Бреховских и доктором технических наук Розенбергом.

Иногда упоминают, что на звукоподводный канал был открыт и описан немного раньше, в 1944 году Американскими учеными, правда, все было описано в закрытых работах.

Но вернемся к нашему профилю.

19 ноября 1996, легкий ледокол George R. Pearkes 1986 года постройки (все еще в строю) брал пробы в дельте реки Сент-Лоуренс, где она впадает в одноименный залив.

Давайте попробуем поугадывать, откуда взялся такой интересный профиль с двумя впадинами. Я бы сказал, что теплый летний слой не успел еще исчезнуть совсем (ноябрь все-таки), а вода у поверхности уже начала значительно охлаждаться. А еще, если обратить внимание на профиль солености - она значительно ниже у поверхности, что по всей видимости, связано с впадением пресной речной воды в океанические воды.

А теперь посмотрим, что происходит с лучами в канале. Для этого я увеличу предел по оси Х и максимальную длину луча до, скажем, 20 километров.

Вот что мы получим:

Лучи, вышедшие из источника под небольшими углами к горизонту остаются в пределах канала, не касаясь ни дна ни поверхности: звукоподводный канал на мелководье!

Звук распространяется совсем неглубоко и в верхней точки выходит на глубины порядка 20-25 метров. Так он может проходить десятки километров. Напомню: по оси Z всего около 170 метров, а по оси Х - 20 000. То есть фактическое соотношение сторон у графика более 1:100, это примерно как столешница, или лужа на асфальте.

Мы переходим к заключительному профилю, самому глубокому из рассмотренных нами: SU-7464.

22 апреля 1991 года. Судно "Прилив" (на marinetraffic я его не нашел), еще под советским флагом, управляющая организация - Тихоокеанский Океанологический Институт, г. Владивосток. Место взятия проб - камчатский залив.

Этот профиль и выполненная по нему симуляция иллюстрируют еще один занимательный феномен: так называемый, приповерхностный звуковой канал. Такое бывает, когда самые холодные слои воды находятся под поверхностью, что приводит к формированию приповерхностного слоя с минимальной скоростью звука между немного прогретым поверхностным и более теплыми глубокими слоями. Здесь мы также можем наблюдать пресловутый слой скачка - резкого изменения скорости звука, от которого как от зеркала отражаются лучи, идущие под пологими и средними углами к горизонту.

Луч - линия имеющая начало, но не имеющая конца

Наш луч, вопреки определению из школьного курса геометрии, здесь окончательно теряет энергию и вежливо намекает на то, что пора бы подвести итоги.

Что же у нас в сухом остатке?

  • Звук распространяется в водоемах не по прямым линиям, а изгибается в виду наличия слоев воды разной плотности, а соответственно - с разной скоростью звука

  • Звук всегда поворачивает в сторону минимума скорости звука, от чего при определенных условиях в водоемах могут образовываться каналы

  • Примерный (примерный!) характер траекторий звуковых волн можно получить используя очень простые закономерности

  • Диапазон условий необычайно широк, а конкретные условия в конкретном месте склонны иногда к быстрым изменениям

Добавлю, что мало знать профиль скорости звука, нужно знать условия на поверхности, профиль и материал дна. Еще хорошо бы понимать где на пути вашего сигнала проплывает косяк макрели, или какие-то другие объемные неоднородности, на которых звук рассеивается.

Профиль же сам по себе не дает никаких гарантий: он взят вот в этой конкретной точке, а реальное распределение параметров в океане меняется непрерывно в пространстве и времени. Если вы не знаете какую-то часть исходных данных, то трассировка - это не путь, а только направление и поэтому не очень применима на практике.

Закончить свое повествование хочу такими аналогиями:

  • Гидроакустическая связь, особенно на дальние расстояния, это всегда немножко попытка скинуть ключи с балкона 16 этажа человеку с завязанными глазами.

  • А гидроакустическая навигация - попытка измерять что-то постоянно извивающейся или как минимум провисшей рулеткой =)

P.S.

Традиционно благодарю за внимание, буду признателен за конструктивную критику и указание на ошибки.

Обратная связь позволяет не думать о своем труде, как о напрасном.

Источник: habr.com
К списку статей
Опубликовано: 17.03.2021 08:06:08
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Программирование

Производство и разработка электроники

Научно-популярное

Diy или сделай сам

Noaa

Wod

Скорость звука

Соленость

Океан

Океанология

Симулятор

Трассировка лучей

Подводная навигация

Гидроакустика

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru