Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
TEST_CASES.forEach(testCase => {
const {azimuth, altitude} = getSolarPosition(testCase.timestamp, LATITUDE, LONGITUDE);
// azimuth is measured from south to west, azimuth + 180 is converting to north to east
const azimuthInDegree = 180 + (azimuth * 180) / Math.PI;
const altitudeInDegree = (altitude * 180) / Math.PI;
console.log(azimuthInDegree, testCase.azimuth, altitudeInDegree, testCase.altitude);
t.ok(equals(azimuthInDegree, testCase.azimuth), 'Azimuth angle should match.');
t.ok(equals(altitudeInDegree, testCase.altitude), 'Altitude angle should match.');
});
TEST_CASES.forEach(testCase => {
const {azimuth, altitude} = getSolarPosition(testCase.timestamp, LATITUDE, LONGITUDE);
// azimuth is measured from south to west, azimuth + 180 is converting to north to east
const azimuthInDegree = 180 + (azimuth * 180) / Math.PI;
const altitudeInDegree = (altitude * 180) / Math.PI;
console.log(azimuthInDegree, testCase.azimuth, altitudeInDegree, testCase.altitude);
t.ok(equals(azimuthInDegree, testCase.azimuth), 'Azimuth angle should match.');
t.ok(equals(altitudeInDegree, testCase.altitude), 'Altitude angle should match.');
});
function getProjectionMatrix({width, height, near, far}) {
// Make sure Matrix4.ortho doesn't crash on 0 width/height
width = width || 1;
height = height || 1;
return new Matrix4().ortho({
left: -width / 2,
right: width / 2,
bottom: height / 2,
top: -height / 2,
near,
far
});
}
constructor(props = {}) {
const {id} = props;
this.id = id || uid(this.constructor.name);
this.display = true; // whether to display the object at all
this.position = new Vector3();
this.rotation = new Vector3();
this.scale = new Vector3(1, 1, 1);
this.matrix = new Matrix4();
this.userData = {};
this.props = {};
this._setScenegraphNodeProps(props);
}
constructor(props = {}) {
const {id} = props;
this.id = id || uid(this.constructor.name);
this.display = true; // whether to display the object at all
this.position = new Vector3();
this.rotation = new Vector3();
this.scale = new Vector3(1, 1, 1);
this.matrix = new Matrix4();
this.userData = {};
this.props = {};
this._setScenegraphNodeProps(props);
}
constructor(props = {}) {
const {id} = props;
this.id = id || uid(this.constructor.name);
this.display = true; // whether to display the object at all
this.position = new Vector3();
this.rotation = new Vector3();
this.scale = new Vector3(1, 1, 1);
this.matrix = new Matrix4();
this.userData = {};
this.props = {};
this._setScenegraphNodeProps(props);
}
constructor(props = {}) {
const {id} = props;
this.id = id || uid(this.constructor.name);
this.display = true; // whether to display the object at all
this.position = new Vector3();
this.rotation = new Vector3();
this.scale = new Vector3(1, 1, 1);
this.matrix = new Matrix4();
this.userData = {};
this.props = {};
this._setScenegraphNodeProps(props);
}
equals(viewport) {
if (!(viewport instanceof Viewport)) {
return false;
}
return (
viewport.width === this.width &&
viewport.height === this.height &&
equals(viewport.projectionMatrix, this.projectionMatrix) &&
equals(viewport.viewMatrix, this.viewMatrix)
);
// TODO - check distance scales?
}
getDirectionalUniforms(directional) {
const {color, direction} = directional;
// Normalize lighting direction vector
const dir = new Vector3(direction.x, direction.y, direction.z)
.normalize()
.scale(-1, -1, -1);
return {
directionalColor: [color.r, color.g, color.b],
lightingDirection: [dir.x, dir.y, dir.z]
};
}
test('Matrix4.toFloat32Array', t => {
t.equals(typeof Matrix4.prototype.toFloat32Array, 'function');
const m = new Matrix4();
m.identity();
t.equals(m.toFloat32Array().BYTES_PER_ELEMENT, 4);
t.end();
});