Finally i got it working...
If anyone have the same problem or some ideas to improve the code, here it is:
var sPosition = Cesium.Cartesian3.fromDegrees(station[1], station[0], station[2]);
var pPosition = viewer.dataSources.get(0).entities.getById("CesiumPlane").position.getValue(time);
var target = Cesium.Ellipsoid.WGS84.cartesianToCartographic(pPosition);
target.latitude = target.latitude * (180 / Math.PI);
target.longitude = target.longitude * (180 / Math.PI);
var eye = Cesium.Ellipsoid.WGS84.cartesianToCartographic(Cesium.Cartesian3.fromDegrees(station[1], station[0], station[2]));
eye.latitude = eye.latitude * (180 / Math.PI);
eye.longitude = eye.longitude * (180 / Math.PI);
var bearing = bearingDegrees(target.latitude, target.longitude, eye.latitude, eye.longitude);
bearing = (bearing-180) * (Math.PI / 180);
var distance = Cesium.Cartesian3.distance(sPosition, pPosition);
var diff = target.height - eye.height;
var tilt = Math.atan(diff / distance);
var camera = viewer.camera;
camera.setView({
position: Cesium.Cartesian3.fromDegrees(station[1], station[0], station[2]),
heading: bearing,
pitch: tilt,
roll: 0.0
});
viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);
function bearingDegrees(lat1, long1, lat2, long2) {
var degToRad = Math.PI / 180.0;
var phi1 = lat1 * degToRad;
var phi2 = lat2 * degToRad;
var lam1 = long1 * degToRad;
var lam2 = long2 * degToRad;
return Math.atan2(Math.sin(lam2 - lam1) * Math.cos(phi2),
Math.cos(phi1) * Math.sin(phi2) - Math.sin(phi1) * Math.cos(phi2) * Math.cos(lam2 - lam1)
) * 180 / Math.PI;
}