Можно сделать ограничение, что пользователь не может быть выше “Спутников”
ну пробуйте. В любом случае легко не будет
Откуда шесть окружностей?
абсолютно верно, это только скейч (с) в реальности все сложнее, и за бесплатно…
Легко никогда не было, не есть и не будет
число возможных пар для четырех точек
Готовый скетч мне ни к чему. Вы навели меня на мысли и подсказали где копать. За это уже огромное спасибо. А то встрял намертво.
Учитывайте еще неточность измерений. В реальном мире данные могут и “не сойтись” (окружности не пересекутся) и точки не получится
есть чудесная галочка вопрос решен, в любом сучае выч мощностей уны не хватит, может дуе потянет
что значит “адаптивными” ?
Возможность быстрой настройки системы под области различных размеров
Тут я как-нибудь выкручусь, и точности удовлетворительной добьюсь)
Спасибо всем запомощь!
Под размеры это не сложно - обычное масштабирование. А вот если взаимное расположение “излучателей” меняется - то это сложно.
Проще предусмотреть расположение “излучателей” по заранее запланированной схеме, и эту готовую схему уже встраивать в разные пространства
Думаю что таблица - оптимальный метод, тут и Уна справится вполне
как-нибудь - очень не надежный путь
Ладно, дам этой идее шанс)
И где же это “подробнее”?
Задача как была, так и осталась в общем виде.
Где конкретная геометрия?
Где конкретные размеры?
Где конкретные погрешности?
По поводу общего вида, я бы для начала попытался сделать так:
Всего точек, как я понял, 4.
Для каждой пары точек можно найти окружность. Но нам нужна не окружность, а достаточно плоскости, в которой лежит эта окружность. Таких плоскостей 6.
Теперь берем эти плоскости по 3 штуки и для каждой тройки вычисляем точку пересечения.
Часть этих точек пределах погрешности и является искомой точкой. Тем или иным способом вычисляем среднее и получаем искомое.
Грубая оценка:
Одна операция с плавающей точкой - порядка 200 тактов на AVR, т.е. 12 мкс.
Надо выполнить весь расчет за 200000 мкс.
Т.е. нам нужно уложиться примерно в 16000 операций.
Мне кажется, вполне реально.
На всякий случай повторю: это делается градиентным спуском. На практике. В системах, над которыми работали десятки гениальных спецов.
Я поясню, про спуск. Лаконичность коллеги вызывает смешанные чувства! ;))
Гр. спуском ищут минимумы и максимумы. Опишу, причем тут задача.
- Ищем минимум функции ошибки [ сумма квадратов разностей расстояния от проверяемой точки до опорной точки и измеренного, по всем опорным ].
- следующую точку выбираем по направлению обратному (мы ж минимум ищем) градиенту функции ошибки. На практике мы либо накапливаем данные градиента в процессе, или просто перебираем несколько соседних и выбираем ту, что “лучше”.
- и так до достижения оргазма! В том смысле, что до тех пор, пока функция ошибки не станет ниже порога решения.
- первую точку, при включении “адской машины” выбираем произвольно, в соответствии с задачей. Потом - начальной точкой является предыдущее положение. Поэтому первый “холодны” старт будет несколько дольше последующих вычислений.
Искусством является выбор функции ошибки, чтобы считать было легче и чтобы ложных минимумов не было у нее в интересующей области. Тут стоит всё-таки почитать профильные работы.
А не проще ли из системы НЕЛИНЕЙНЫХ уравнений получить систему ЛИНЕЙНЫХ уравнений и решить ее известными способами?
Как я понимаю, у нас есть 4 уравнения вида:
(Xn - X)^2 + (Yn - Y)^2 + (Zn - Z)^2 = Ln^2
где n=0,1,2,3
Вычитаем из уравнения 0 все остальные. Получаем систему из 3 линейных уравнений:
2(Xn-X0)X+2(Yn-Y0)Y+2(Zn-Z0)Z=L0^2-Ln^2+Xn^2-X0^2+Yn^2-Y0^2+Zn^2-Z0^2
где n=1,2,3
Решаем ее каким-нить методом: Крамера или Гаусса.
продашь? грибной супчик давно не пробовал, у нас они встречаются но крайне редко и…здесь растёт сатанинский гриб, очень на белые похож…