Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
config.EPSILON = 1e-7;
for (const vc in VIEWPORT_PROPS) {
t.comment(vc);
const {longitude, latitude} = VIEWPORT_PROPS[vc];
// Test degree offsets
for (const delta of [10, 100, 1000, 5000]) {
t.comment(`R = ${delta} meters`);
const origin = [longitude, latitude];
// turf unit is kilometers
let pt = destination(origin, delta / 1000 * Math.sqrt(2), 45);
pt = pt.geometry.coordinates.concat(delta);
const result = addMetersToLngLat(origin, [delta, delta, delta]);
t.comment(`Comparing: ${result}, ${pt}`);
t.ok(equals(result, pt), 'Returns correct result');
}
}
t.end();
});
export function getTransformsFromPose(vehiclePose) {
const {longitude, latitude, altitude = 0} = vehiclePose;
const origin =
Number.isFinite(vehiclePose.longitude) && Number.isFinite(vehiclePose.latitude)
? [longitude, latitude, altitude]
: null;
const pose = new Pose(vehiclePose);
const vehicleRelativeTransform = pose.getTransformationMatrix();
// If map_origin is not specified, use a faux position of [0, 0, 0]
// deck.gl needs a lon/lat position to target the camera
const trackPosition = addMetersToLngLat(
origin || [0, 0, 0],
vehicleRelativeTransform.transformVector([0, 0, 0])
);
return {
origin,
vehicleRelativeTransform,
trackPosition,
heading: (pose.yaw / Math.PI) * 180
};
}
export function positionToLngLat([x, y, z], {coordinateSystem, coordinateOrigin, modelMatrix}) {
if (modelMatrix) {
[x, y, z] = new Matrix4(modelMatrix).transformAsPoint([x, y, z]);
}
switch (coordinateSystem) {
case COORDINATE_SYSTEM.METER_OFFSETS:
return addMetersToLngLat(coordinateOrigin, [x, y, z]);
case COORDINATE_SYSTEM.LNGLAT:
default:
return [x, y, z];
}
}