У меня очень простая математическая проблема, но я не могу понять ее. Мне нужно рассчитать, какая часть земли будет видна при просмотре с камеры, установленной на БПЛА. Я считаю, что я решил, что смотрю прямо вниз, но камера находится на кардане и будет иметь полный диапазон движения по всем осям.Подсчет аэрофотоснимков на землю Оценка
Входы в проблему будут представлять собой высоту (m), фокусное расстояние камеры (мм), длину датчика камеры (мм), длину датчика камеры y (мм) и угол наклона в каждой плоскости.
Вот что у меня есть, когда камера направлена вниз (Примечание: это дает мне длину каждой стороны покрытия земли. В идеале я хотел бы иметь каждую точку, в данном случае, четыре угла прямоугольник.)
float cameraX; // camera sensor x size (mm)
float cameraY; // camera sensor y size (mm)
float cameraF; // camera focal length (mm); common lengths: 150mm (wide angle), 300mm (normal)
float altitude; // high above ground (m)
float ax;
float ay;
void calculateGroundCoverage() {
ax = (altitude/cameraF) * cameraX;
ay = (altitude/cameraF) * cameraY;
}
void printGroundCoverage() {
System.out.print("x: " + cameraX + ", y: " + cameraY + ", f: " + cameraF + ", alt: " + altitude + "\t");
System.out.println("footprint: " + ax + "m x " + ay + "m");
}
Это было [кросс вывешен на Math SE. ] (http://math.stackexchange.com/q/1016979/35416) Пожалуйста, не делайте этого. Решите об одном сообществе, а затем дайте сообществу какое-то время ответить, и только если вы не получите ответа через пару дней, тогда спросите на другом форуме, отвечая на вопрос своей аудитории и включая ссылки между вашими различными версиями. – MvG