Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added divideComponents to Cartesian2,3,4 #4750

Merged
merged 3 commits into from
Dec 13, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ Change Log
* Fixed tooltips for gallery thumbnails in Sandcastle [#4702](https://github.com/AnalyticalGraphicsInc/cesium/pull/4702)
* Fixed `Rectangle.union` to correctly account for rectangles that cross the IDL [#4732](https://github.com/AnalyticalGraphicsInc/cesium/pull/4732).
* Fixed texture rotation for `RectangleGeometry` [#2737](https://github.com/AnalyticalGraphicsInc/cesium/issues/2737)
* Added `divideComponents` function to `Cartesian2`, `Cartesian3`, and `Cartesian4`. [#4750](https://github.com/AnalyticalGraphicsInc/cesium/pull/4750)
* Added `WebGLConstants` enum. Previously, this was part of the private Renderer API. [#4731](https://github.com/AnalyticalGraphicsInc/cesium/pull/4731)
* Fixed an bug that caused `GroundPrimitive` to render incorrectly on systems without the `WEBGL_depth_texture` extension. [#4747](https://github.com/AnalyticalGraphicsInc/cesium/pull/4747)
* Fixed default Mapbox token and added a watermark to notify users that they need to sign up for their own token.
Expand Down
26 changes: 26 additions & 0 deletions Source/Core/Cartesian2.js
Original file line number Diff line number Diff line change
Expand Up @@ -470,6 +470,32 @@ define([
return result;
};

/**
* Computes the componentwise quotient of two Cartesians.
*
* @param {Cartesian2} left The first Cartesian.
* @param {Cartesian2} right The second Cartesian.
* @param {Cartesian2} result The object onto which to store the result.
* @returns {Cartesian2} The modified result parameter.
*/
Cartesian2.divideComponents = function(left, right, result) {
//>>includeStart('debug', pragmas.debug);
if (!defined(left)) {
throw new DeveloperError('left is required');
}
if (!defined(right)) {
throw new DeveloperError('right is required');
}
if (!defined(result)) {
throw new DeveloperError('result is required');
}
//>>includeEnd('debug');

result.x = left.x / right.x;
result.y = left.y / right.y;
return result;
};

/**
* Computes the componentwise sum of two Cartesians.
*
Expand Down
27 changes: 27 additions & 0 deletions Source/Core/Cartesian3.js
Original file line number Diff line number Diff line change
Expand Up @@ -510,6 +510,33 @@ define([
return result;
};

/**
* Computes the componentwise quotient of two Cartesians.
*
* @param {Cartesian3} left The first Cartesian.
* @param {Cartesian3} right The second Cartesian.
* @param {Cartesian3} result The object onto which to store the result.
* @returns {Cartesian3} The modified result parameter.
*/
Cartesian3.divideComponents = function(left, right, result) {
//>>includeStart('debug', pragmas.debug);
if (!defined(left)) {
throw new DeveloperError('left is required');
}
if (!defined(right)) {
throw new DeveloperError('right is required');
}
if (!defined(result)) {
throw new DeveloperError('result is required');
}
//>>includeEnd('debug');

result.x = left.x / right.x;
result.y = left.y / right.y;
result.z = left.z / right.z;
return result;
};

/**
* Computes the componentwise sum of two Cartesians.
*
Expand Down
28 changes: 28 additions & 0 deletions Source/Core/Cartesian4.js
Original file line number Diff line number Diff line change
Expand Up @@ -513,6 +513,34 @@ define([
return result;
};

/**
* Computes the componentwise quotient of two Cartesians.
*
* @param {Cartesian4} left The first Cartesian.
* @param {Cartesian4} right The second Cartesian.
* @param {Cartesian4} result The object onto which to store the result.
* @returns {Cartesian4} The modified result parameter.
*/
Cartesian4.divideComponents = function(left, right, result) {
//>>includeStart('debug', pragmas.debug);
if (!defined(left)) {
throw new DeveloperError('left is required');
}
if (!defined(right)) {
throw new DeveloperError('right is required');
}
if (!defined(result)) {
throw new DeveloperError('result is required');
}
//>>includeEnd('debug');

result.x = left.x / right.x;
result.y = left.y / right.y;
result.z = left.z / right.z;
result.w = left.w / right.w;
return result;
};

/**
* Computes the componentwise sum of two Cartesians.
*
Expand Down
39 changes: 39 additions & 0 deletions Specs/Core/Cartesian2Spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,25 @@ defineSuite([
expect(left).toEqual(expectedResult);
});

it('divideComponents works with a result parameter', function() {
var left = new Cartesian2(2.0, 3.0);
var right = new Cartesian2(4.0, 5.0);
var result = new Cartesian2();
var expectedResult = new Cartesian2(0.5, 0.6);
var returnedResult = Cartesian2.divideComponents(left, right, result);
expect(result).toBe(returnedResult);
expect(result).toEqual(expectedResult);
});

it('divideComponents works with a result parameter that is an input parameter', function() {
var left = new Cartesian2(2.0, 3.0);
var right = new Cartesian2(4.0, 5.0);
var expectedResult = new Cartesian2(0.5, 0.6);
var returnedResult = Cartesian2.divideComponents(left, right, left);
expect(left).toBe(returnedResult);
expect(left).toEqual(expectedResult);
});

it('dot', function() {
var left = new Cartesian2(2.0, 3.0);
var right = new Cartesian2(4.0, 5.0);
Expand Down Expand Up @@ -614,6 +633,20 @@ defineSuite([
}).toThrowDeveloperError();
});

it('divideComponents throw with no left parameter', function() {
var right = new Cartesian2(4.0, 5.0);
expect(function() {
Cartesian2.divideComponents(undefined, right);
}).toThrowDeveloperError();
});

it('divideComponents throw with no right parameter', function() {
var left = new Cartesian2(4.0, 5.0);
expect(function() {
Cartesian2.divideComponents(left, undefined);
}).toThrowDeveloperError();
});

it('add throws with no left parameter', function() {
expect(function() {
Cartesian2.add(undefined, new Cartesian2());
Expand Down Expand Up @@ -761,6 +794,12 @@ defineSuite([
}).toThrowDeveloperError();
});

it('divideComponents throws with no result', function() {
expect(function() {
Cartesian2.divideComponents(new Cartesian2(), new Cartesian2());
}).toThrowDeveloperError();
});

it('add throws with no result', function() {
expect(function() {
Cartesian2.add(new Cartesian2(), new Cartesian2());
Expand Down
39 changes: 39 additions & 0 deletions Specs/Core/Cartesian3Spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -400,6 +400,25 @@ defineSuite([
expect(left).toEqual(expectedResult);
});

it('divideComponents works with a result parameter', function() {
var left = new Cartesian3(2.0, 3.0, 6.0);
var right = new Cartesian3(4.0, 5.0, 8.0);
var result = new Cartesian3();
var expectedResult = new Cartesian3(0.5, 0.6, 0.75);
var returnedResult = Cartesian3.divideComponents(left, right, result);
expect(result).toBe(returnedResult);
expect(result).toEqual(expectedResult);
});

it('divideComponents works with a result parameter that is an input parameter', function() {
var left = new Cartesian3(2.0, 3.0, 6.0);
var right = new Cartesian3(4.0, 5.0, 8.0);
var expectedResult = new Cartesian3(0.5, 0.6, 0.75);
var returnedResult = Cartesian3.divideComponents(left, right, left);
expect(left).toBe(returnedResult);
expect(left).toEqual(expectedResult);
});

it('dot', function() {
var left = new Cartesian3(2.0, 3.0, 6.0);
var right = new Cartesian3(4.0, 5.0, 7.0);
Expand Down Expand Up @@ -742,6 +761,20 @@ defineSuite([
}).toThrowDeveloperError();
});

it('divideComponents throw with no left parameter', function() {
var right = new Cartesian3(4.0, 5.0, 6.0);
expect(function() {
Cartesian3.divideComponents(undefined, right);
}).toThrowDeveloperError();
});

it('divideComponents throw with no right parameter', function() {
var left = new Cartesian3(4.0, 5.0, 6.0);
expect(function() {
Cartesian3.divideComponents(left, undefined);
}).toThrowDeveloperError();
});

it('dot throws with no right parameter', function() {
expect(function() {
Cartesian3.dot(new Cartesian3(), undefined);
Expand Down Expand Up @@ -1149,6 +1182,12 @@ defineSuite([
}).toThrowDeveloperError();
});

it('divideComponents throws with no result', function() {
expect(function() {
Cartesian3.divideComponents(new Cartesian3(), new Cartesian3());
}).toThrowDeveloperError();
});

it('add throws with no result', function() {
expect(function() {
Cartesian3.add(new Cartesian3(), new Cartesian3());
Expand Down
39 changes: 39 additions & 0 deletions Specs/Core/Cartesian4Spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -464,6 +464,25 @@ defineSuite([
expect(left).toEqual(expectedResult);
});

it('divideComponents works with a result parameter', function() {
var left = new Cartesian4(2.0, 3.0, 6.0, 15.0);
var right = new Cartesian4(4.0, 5.0, 8.0, 2.0);
var result = new Cartesian4();
var expectedResult = new Cartesian4(0.5, 0.6, 0.75, 7.5);
var returnedResult = Cartesian4.divideComponents(left, right, result);
expect(result).toBe(returnedResult);
expect(result).toEqual(expectedResult);
});

it('divideComponents works with a result parameter that is an input parameter', function() {
var left = new Cartesian4(2.0, 3.0, 6.0, 15.0);
var right = new Cartesian4(4.0, 5.0, 8.0, 2.0);
var expectedResult = new Cartesian4(0.5, 0.6, 0.75, 7.5);
var returnedResult = Cartesian4.divideComponents(left, right, left);
expect(left).toBe(returnedResult);
expect(left).toEqual(expectedResult);
});

it('dot', function() {
var left = new Cartesian4(2.0, 3.0, 6.0, 8.0);
var right = new Cartesian4(4.0, 5.0, 7.0, 9.0);
Expand Down Expand Up @@ -740,6 +759,20 @@ defineSuite([
}).toThrowDeveloperError();
});

it('divideComponents throw with no left parameter', function() {
var right = new Cartesian4(4.0, 5.0, 6.0, 7.0);
expect(function() {
Cartesian4.divideComponents(undefined, right);
}).toThrowDeveloperError();
});

it('divideComponents throw with no right parameter', function() {
var left = new Cartesian4(4.0, 5.0, 6.0, 7.0);
expect(function() {
Cartesian4.divideComponents(left, undefined);
}).toThrowDeveloperError();
});

it('dot throws with no right parameter', function() {
expect(function() {
Cartesian4.dot(new Cartesian4(), undefined);
Expand Down Expand Up @@ -866,6 +899,12 @@ defineSuite([
}).toThrowDeveloperError();
});

it('divideComponents throws with no result', function() {
expect(function() {
Cartesian4.divideComponents(new Cartesian4(), new Cartesian4());
}).toThrowDeveloperError();
});

it('add throws with no result', function() {
expect(function() {
Cartesian4.add(new Cartesian4(), new Cartesian4());
Expand Down