прямое движение камеры в плагине Google Earth через Internet Explorer COM

У меня проблема с имитацией прямой линии в плагине Google Earth. Чтобы имитировать прямую линию, я вызываю метод JavaScript в HTML-документе из MATLAB через COM. (MATLAB в качестве COM-клиента и Internet Explorer в качестве COM-сервера)

Код JavaScript приведен ниже:

function UpdateCamera(lat,lon,alt,bearing,pitch,roll) {
  var camera = ge.getView().copyAsCamera(ge.ALTITUDE_ABSOLUTE);

  // set the camera values         
  camera.setLatitude(lat);
  camera.setLongitude(lon);
  camera.setAltitude(alt);
  camera.setHeading(bearing);
  camera.setTilt(pitch);
  camera.setRoll(roll);

  // Set the FlyTo speed
  ge.getOptions().setFlyToSpeed(ge.SPEED_TELEPORT);

  // Update the view in Google Earth  
  ge.getView().setAbstractView(camera);
}

И для вызова метода JavaScript я использую это в MATLAB:

for i=1:iend
    h.Document.parentWindow.execScript(['tickAnimation(' num2str(cood(i,1)) ',' ...
                                                    num2str(cood(i,2)) ',' ... 
                                                    num2str(cood(i,3)) ',' ...
                                                    num2str(70) ',' ...
                                                    num2str(90) ',' ...
                                                    num2str(0) ');'] , 'JavaScript');

pause(0.01)

end

Я получаю широту и долготу по расстоянию, которое является результатом моделирования. Используя формулу здесь http://www.movable-type.co.uk/scripts/latlong-vincenty-direct.html (данная формула имеет точность в пределах 0,5 мм!)

К сожалению, я до сих пор не могу получить прямолинейное движение в Google Earth. Движение вперед состоит из зигзагообразных движений. результат можно увидеть здесь http://www.youtube.com/watch?v=KS77qORjFh8

Движения вверх уже плавные. теперь проблема только в движении вперед.

Ждем ваших отзывов.

С уважением, Ван


person Wan    schedule 08.07.2011    source источник
comment
чем это отличается от вашего последнего вопроса: stackoverflow.com/questions/6534627/   -  person Amro    schedule 08.07.2011


Ответы (1)


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

person Jiri Kriz    schedule 08.07.2011
comment
Если вы посмотрите на код MATLAB, я обновлю заголовок. Каким-то образом я вставил старый код JavaScript. код тот же, только имя функции теперь tickAnimation вместо UpdateCamera. Из Matlab я вызываю метод tickAnimation, который содержит широту, долготу, высоту, подшипник (который является заголовком), шаг и крен. Я установил постоянный курс 70°, потому что я думаю, что для того, чтобы идти прямо, мне нужно установить постоянный курс, как если бы я использовал компас. Или вы имеете в виду, что значение заголовка меняется по мере продвижения вперед? - person Wan; 08.07.2011
comment
Когда вы двигаетесь к цели по кратчайшему пути, вы двигаетесь по большому кругу. Во время этого движения меняется курс (азимут). См., например. Википедия или Google. Вы найдете формулу для расчета заголовка, например. на Mathforum. Линия с постоянным курсом называется локсодромией — это не кратчайший путь. - person Jiri Kriz; 08.07.2011