Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(553)

Unified Diff: tracing/tracing/base/quad.html

Issue 2771723003: [tracing] Move math utilities from base into their own subdirectory (attempt 2) (Closed)
Patch Set: rebase Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tracing/tracing/base/piecewise_linear_function_test.html ('k') | tracing/tracing/base/quad_test.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tracing/tracing/base/quad.html
diff --git a/tracing/tracing/base/quad.html b/tracing/tracing/base/quad.html
deleted file mode 100644
index 2ba997efc6913c23b3a2ae52c12887aca6d4b7ff..0000000000000000000000000000000000000000
--- a/tracing/tracing/base/quad.html
+++ /dev/null
@@ -1,235 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 The Chromium Authors. All rights reserved.
-Use of this source code is governed by a BSD-style license that can be
-found in the LICENSE file.
--->
-<link rel="import" href="/tracing/base/base.html">
-<link rel="import" href="/tracing/base/math.html">
-<script>
-'use strict';
-
-tr.exportTo('tr.b', function() {
- var tmpVec2s = [];
- for (var i = 0; i < 8; i++)
- tmpVec2s[i] = vec2.create();
-
- var tmpVec2a = vec4.create();
- var tmpVec4a = vec4.create();
- var tmpVec4b = vec4.create();
- var tmpMat4 = mat4.create();
- var tmpMat4b = mat4.create();
-
- var p00 = vec2.createXY(0, 0);
- var p10 = vec2.createXY(1, 0);
- var p01 = vec2.createXY(0, 1);
- var p11 = vec2.createXY(1, 1);
-
- var lerpingVecA = vec2.create();
- var lerpingVecB = vec2.create();
- function lerpVec2(out, a, b, amt) {
- vec2.scale(lerpingVecA, a, amt);
- vec2.scale(lerpingVecB, b, 1 - amt);
- vec2.add(out, lerpingVecA, lerpingVecB);
- vec2.normalize(out, out);
- return out;
- }
-
- /**
- * @constructor
- */
- function Quad() {
- this.p1 = vec2.create();
- this.p2 = vec2.create();
- this.p3 = vec2.create();
- this.p4 = vec2.create();
- }
-
- Quad.fromXYWH = function(x, y, w, h) {
- var q = new Quad();
- vec2.set(q.p1, x, y);
- vec2.set(q.p2, x + w, y);
- vec2.set(q.p3, x + w, y + h);
- vec2.set(q.p4, x, y + h);
- return q;
- };
-
- Quad.fromRect = function(r) {
- return new Quad.fromXYWH(
- r.x, r.y,
- r.width, r.height);
- };
-
- Quad.from4Vecs = function(p1, p2, p3, p4) {
- var q = new Quad();
- vec2.set(q.p1, p1[0], p1[1]);
- vec2.set(q.p2, p2[0], p2[1]);
- vec2.set(q.p3, p3[0], p3[1]);
- vec2.set(q.p4, p4[0], p4[1]);
- return q;
- };
-
- Quad.from8Array = function(arr) {
- if (arr.length !== 8)
- throw new Error('Array must be 8 long');
- var q = new Quad();
- q.p1[0] = arr[0];
- q.p1[1] = arr[1];
- q.p2[0] = arr[2];
- q.p2[1] = arr[3];
- q.p3[0] = arr[4];
- q.p3[1] = arr[5];
- q.p4[0] = arr[6];
- q.p4[1] = arr[7];
- return q;
- };
-
- Quad.prototype = {
- pointInside: function(point) {
- return pointInImplicitQuad(point,
- this.p1, this.p2, this.p3, this.p4);
- },
-
- boundingRect: function() {
- var x0 = Math.min(this.p1[0], this.p2[0], this.p3[0], this.p4[0]);
- var y0 = Math.min(this.p1[1], this.p2[1], this.p3[1], this.p4[1]);
-
- var x1 = Math.max(this.p1[0], this.p2[0], this.p3[0], this.p4[0]);
- var y1 = Math.max(this.p1[1], this.p2[1], this.p3[1], this.p4[1]);
-
- return new tr.b.Rect.fromXYWH(x0, y0, x1 - x0, y1 - y0);
- },
-
- clone: function() {
- var q = new Quad();
- vec2.copy(q.p1, this.p1);
- vec2.copy(q.p2, this.p2);
- vec2.copy(q.p3, this.p3);
- vec2.copy(q.p4, this.p4);
- return q;
- },
-
- scale: function(s) {
- var q = new Quad();
- this.scaleFast(q, s);
- return q;
- },
-
- scaleFast: function(dstQuad, s) {
- vec2.copy(dstQuad.p1, this.p1, s);
- vec2.copy(dstQuad.p2, this.p2, s);
- vec2.copy(dstQuad.p3, this.p3, s);
- vec2.copy(dstQuad.p3, this.p3, s);
- },
-
- isRectangle: function() {
- // Simple rectangle check. Note: will not handle out-of-order components.
- var bounds = this.boundingRect();
- return (
- bounds.x === this.p1[0] &&
- bounds.y === this.p1[1] &&
- bounds.width === this.p2[0] - this.p1[0] &&
- bounds.y === this.p2[1] &&
- bounds.width === this.p3[0] - this.p1[0] &&
- bounds.height === this.p3[1] - this.p2[1] &&
- bounds.x === this.p4[0] &&
- bounds.height === this.p4[1] - this.p2[1]
- );
- },
-
- projectUnitRect: function(rect) {
- var q = new Quad();
- this.projectUnitRectFast(q, rect);
- return q;
- },
-
- projectUnitRectFast: function(dstQuad, rect) {
- var v12 = tmpVec2s[0];
- var v14 = tmpVec2s[1];
- var v23 = tmpVec2s[2];
- var v43 = tmpVec2s[3];
- var l12;
- var l14;
- var l23;
- var l43;
-
- vec2.sub(v12, this.p2, this.p1);
- l12 = vec2.length(v12);
- vec2.scale(v12, v12, 1 / l12);
-
- vec2.sub(v14, this.p4, this.p1);
- l14 = vec2.length(v14);
- vec2.scale(v14, v14, 1 / l14);
-
- vec2.sub(v23, this.p3, this.p2);
- l23 = vec2.length(v23);
- vec2.scale(v23, v23, 1 / l23);
-
- vec2.sub(v43, this.p3, this.p4);
- l43 = vec2.length(v43);
- vec2.scale(v43, v43, 1 / l43);
-
- var b12 = tmpVec2s[0];
- var b14 = tmpVec2s[1];
- var b23 = tmpVec2s[2];
- var b43 = tmpVec2s[3];
- lerpVec2(b12, v12, v43, rect.y);
- lerpVec2(b43, v12, v43, 1 - rect.bottom);
- lerpVec2(b14, v14, v23, rect.x);
- lerpVec2(b23, v14, v23, 1 - rect.right);
-
- vec2.addTwoScaledUnitVectors(tmpVec2a,
- b12, l12 * rect.x,
- b14, l14 * rect.y);
- vec2.add(dstQuad.p1, this.p1, tmpVec2a);
-
- vec2.addTwoScaledUnitVectors(tmpVec2a,
- b12, l12 * -(1.0 - rect.right),
- b23, l23 * rect.y);
- vec2.add(dstQuad.p2, this.p2, tmpVec2a);
-
-
- vec2.addTwoScaledUnitVectors(tmpVec2a,
- b43, l43 * -(1.0 - rect.right),
- b23, l23 * -(1.0 - rect.bottom));
- vec2.add(dstQuad.p3, this.p3, tmpVec2a);
-
- vec2.addTwoScaledUnitVectors(tmpVec2a,
- b43, l43 * rect.left,
- b14, l14 * -(1.0 - rect.bottom));
- vec2.add(dstQuad.p4, this.p4, tmpVec2a);
- },
-
- toString: function() {
- return 'Quad(' +
- vec2.toString(this.p1) + ', ' +
- vec2.toString(this.p2) + ', ' +
- vec2.toString(this.p3) + ', ' +
- vec2.toString(this.p4) + ')';
- }
- };
-
- function sign(p1, p2, p3) {
- return (p1[0] - p3[0]) * (p2[1] - p3[1]) -
- (p2[0] - p3[0]) * (p1[1] - p3[1]);
- }
-
- function pointInTriangle2(pt, p1, p2, p3) {
- var b1 = sign(pt, p1, p2) < 0.0;
- var b2 = sign(pt, p2, p3) < 0.0;
- var b3 = sign(pt, p3, p1) < 0.0;
- return ((b1 === b2) && (b2 === b3));
- }
-
- function pointInImplicitQuad(point, p1, p2, p3, p4) {
- return pointInTriangle2(point, p1, p2, p3) ||
- pointInTriangle2(point, p1, p3, p4);
- }
-
- return {
- pointInTriangle2,
- pointInImplicitQuad,
- Quad,
- };
-});
-</script>
« no previous file with comments | « tracing/tracing/base/piecewise_linear_function_test.html ('k') | tracing/tracing/base/quad_test.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698