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

Side by Side Diff: experimental/docs/interpolatorFunctions.js

Issue 1342523002: json based animation toy (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: wip whats next? Created 5 years, 1 month 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 unified diff | Download patch
« no previous file with comments | « experimental/docs/glMatrix-0.9.5.min.js ('k') | experimental/docs/jsonReader.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 function interp(A, B, t) {
2 return A + (B - A) * t;
3 }
4
5 function interp_cubic_coords(x1, x2, x3, x4, t)
6 {
7 var ab = interp(x1, x2, t);
8 var bc = interp(x2, x3, t);
9 var cd = interp(x3, x4, t);
10 var abc = interp(ab, bc, t);
11 var bcd = interp(bc, cd, t);
12 var abcd = interp(abc, bcd, t);
13 return abcd;
14 }
15
16 // FIXME : only works for path with single cubic
17 function path_partial(value, path) {
18 assert(isArray(path));
19 var out = [];
20 for (var cIndex = 0; cIndex < path.length; ++cIndex) {
21 out[cIndex] = {};
22 var curveKey = Object.keys(path[cIndex])[0];
23 var curve = path[cIndex][curveKey];
24 var outArray;
25 switch (curveKey) {
26 case "cubic":
27 var x1 = curve[0], y1 = curve[1], x2 = curve[2], y2 = curve[3];
28 var x3 = curve[4], y3 = curve[5], x4 = curve[6], y4 = curve[7];
29 var t1 = 0, t2 = value;
30 var ax = interp_cubic_coords(x1, x2, x3, x4, t1);
31 var ay = interp_cubic_coords(y1, y2, y3, y4, t1);
32 var ex = interp_cubic_coords(x1, x2, x3, x4, (t1*2+t2)/3);
33 var ey = interp_cubic_coords(y1, y2, y3, y4, (t1*2+t2)/3);
34 var fx = interp_cubic_coords(x1, x2, x3, x4, (t1+t2*2)/3);
35 var fy = interp_cubic_coords(y1, y2, y3, y4, (t1+t2*2)/3);
36 var dx = interp_cubic_coords(x1, x2, x3, x4, t2);
37 var dy = interp_cubic_coords(y1, y2, y3, y4, t2);
38 var mx = ex * 27 - ax * 8 - dx;
39 var my = ey * 27 - ay * 8 - dy;
40 var nx = fx * 27 - ax - dx * 8;
41 var ny = fy * 27 - ay - dy * 8;
42 var bx = (mx * 2 - nx) / 18;
43 var by = (my * 2 - ny) / 18;
44 var cx = (nx * 2 - mx) / 18;
45 var cy = (ny * 2 - my) / 18;
46 outArray = [
47 ax, ay, bx, by, cx, cy, dx, dy
48 ];
49 break;
50 default:
51 assert(0); // unimplemented
52 }
53 out[cIndex][curveKey] = outArray;
54 }
55 return out;
56 }
57
58 function interp_paths(value, paths) {
59 assert(isArray(paths));
60 assert(paths.length == 2);
61 var curves0 = paths[0];
62 assert(isArray(curves0));
63 var curves1 = paths[1];
64 assert(isArray(curves1));
65 assert(curves0.length == curves1.length);
66 var out = [];
67 for (var cIndex = 0; cIndex < curves0.length; ++cIndex) {
68 out[cIndex] = {};
69 var curve0Key = Object.keys(curves0[cIndex])[0];
70 var curve1Key = Object.keys(curves1[cIndex])[0];
71 assert(curve0Key == curve1Key);
72 var curve0 = curves0[cIndex][curve0Key];
73 var curve1 = curves1[cIndex][curve1Key];
74 assert(isArray(curve0));
75 assert(isArray(curve1));
76 assert(curve0.length == curve1.length);
77 var outArray = [];
78 for (var i = 0; i < curve1.length; ++i) {
79 outArray[i] = curve0[i] + (curve1[i] - curve0[i]) * value;
80 }
81 out[cIndex][curve0Key] = outArray;
82 }
83 return out;
84 }
OLDNEW
« no previous file with comments | « experimental/docs/glMatrix-0.9.5.min.js ('k') | experimental/docs/jsonReader.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698