Я реализую экран AR с помощью arcore_flutter_plugin и использовал формулу для расчета моего текущего местоположения и местоположения соответствующей точки для отображения узла, но когда я использовал библиотеку геолокатора, значение заголовка было установлено на 0,0 на по умолчанию, поэтому я получил направление камеры через библиотеку compassX.
Даже если я вычисляю направление, используя радианы для значения, рассчитанного на основе широты и долготы, узел не появляется в точном месте, и есть разница .
void _addSphere(ArCoreController controller) {
double? poss = _lastRead?.heading;
List targetLongitudepol = [];
List targetLatitudepol = [];
double? currentLongitude = position?.longitude;
double? currentLatitude = position?.latitude;
for(int i=0; i < targetLongitudepol.length; i++) {
double? deltaLongitude = targetLongitudepol - currentLongitude!;
double? deltaLatitude = targetLatitudepol - currentLatitude!;
double xDistance = longitudeToMeters(deltaLongitude, currentLatitude);
double yDistance = latitudeToMeters(deltaLatitude);
double headingRadians = poss * (pi / 180);
double adjustedX = (xDistance * cos(headingRadians)) - (yDistance * sin(headingRadians));
double adjustedZ = (xDistance * sin(headingRadians)) + (yDistance * cos(headingRadians));
final materialpol = ArCoreMaterial(
color: Colors.red,
);
final spherepol = ArCoreSphere(
materials: [materialpol],
radius: 0.5,
);
sphereNode = ArCoreNode(
name: "123",
shape: spherepol,
position: vector.Vector3(adjustedX, -1.0, adjustedZ),
scale: vector.Vector3(1.0,1.0,1.0),
);
arCoreController?.addArCoreNode(sphereNode!);
}
}
Future deviceCompass() async {
_lastRead = await CompassX.events!.first;
return _lastRead;
}
double latitudeToMeters(double deltaLatitude) {
return deltaLatitude * 111574;
}
double longitudeToMeters(double deltaLongitude, double latitude) {
double metersPerDegree = 111574 * cos(latitude * (pi / 180));
double longitudeInMeters = deltaLongitude * metersPerDegree;
return longitudeInMeters;
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... -direction
Переместите узел arcore_flutter_plugin в соответствии с направлением камеры. ⇐ Android
Форум для тех, кто программирует под Android
1728367473
Anonymous
Я реализую экран AR с помощью arcore_flutter_plugin и использовал формулу для расчета моего текущего местоположения и местоположения соответствующей точки для отображения узла, но когда я использовал библиотеку геолокатора, значение заголовка было установлено на 0,0 на по умолчанию, поэтому я получил направление камеры через библиотеку compassX.
Даже если я вычисляю направление, используя радианы для значения, рассчитанного на основе широты и долготы, узел не появляется в точном месте, и есть разница .
void _addSphere(ArCoreController controller) {
double? poss = _lastRead?.heading;
List targetLongitudepol = [];
List targetLatitudepol = [];
double? currentLongitude = position?.longitude;
double? currentLatitude = position?.latitude;
for(int i=0; i < targetLongitudepol.length; i++) {
double? deltaLongitude = targetLongitudepol[i] - currentLongitude!;
double? deltaLatitude = targetLatitudepol[i] - currentLatitude!;
double xDistance = longitudeToMeters(deltaLongitude, currentLatitude);
double yDistance = latitudeToMeters(deltaLatitude);
double headingRadians = poss * (pi / 180);
double adjustedX = (xDistance * cos(headingRadians)) - (yDistance * sin(headingRadians));
double adjustedZ = (xDistance * sin(headingRadians)) + (yDistance * cos(headingRadians));
final materialpol = ArCoreMaterial(
color: Colors.red,
);
final spherepol = ArCoreSphere(
materials: [materialpol],
radius: 0.5,
);
sphereNode = ArCoreNode(
name: "123",
shape: spherepol,
position: vector.Vector3(adjustedX, -1.0, adjustedZ),
scale: vector.Vector3(1.0,1.0,1.0),
);
arCoreController?.addArCoreNode(sphereNode!);
}
}
Future deviceCompass() async {
_lastRead = await CompassX.events!.first;
return _lastRead;
}
double latitudeToMeters(double deltaLatitude) {
return deltaLatitude * 111574;
}
double longitudeToMeters(double deltaLongitude, double latitude) {
double metersPerDegree = 111574 * cos(latitude * (pi / 180));
double longitudeInMeters = deltaLongitude * metersPerDegree;
return longitudeInMeters;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79064516/move-the-arcore-flutter-plugin-node-according-to-the-camera-direction[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия