From e32cba2ace101ea7a40f12a9145a56bc56e5ce17 Mon Sep 17 00:00:00 2001 From: Anderson Tavares <anderson.moreira.tavares@liu.se> Date: Thu, 13 Sep 2018 00:53:05 +0200 Subject: [PATCH] Animations --- public/fonts/KFOkCnqEu92Fr1Mu51xIIzI.woff2 | Bin 0 -> 16944 bytes public/fonts/KFOlCnqEu92Fr1MmEU9fBBc4.woff2 | Bin 0 -> 15552 bytes public/theme.css | 35 +++++- public/tsbb06.html | 129 ++++++++++++-------- public/tsbb06.js | 49 ++++++-- scrubber.ts | 2 +- tsbb06.mr | 129 ++++++++++++-------- tsbb06.ts | 48 +++++++- 8 files changed, 267 insertions(+), 125 deletions(-) create mode 100644 public/fonts/KFOkCnqEu92Fr1Mu51xIIzI.woff2 create mode 100644 public/fonts/KFOlCnqEu92Fr1MmEU9fBBc4.woff2 diff --git a/public/fonts/KFOkCnqEu92Fr1Mu51xIIzI.woff2 b/public/fonts/KFOkCnqEu92Fr1Mu51xIIzI.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..3791c883e8d0e8d3d5331b60584cf3869276cd43 GIT binary patch literal 16944 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þX7<FneO!*qijMwP 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 U*4WZR$0kRgd|CNOg^Pg!0Gm?p2LJ#7 literal 0 HcmV?d00001 diff --git a/public/fonts/KFOlCnqEu92Fr1MmEU9fBBc4.woff2 b/public/fonts/KFOlCnqEu92Fr1MmEU9fBBc4.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..8dceabcf6bdfdb0f09be31878c1ebfdd0be943ff GIT binary patch literal 15552 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 literal 0 HcmV?d00001 diff --git a/public/theme.css b/public/theme.css index f90784a..a795d88 100644 --- a/public/theme.css +++ b/public/theme.css @@ -1,3 +1,29 @@ +/* latin */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 400; + src: local('Roboto Italic'), local('Roboto-Italic'), url(fonts/KFOkCnqEu92Fr1Mu51xIIzI.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* latin */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: local('Roboto'), local('Roboto-Regular'), url(fonts/KFOmCnqEu92Fr1Mu4mxK.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* latin */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 500; + src: local('Roboto Medium'), local('Roboto-Medium'), url(fonts/KFOlCnqEu92Fr1MmEU9fBBc4.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + + body, html { width: 100%; height: 100%; @@ -6,7 +32,7 @@ body { background:white; font-size: 10pt; color: #000; - font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; + font-family: "Roboto", "Helvetica Neue",Helvetica,Arial,sans-serif; line-height: 1.1; overflow: hidden; width: 100%; @@ -191,8 +217,8 @@ div.eqn { width: 0.3em; } -h1 { - +h1, h2, b, h3, h4, .kw { + font-weight: 500; } h2:before { counter-increment: h2counter; @@ -218,7 +244,6 @@ h3:before { counter-increment: h3counter; } .kw { - font-weight: bold; color: green; } .katex { @@ -236,7 +261,7 @@ p, h4, .example { margin-top: 2px; margin-bottom: 0; } -#reg02axis2{ +#reg02b1axis2{ transform: rotate(150deg); transform-origin: 49.5% 50%; } diff --git a/public/tsbb06.html b/public/tsbb06.html index f6f9c06..1792374 100644 --- a/public/tsbb06.html +++ b/public/tsbb06.html @@ -301,38 +301,46 @@ <path d="M0,0 L0,6 L9,3 z" vector-effect="non-scaling-stroke"></path> </marker> </defs> - <g id="reg02axis"> - <line x1="0" y1="80%" x2="95%" y2="80%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke"></line> - <line x1="20%" y1="100%" x2="20%" y2="10" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke"></line> - <line x1="20%" y1="50%" x2="50%" y2="50%" stroke="#999" stroke-width="1" stroke-dasharray="4"></line> - <line x1="50%" y1="80%" x2="50%" y2="50%" stroke="#999" stroke-width="1" stroke-dasharray="4"></line> - <circle cx="20%" cy="80%" r="3" fill="#000"></circle> - <foreignObject x="21%" y="80%"><span class="keq fltl">o</span></foreignObject> - <foreignObject x="19%" y="45%"><span class="keq fltr">x_2</span></foreignObject> - <foreignObject x="48%" y="80%"><span class="keq fltm">x_1</span></foreignObject> + <g id="reg02b1axis1"> + <g id="reg02b1axes"> + <line x1="0" y1="80%" x2="95%" y2="80%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke"></line> + <line x1="20%" y1="100%" x2="20%" y2="10" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke"></line> + </g> + <g id="reg02b1ptax1"> + <line x1="20%" y1="50%" x2="50%" y2="50%" stroke="#999" stroke-width="1" stroke-dasharray="4"></line> + <line x1="50%" y1="80%" x2="50%" y2="50%" stroke="#999" stroke-width="1" stroke-dasharray="4"></line> + <foreignObject x="19%" y="45%"><span class="keq fltr">x_2</span></foreignObject> + <foreignObject x="48%" y="80%"><span class="keq fltm">x_1</span></foreignObject> + <foreignObject x="48%" y="50%"><span class="keq fltr">[x_1, x_2]</span></foreignObject> + </g> + <g id="reg02b1o"> + <circle cx="20%" cy="80%" r="3" fill="#000"></circle> + <foreignObject id="reg02b1o" x="21%" y="80%"><span class="keq fltl">o</span></foreignObject> + </g> + + <foreignObject id="reg02b1axis2lbl1" x="66%" y="10%"><span class="keq">o'</span></foreignObject> + <foreignObject id="reg02b1axis2lbl2" x="71%" y="24%"><span class="keq">x_2'</span></foreignObject> + <foreignObject id="reg02b1axis2lbl3" x="44%" y="20%"><span class="keq">x_1'</span></foreignObject> + <foreignObject id="reg02b1axis2lbl4" x="52%" y="50%"><span class="keq">[x_1', x_2']</span></foreignObject> + </g> - <g id="reg02axis2"> + <g id="reg02b1axis2"> <line x1="25%" y1="70%" x2="55%" y2="70%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke"></line> <line x1="30%" y1="80%" x2="30%" y2="45%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke"></line> <line x1="30%" y1="50%" x2="50%" y2="50%" stroke="#999" stroke-width="1" stroke-dasharray="4"></line> <line x1="50%" y1="70%" x2="50%" y2="50%" stroke="#999" stroke-width="1" stroke-dasharray="4"></line> <circle cx="30%" cy="70%" r="3" fill="#000"></circle> - </g> - <foreignObject x="66%" y="10%"><span class="keq">o'</span></foreignObject> - <foreignObject x="71%" y="24%"><span class="keq">x_2'</span></foreignObject> - <foreignObject x="44%" y="20%"><span class="keq">x_1'</span></foreignObject> - <foreignObject x="52%" y="50%"><span class="keq">[x_1', x_2']</span></foreignObject> - <foreignObject x="48%" y="50%"><span class="keq fltr">[x_1, x_2]</span></foreignObject> + </g> + <circle id="reg02b1pt" cx="50%" cy="50%" r="3" fill="#000"></circle> - <circle cx="50%" cy="50%" r="3" fill="#000"></circle> </svg> </div> <div class="figcaption"><span class="kw">Cartesian coordinate system</span></div> </div> <div id="reg02b2" class="block row2 col2"> <div class="figure"><img src="figs/handedness.svg"></div> - <div class="figcaption"><span class="kw">Handedness</span> (right hand = clockwise)</div> + <div class="figcaption"><span class="kw">Handedness</span> (right hand = counter-clockwise)</div> </div> <div id="reg02b3" class="block row2 col2"> <div class="figure"><img src="figs/righthand.svg"></div> @@ -346,48 +354,64 @@ <h3 id="reg021h">Points in <span class="keq">\mathbb{E}^2</span></h3> <div id="reg021b" class="blocks"> <div id="reg021b1" class="block row3 col3"> - <p><span class="kw">Point</span> in <span class="keq">\mathbb{E}^2\Rightarrow</span> <span class="kw">Vector</span> <span class="keq">\vec{x}\in \mathbb{R}^2</span></p> - <div class="center keq">\vec{x}\hspace{-2px}=\hspace{-2px}\begin{bmatrix}x_1\\x_2\end{bmatrix}</div> - <p class="elevquarter"><span class="kw">Vector sum</span>: <span class="keq">\vec{z}=\vec{x}\hspace{-2px}+\hspace{-2px}\vec{y}\hspace{-2px}=\hspace{-4px}\begin{bmatrix}\hspace{-4px}x_1\hspace{-2px}+\hspace{-2px}y_1\hspace{-5px}\\\hspace{-4px}x_2\hspace{-2px}+\hspace{-2px}y_2\hspace{-5px}\end{bmatrix}</span></p> - <p class="elevquarter"><span class="kw">Scalar multiple</span>: <span class="keq">c\vec{x}=\begin{bmatrix}cx_1\\cx_2\end{bmatrix}</span></p> - <p><span class="kw">Linear combination</span>:</p> - <div class="eq keq">\vec{z}=c_1\vec{x}+c_2\vec{y}=\begin{bmatrix}c_1x_1+c_2y_1\\c_1x_2+c_2y_2\end{bmatrix}</div> - <p><span class="kw">Scalar (or dot) product</span>:</p> - <div class="eq keq">\vec{x}\cdot \vec{y} = \vec{x}^T\vec{y} = x_1y_1+x_2y_2</div> - <p><span class="kw">Vector norm (or length)</span>:</p> - <div class="eq keq">\|\vec{x}\|=(\vec{x}\cdot \vec{x})^\frac{1}{2}=\sqrt{x_1^2+x_2^2}</div> - - <p><span class="kw">Unit vector</span>: <span class="keq">\hat{x}=\displaystyle\frac{\vec{x}}{\|\vec{x}\|}, \|\hat{x}\|=1</span></p> + <p><span class="kw">Point</span> in <span class="keq">\mathbb{E}^2\Rightarrow</span> <span id="reg021b1ptvt"><span class="kw">Vector</span> <span class="keq">\vec{x}\in \mathbb{R}^2</span></span></p> + <div id="reg021b1vtx" class="center keq">\vec{x}\hspace{-2px}=\hspace{-2px}\begin{bmatrix}x_1\\x_2\end{bmatrix}</div> + <p id="reg021b1vtsum" class="elevquarter"><span class="kw">Vector sum</span>: <span class="keq">\vec{z}=\vec{x}\hspace{-2px}+\hspace{-2px}\vec{y}\hspace{-2px}=\hspace{-4px}\begin{bmatrix}\hspace{-4px}x_1\hspace{-2px}+\hspace{-2px}y_1\hspace{-5px}\\\hspace{-4px}x_2\hspace{-2px}+\hspace{-2px}y_2\hspace{-5px}\end{bmatrix}</span></p> + <p id="reg021b1vtmult" class="elevquarter"><span class="kw">Scalar multiple</span>: <span class="keq">c\vec{x}=\begin{bmatrix}cx_1\\cx_2\end{bmatrix}</span></p> + <div id="reg021b1vtcomb"> + <p><span class="kw">Linear combination</span>:</p> + <div class="eq keq">\vec{z}=c_1\vec{x}+c_2\vec{y}=\begin{bmatrix}c_1x_1+c_2y_1\\c_1x_2+c_2y_2\end{bmatrix}</div> + </div> + <div id="reg021b1vtdot"> + <p><span class="kw">Scalar (or dot) product</span>:</p> + <div class="eq keq">\vec{x}\cdot \vec{y} = \vec{x}^T\vec{y} = x_1y_1+x_2y_2</div> + </div> + <div id="reg021b1vtnorm"> + <p><span class="kw">Vector norm (or length)</span>:</p> + <div class="eq keq">\|\vec{x}\|=(\vec{x}\cdot \vec{x})^\frac{1}{2}=\sqrt{x_1^2+x_2^2}</div> + </div> + <p id="reg021b1vtunit"><span class="kw">Unit vector</span>: <span class="keq">\hat{x}=\displaystyle\frac{\vec{x}}{\|\vec{x}\|}, \|\hat{x}\|=1</span></p> </div> <div id="reg021b2" class="block col3 row2 full"> <svg class="full"> <line x1="0" y1="80%" x2="95%" y2="80%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke"></line> <line x1="20%" y1="100%" x2="20%" y2="10" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke"></line> - <line x1="20%" y1="80%" x2="60%" y2="70%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke"></line> - <line x1="20%" y1="68%" x2="63%" y2="68%" stroke="#999" stroke-width="1" stroke-dasharray="4"></line> - <line x1="63%" y1="80%" x2="63%" y2="68%" stroke="#999" stroke-width="1" stroke-dasharray="4"></line> - - <line x1="20%" y1="80%" x2="80%" y2="65%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke"></line> + <g id="reg021b2vx"> + <line x1="20%" y1="80%" x2="60%" y2="70%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke"></line> + <foreignObject x="55%" y="72%"><span class="keq">\vec{x}</span></foreignObject> + + <g id="reg021b2vxc"> + <line x1="20%" y1="68%" x2="63%" y2="68%" stroke="#999" stroke-width="1" stroke-dasharray="4"></line> + <line x1="63%" y1="80%" x2="63%" y2="68%" stroke="#999" stroke-width="1" stroke-dasharray="4"></line> + <foreignObject x="58%" y="80%"><span class="keq">x_1</span></foreignObject> + <foreignObject x="18%" y="65%"><span class="keq fltr">x_2</span></foreignObject> + </g> + + </g> + <g id="reg021b2vy"> + <line x1="20%" y1="80%" x2="35%" y2="50%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke"></line> + <foreignObject x="28%" y="45%"><span class="keq">\vec{y}</span></foreignObject> + <line x1="37%" y1="48%" x2="77%" y2="38%" stroke="#666" stroke-dasharray="4" stroke-width="1" vector-effect="non-scaling-stroke"></line> + <line x1="63%" y1="68%" x2="78%" y2="38%" stroke="#666" fill="#666" stroke-width="1" stroke-dasharray="4" vector-effect="non-scaling-stroke"></line> + <line x1="20%" y1="80%" x2="75%" y2="40%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke"></line> + <foreignObject x="36%" y="48%" width="100%" transform="rotate(-42)" transform-origin="50% 50%"><div class="keq">\vec{x}+\vec{y}</div></foreignObject> + </g> - <line x1="20%" y1="80%" x2="35%" y2="50%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke"></line> + <g id="reg021b2cvx"> + <line x1="20%" y1="80%" x2="80%" y2="65%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke"></line> + <foreignObject x="75%" y="68%"><span class="keq">c\vec{x}</span></foreignObject> + </g> - - <line x1="37%" y1="48%" x2="77%" y2="38%" stroke="#666" stroke-dasharray="4" stroke-width="1" vector-effect="non-scaling-stroke"></line> - <line x1="63%" y1="68%" x2="78%" y2="38%" stroke="#666" fill="#666" stroke-width="1" stroke-dasharray="4" vector-effect="non-scaling-stroke"></line> - <line x1="20%" y1="80%" x2="75%" y2="40%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke"></line> - <foreignObject x="55%" y="72%"><span class="keq">\vec{x}</span></foreignObject> - <foreignObject x="75%" y="68%"><span class="keq">c\vec{x}</span></foreignObject> - <foreignObject x="36%" y="48%" width="100%" transform="rotate(-42)" transform-origin="50% 50%"><div class="keq">\vec{x}+\vec{y}</div></foreignObject> - <foreignObject x="28%" y="45%"><span class="keq">\vec{y}</span></foreignObject> - <foreignObject x="58%" y="80%"><span class="keq">x_1</span></foreignObject> - <foreignObject x="18%" y="65%"><span class="keq fltr">x_2</span></foreignObject> </svg> </div> <div id="reg021b3" class="block col2"> <div class="figure"><img src="figs/placeholder.svg"></div> </div> - <div id="reg021b4" class="block col4 row2"> + <div id="reg021b4" class="block col2"> + <div class="figure"><img src="figs/placeholder.svg"></div> + </div> + <div id="reg021b5" class="block col4 row2"> <p><b>Scalar product and angles</b> (<span class="keq">\theta=\angle(\vec{x}, \vec{y})</span>): </p> <div class="keq eq">\vec{x}\cdot \vec{y} = \|\vec{x}\|\|\vec{y}\|\cos\theta</div> <p><span class="kw">Perpendicularity</span> (<span class="kw">Orthogonality</span>):</p> @@ -401,10 +425,6 @@ </div> </div> - <div id="reg021b5" class="block col2"> - <div class="figure"><img src="figs/placeholder.svg"></div> - <div class="figcaption">Left hand system</div> - </div> <div id="reg021b6" class="block col2"> <div class="figure"><img src="figs/placeholder.svg"></div> <div class="figcaption">Left hand system</div> @@ -417,6 +437,10 @@ <div class="figure"><img src="figs/placeholder.svg"></div> <div class="figcaption">Left hand system</div> </div> + <div id="reg021b9" class="block col2"> + <div class="figure"><img src="figs/placeholder.svg"></div> + <div class="figcaption">Left hand system</div> + </div> </div> <h3 class="hidden">Lines in <span class="keq">\mathbb{E}^2</span></h3> <div class="blocks hidden"> @@ -985,8 +1009,7 @@ <p><span class="kw">Projective Plane</span>: <span class="keq">\mathbb{P}^2</span></p> <p class="center"><span class="keq">\mathbb{E}^2\cup</span> set of points at infinity</p> </div> - <div class="block"></div> - + <div class="block col2 row2"> <div class="figure"><img src="figs/placeholder.svg"></div> <div class="figcaption">Parallel lines and point at infinity</div> diff --git a/public/tsbb06.js b/public/tsbb06.js index 0975ce3..ad4d6c3 100644 --- a/public/tsbb06.js +++ b/public/tsbb06.js @@ -116,7 +116,7 @@ var Scrubber = (function () { nextPause = this._pauses.find(function (pause) { return pause > _this.time; }); else nextPause = this._pausesR.find(function (pause) { return pause < _this.time; }); - //console.log(nextPause, this._pausesR); + console.log(nextPause, this._pausesR); if (nextPause !== undefined) { //console.log(nextPause, time); if (time !== null) { @@ -146,11 +146,33 @@ var Scrubber = (function () { document.addEventListener("DOMContentLoaded", function () { var kFormula = document.querySelectorAll(".keq"); [].forEach.call(kFormula, function (kFormulai) { return katex.render(kFormulai.innerHTML.replace(/&/g, '&'), kFormulai); }); - var reg02b = document.getElementById("reg021b"); + // var reg02b=document.getElementById("reg021b"); var reg02b1 = document.getElementById("reg02b1"); var reg02b2 = document.getElementById("reg02b2"); var reg02b3 = document.getElementById("reg02b3"); var reg02b4 = document.getElementById("reg02b4"); + var reg02b1axis2 = document.getElementById("reg02b1axis2"); + var reg02b1axis1 = document.getElementById("reg02b1axis1"); + var reg02b1axes = document.getElementById("reg02b1axes"); + var reg02b1o = document.getElementById("reg02b1o"); + var reg02b1pt = document.getElementById("reg02b1pt"); + var reg02b1ptax1 = document.getElementById("reg02b1ptax1"); + var reg02b1axis2lbl1 = document.getElementById("reg02b1axis2lbl1"); + var reg02b1axis2lbl2 = document.getElementById("reg02b1axis2lbl2"); + var reg02b1axis2lbl3 = document.getElementById("reg02b1axis2lbl3"); + var reg02b1axis2lbl4 = document.getElementById("reg02b1axis2lbl4"); + var reg021b1ptvt = document.getElementById("reg021b1ptvt"); + var reg021b1vtx = document.getElementById("reg021b1vtx"); + var reg021b2vx = document.getElementById("reg021b2vx"); + var reg021b1vtsum = document.getElementById("reg021b1vtsum"); + var reg021b2vy = document.getElementById("reg021b2vy"); + var reg021b2vxc = document.getElementById("reg021b2vxc"); + var reg021b2cvx = document.getElementById("reg021b2cvx"); + var reg021b1vtmult = document.getElementById("reg021b1vtmult"); + var reg021b1vtcomb = document.getElementById("reg021b1vtcomb"); + var reg021b1vtdot = document.getElementById("reg021b1vtdot"); + var reg021b1vtnorm = document.getElementById("reg021b1vtnorm"); + var reg021b1vtunit = document.getElementById("reg021b1vtunit"); var reg021h = document.getElementById("reg021h"); var reg021b = document.getElementById("reg021b"); var reg021b1 = document.getElementById("reg021b1"); @@ -162,19 +184,32 @@ document.addEventListener("DOMContentLoaded", function () { var reg021b7 = document.getElementById("reg021b7"); var reg021b8 = document.getElementById("reg021b8"); var fadeIn = [{ opacity: 0 }, { opacity: 1 }]; + var fadeOut = [{ opacity: 1 }, { opacity: 0 }]; var scrubber = new Scrubber("scrubber-touch", "scrubber-cur"); scrubber.activate(); var times = [ - [1000, 0], [1000, 1000], [1000, 2000], [1000, 3000], [1000, 4000], - [1000, 5000], [1000, 6000], [1000, 7000], [1000, 8000], [1000, 9000], [1000, 10000], [1000, 11000], [1000, 12000], [1000, 13000], [1000, 14000], + // 1 2 3 4 5 6 7 8 9 10 11 12 13 + /* REG 02 */ [500, 0], [500, 500], [500, 1000], [500, 1500], [500, 2000], [500, 2500], [500, 2500], [500, 2500], [500, 2500], [500, 2500], [500, 3000], [500, 3500], [500, 4000], + // 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + /* REG 02 B */ [500, 4500], [500, 4500], [500, 4500], [500, 5000], [500, 5000], [500, 5000], [500, 5500], [500, 5500], [500, 5500], [500, 6000], [500, 6000], [500, 6500], [500, 7000], [500, 7500], [500, 8000], [500, 6500], [500, 7500], [500, 8500], [500, 10000], [500, 13000], [500, 14000], + ]; + var fx = [ + // 1 2 3 4 5 6 7 8 9 10 11 12 13 + fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, + // 1 2 3 4 5 6 7 8 9 10 11 12 13 + fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeOut, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, ]; var effects = []; - var items = [reg02b, reg02b1, reg02b2, reg02b3, reg02b4, reg021h, reg021b, reg021b1, reg021b2, reg021b3, reg021b4, reg021b5, reg021b6, reg021b7, reg021b8]; + var items = [ + // 1 2 3 4 5 6 7 8 9 10 11 12 13 + reg02b1, reg02b1o, reg02b1axes, reg02b1pt, reg02b1ptax1, reg02b1axis2, reg02b1axis2lbl1, reg02b1axis2lbl2, reg02b1axis2lbl3, reg02b1axis2lbl4, reg02b2, reg02b3, reg02b4, + // 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + reg021h, reg021b1, reg021b2, reg021b1ptvt, reg021b2vx, reg021b1vtx, reg021b1vtsum, reg021b2vy, reg021b2vxc, reg021b2cvx, reg021b1vtmult, reg021b1vtcomb, reg021b1vtdot, reg021b1vtnorm, reg021b1vtunit, reg021b3, reg021b4, reg021b5, reg021b6, reg021b7, reg021b8]; var total = 15000; for (var i = 0; i < items.length; i++) { - effects.push(new KeyframeEffect(items[i], fadeIn, { duration: times[i][0], easing: "ease-in-out", delay: times[i][1], endDelay: total - (times[i][1] + times[i][0]), fill: "both" })); + effects.push(new KeyframeEffect(items[i], fx[i], { duration: times[i][0], easing: "ease-in-out", delay: times[i][1], endDelay: total - (times[i][1] + times[i][0]), fill: "both" })); } - scrubber.pauses = [0, 1000, 2000, 3000, 4000, 5000]; + scrubber.pauses = [0, 500, 1000, 1500, 2000, 2500, 3000, 3500, 4000, 4500, 5000, 5500, 6000, 6500, 7000, 7500, 8000, 8500, 9000, 9500, 10000, 10500, 11000, 11500, 12000, 12500, 13000, 13500, 14000, 14500, 15000, 15500, 16000, 16500, 17000, 17500, 18000, 18500, 19000, 19500]; scrubber.animations = effects.map(function (effect) { return new Animation(effect, document.timeline); }); scrubber.time_max = 10000; scrubber.playForwards(); diff --git a/scrubber.ts b/scrubber.ts index 47926a0..9fbc6fa 100644 --- a/scrubber.ts +++ b/scrubber.ts @@ -118,7 +118,7 @@ export class Scrubber { let nextPause: number | undefined; if(!this.reversed) nextPause = this._pauses.find((pause) => pause > this.time); else nextPause = this._pausesR.find((pause) => pause < this.time); - //console.log(nextPause, this._pausesR); + console.log(nextPause, this._pausesR); if (nextPause !== undefined) { //console.log(nextPause, time); if (time !== null) { diff --git a/tsbb06.mr b/tsbb06.mr index 9e58a82..11c3eb1 100644 --- a/tsbb06.mr +++ b/tsbb06.mr @@ -301,38 +301,46 @@ \path(d="M0,0 L0,6 L9,3 z" vector-effect="non-scaling-stroke") } } - \g#reg02axis{ - \line(x1="0" y1="80%" x2="95%" y2="80%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke") - \line(x1="20%" y1="100%" x2="20%" y2="10" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke") - \line(x1="20%" y1="50%" x2="50%" y2="50%" stroke="#999" stroke-width="1" stroke-dasharray="4") - \line(x1="50%" y1="80%" x2="50%" y2="50%" stroke="#999" stroke-width="1" stroke-dasharray="4") - \circle(cx="20%" cy="80%" r="3" fill="#000") - \foreignObject(x="21%" y="80%"){\span.keq.fltl{o}} - \foreignObject(x="19%" y="45%"){\span.keq.fltr{x_2}} - \foreignObject(x="48%" y="80%"){\span.keq.fltm{x_1}} + \g#reg02b1axis1{ + \g#reg02b1axes{ + \line(x1="0" y1="80%" x2="95%" y2="80%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke") + \line(x1="20%" y1="100%" x2="20%" y2="10" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke") + } + \g#reg02b1ptax1{ + \line(x1="20%" y1="50%" x2="50%" y2="50%" stroke="#999" stroke-width="1" stroke-dasharray="4") + \line(x1="50%" y1="80%" x2="50%" y2="50%" stroke="#999" stroke-width="1" stroke-dasharray="4") + \foreignObject(x="19%" y="45%"){\span.keq.fltr{x_2}} + \foreignObject(x="48%" y="80%"){\span.keq.fltm{x_1}} + \foreignObject(x="48%" y="50%"){\span.keq.fltr{[x_1, x_2]}} + } + \g#reg02b1o{ + \circle(cx="20%" cy="80%" r="3" fill="#000") + \foreignObject#reg02b1o(x="21%" y="80%"){\span.keq.fltl{o}} + } + + \foreignObject#reg02b1axis2lbl1(x="66%" y="10%"){\span.keq{o'}} + \foreignObject#reg02b1axis2lbl2(x="71%" y="24%"){\span.keq{x_2'}} + \foreignObject#reg02b1axis2lbl3(x="44%" y="20%"){\span.keq{x_1'}} + \foreignObject#reg02b1axis2lbl4(x="52%" y="50%"){\span.keq{[x_1', x_2']}} + } - \g#reg02axis2{ + \g#reg02b1axis2{ \line(x1="25%" y1="70%" x2="55%" y2="70%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke") \line(x1="30%" y1="80%" x2="30%" y2="45%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke") \line(x1="30%" y1="50%" x2="50%" y2="50%" stroke="#999" stroke-width="1" stroke-dasharray="4") \line(x1="50%" y1="70%" x2="50%" y2="50%" stroke="#999" stroke-width="1" stroke-dasharray="4") \circle(cx="30%" cy="70%" r="3" fill="#000") - } - \foreignObject(x="66%" y="10%"){\span.keq{o'}} - \foreignObject(x="71%" y="24%"){\span.keq{x_2'}} - \foreignObject(x="44%" y="20%"){\span.keq{x_1'}} - \foreignObject(x="52%" y="50%"){\span.keq{[x_1', x_2']}} - \foreignObject(x="48%" y="50%"){\span.keq.fltr{[x_1, x_2]}} + } + \circle#reg02b1pt(cx="50%" cy="50%" r="3" fill="#000") - \circle(cx="50%" cy="50%" r="3" fill="#000") } } \div.figcaption{\span.kw{Cartesian coordinate system}} } \div#reg02b2.block.row2.col2{ \div.figure{\img(src="figs/handedness.svg")} - \div.figcaption{\span.kw{Handedness} (right hand = clockwise)} + \div.figcaption{\span.kw{Handedness} (right hand = counter-clockwise)} } \div#reg02b3.block.row2.col2{ \div.figure{\img(src="figs/righthand.svg")} @@ -346,48 +354,64 @@ \h3#reg021h{Points in \span.keq{\\mathbb\{E\}^2}} \div#reg021b.blocks{ \div#reg021b1.block.row3.col3{ - \p{\span.kw{Point} in \span.keq{\\mathbb\{E\}^2\\Rightarrow} \span.kw{Vector} \span.keq{\\vec\{x\}\\in \\mathbb\{R\}^2}} - \div.center.keq{\\vec\{x\}\\hspace\{-2px\}=\\hspace\{-2px\}\\begin\{bmatrix\}x_1\\\\x_2\\end\{bmatrix\}} - \p.elevquarter{\span.kw{Vector sum}: \span.keq{\\vec\{z\}=\\vec\{x\}\\hspace\{-2px\}+\\hspace\{-2px\}\\vec\{y\}\\hspace\{-2px\}=\\hspace\{-4px\}\\begin\{bmatrix\}\\hspace\{-4px\}x_1\\hspace\{-2px\}+\\hspace\{-2px\}y_1\\hspace\{-5px\}\\\\\\hspace\{-4px\}x_2\\hspace\{-2px\}+\\hspace\{-2px\}y_2\\hspace\{-5px\}\\end\{bmatrix\}}} - \p.elevquarter{\span.kw{Scalar multiple}: \span.keq{c\\vec\{x\}=\\begin\{bmatrix\}cx_1\\\\cx_2\\end\{bmatrix\}}} - \p{\span.kw{Linear combination}:} - \div.eq.keq{\\vec\{z\}=c_1\\vec\{x\}+c_2\\vec\{y\}=\\begin\{bmatrix\}c_1x_1+c_2y_1\\\\c_1x_2+c_2y_2\\end\{bmatrix\}} - \p{\span.kw{Scalar (or dot) product}:} - \div.eq.keq{\\vec\{x\}\\cdot \\vec\{y\} = \\vec\{x\}^T\\vec\{y\} = x_1y_1+x_2y_2} - \p{\span.kw{Vector norm (or length)}:} - \div.eq.keq{\\|\\vec\{x\}\\|=(\\vec\{x\}\\cdot \\vec\{x\})^\\frac\{1\}\{2\}=\\sqrt\{x_1^2+x_2^2\}} - - \p{\span.kw{Unit vector}: \span.keq{\\hat\{x\}=\\displaystyle\\frac\{\\vec\{x\}\}\{\\|\\vec\{x\}\\|\}, \\|\\hat\{x\}\\|=1}} + \p{\span.kw{Point} in \span.keq{\\mathbb\{E\}^2\\Rightarrow} \span#reg021b1ptvt{\span.kw{Vector} \span.keq{\\vec\{x\}\\in \\mathbb\{R\}^2}}} + \div#reg021b1vtx.center.keq{\\vec\{x\}\\hspace\{-2px\}=\\hspace\{-2px\}\\begin\{bmatrix\}x_1\\\\x_2\\end\{bmatrix\}} + \p#reg021b1vtsum.elevquarter{\span.kw{Vector sum}: \span.keq{\\vec\{z\}=\\vec\{x\}\\hspace\{-2px\}+\\hspace\{-2px\}\\vec\{y\}\\hspace\{-2px\}=\\hspace\{-4px\}\\begin\{bmatrix\}\\hspace\{-4px\}x_1\\hspace\{-2px\}+\\hspace\{-2px\}y_1\\hspace\{-5px\}\\\\\\hspace\{-4px\}x_2\\hspace\{-2px\}+\\hspace\{-2px\}y_2\\hspace\{-5px\}\\end\{bmatrix\}}} + \p#reg021b1vtmult.elevquarter{\span.kw{Scalar multiple}: \span.keq{c\\vec\{x\}=\\begin\{bmatrix\}cx_1\\\\cx_2\\end\{bmatrix\}}} + \div#reg021b1vtcomb{ + \p{\span.kw{Linear combination}:} + \div.eq.keq{\\vec\{z\}=c_1\\vec\{x\}+c_2\\vec\{y\}=\\begin\{bmatrix\}c_1x_1+c_2y_1\\\\c_1x_2+c_2y_2\\end\{bmatrix\}} + } + \div#reg021b1vtdot{ + \p{\span.kw{Scalar (or dot) product}:} + \div.eq.keq{\\vec\{x\}\\cdot \\vec\{y\} = \\vec\{x\}^T\\vec\{y\} = x_1y_1+x_2y_2} + } + \div#reg021b1vtnorm{ + \p{\span.kw{Vector norm (or length)}:} + \div.eq.keq{\\|\\vec\{x\}\\|=(\\vec\{x\}\\cdot \\vec\{x\})^\\frac\{1\}\{2\}=\\sqrt\{x_1^2+x_2^2\}} + } + \p#reg021b1vtunit{\span.kw{Unit vector}: \span.keq{\\hat\{x\}=\\displaystyle\\frac\{\\vec\{x\}\}\{\\|\\vec\{x\}\\|\}, \\|\\hat\{x\}\\|=1}} } \div#reg021b2.block.col3.row2.full{ \svg.full{ \line(x1="0" y1="80%" x2="95%" y2="80%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke") \line(x1="20%" y1="100%" x2="20%" y2="10" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke") - \line(x1="20%" y1="80%" x2="60%" y2="70%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke") - \line(x1="20%" y1="68%" x2="63%" y2="68%" stroke="#999" stroke-width="1" stroke-dasharray="4") - \line(x1="63%" y1="80%" x2="63%" y2="68%" stroke="#999" stroke-width="1" stroke-dasharray="4") - - \line(x1="20%" y1="80%" x2="80%" y2="65%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke") + \g#reg021b2vx{ + \line(x1="20%" y1="80%" x2="60%" y2="70%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke") + \foreignObject(x="55%" y="72%"){\span.keq{\\vec\{x\}}} + + \g#reg021b2vxc{ + \line(x1="20%" y1="68%" x2="63%" y2="68%" stroke="#999" stroke-width="1" stroke-dasharray="4") + \line(x1="63%" y1="80%" x2="63%" y2="68%" stroke="#999" stroke-width="1" stroke-dasharray="4") + \foreignObject(x="58%" y="80%"){\span.keq{x_1}} + \foreignObject(x="18%" y="65%"){\span.keq.fltr{x_2}} + } + + } + \g#reg021b2vy{ + \line(x1="20%" y1="80%" x2="35%" y2="50%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke") + \foreignObject(x="28%" y="45%"){\span.keq{\\vec\{y\}}} + \line(x1="37%" y1="48%" x2="77%" y2="38%" stroke="#666" stroke-dasharray="4" stroke-width="1" vector-effect="non-scaling-stroke") + \line(x1="63%" y1="68%" x2="78%" y2="38%" stroke="#666" fill="#666" stroke-width="1" stroke-dasharray="4" vector-effect="non-scaling-stroke") + \line(x1="20%" y1="80%" x2="75%" y2="40%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke") + \foreignObject(x="36%" y="48%" width="100%" transform="rotate(-42)" transform-origin="50% 50%"){\div.keq{\\vec\{x\}+\\vec\{y\}}} + } - \line(x1="20%" y1="80%" x2="35%" y2="50%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke") - + \g#reg021b2cvx{ + \line(x1="20%" y1="80%" x2="80%" y2="65%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke") + \foreignObject(x="75%" y="68%"){\span.keq{c\\vec\{x\}}} + } - \line(x1="37%" y1="48%" x2="77%" y2="38%" stroke="#666" stroke-dasharray="4" stroke-width="1" vector-effect="non-scaling-stroke") - \line(x1="63%" y1="68%" x2="78%" y2="38%" stroke="#666" fill="#666" stroke-width="1" stroke-dasharray="4" vector-effect="non-scaling-stroke") - \line(x1="20%" y1="80%" x2="75%" y2="40%" stroke="#000" stroke-width="1" marker-end="url(#arrow)" vector-effect="non-scaling-stroke") - \foreignObject(x="55%" y="72%"){\span.keq{\\vec\{x\}}} - \foreignObject(x="75%" y="68%"){\span.keq{c\\vec\{x\}}} - \foreignObject(x="36%" y="48%" width="100%" transform="rotate(-42)" transform-origin="50% 50%"){\div.keq{\\vec\{x\}+\\vec\{y\}}} - \foreignObject(x="28%" y="45%"){\span.keq{\\vec\{y\}}} - \foreignObject(x="58%" y="80%"){\span.keq{x_1}} - \foreignObject(x="18%" y="65%"){\span.keq.fltr{x_2}} } } \div#reg021b3.block.col2{ \div.figure{\img(src="figs/placeholder.svg")} } - \div#reg021b4.block.col4.row2{ + \div#reg021b4.block.col2{ + \div.figure{\img(src="figs/placeholder.svg")} + } + \div#reg021b5.block.col4.row2{ \p{\b{Scalar product and angles} (\span.keq{\\theta=\\angle(\\vec\{x\}, \\vec\{y\})}): } \div.keq.eq{\\vec\{x\}\\cdot \\vec\{y\} = \\|\\vec\{x\}\\|\\|\\vec\{y\}\\|\\cos\\theta} \p{\span.kw{Perpendicularity} (\span.kw{Orthogonality}):} @@ -401,10 +425,6 @@ } } - \div#reg021b5.block.col2{ - \div.figure{\img(src="figs/placeholder.svg")} - \div.figcaption{Left hand system} - } \div#reg021b6.block.col2{ \div.figure{\img(src="figs/placeholder.svg")} \div.figcaption{Left hand system} @@ -417,6 +437,10 @@ \div.figure{\img(src="figs/placeholder.svg")} \div.figcaption{Left hand system} } + \div#reg021b9.block.col2{ + \div.figure{\img(src="figs/placeholder.svg")} + \div.figcaption{Left hand system} + } } \h3.hidden{Lines in \span.keq{\\mathbb\{E\}^2}} \div.blocks.hidden{ @@ -985,8 +1009,7 @@ \p{\span.kw{Projective Plane}: \span.keq{\\mathbb\{P\}^2}} \p.center{\span.keq{\\mathbb\{E\}^2\\cup} set of points at infinity} } - \div.block{} - + \div.block.col2.row2{ \div.figure{\img(src="figs/placeholder.svg")} \div.figcaption{Parallel lines and point at infinity} diff --git a/tsbb06.ts b/tsbb06.ts index 6560f2d..dab1845 100644 --- a/tsbb06.ts +++ b/tsbb06.ts @@ -35,11 +35,34 @@ document.addEventListener("DOMContentLoaded", () => { var kFormula = document.querySelectorAll(".keq"); [].forEach.call(kFormula, kFormulai => katex.render(kFormulai.innerHTML.replace(/&/g, '&'), kFormulai)); - var reg02b=document.getElementById("reg021b"); + // var reg02b=document.getElementById("reg021b"); var reg02b1=document.getElementById("reg02b1"); var reg02b2=document.getElementById("reg02b2"); var reg02b3=document.getElementById("reg02b3"); var reg02b4=document.getElementById("reg02b4"); + var reg02b1axis2=document.getElementById("reg02b1axis2"); + var reg02b1axis1=document.getElementById("reg02b1axis1"); + var reg02b1axes=document.getElementById("reg02b1axes"); + var reg02b1o=document.getElementById("reg02b1o"); + var reg02b1pt=document.getElementById("reg02b1pt"); + var reg02b1ptax1=document.getElementById("reg02b1ptax1"); + var reg02b1axis2lbl1=document.getElementById("reg02b1axis2lbl1"); + var reg02b1axis2lbl2=document.getElementById("reg02b1axis2lbl2"); + var reg02b1axis2lbl3=document.getElementById("reg02b1axis2lbl3"); + var reg02b1axis2lbl4=document.getElementById("reg02b1axis2lbl4"); + var reg021b1ptvt=document.getElementById("reg021b1ptvt"); + var reg021b1vtx=document.getElementById("reg021b1vtx"); + var reg021b2vx=document.getElementById("reg021b2vx"); + var reg021b1vtsum=document.getElementById("reg021b1vtsum"); + var reg021b2vy=document.getElementById("reg021b2vy"); + var reg021b2vxc=document.getElementById("reg021b2vxc"); + var reg021b2cvx=document.getElementById("reg021b2cvx"); + var reg021b1vtmult=document.getElementById("reg021b1vtmult"); + var reg021b1vtcomb=document.getElementById("reg021b1vtcomb"); + var reg021b1vtdot=document.getElementById("reg021b1vtdot"); + var reg021b1vtnorm=document.getElementById("reg021b1vtnorm"); + var reg021b1vtunit=document.getElementById("reg021b1vtunit"); + var reg021h=document.getElementById("reg021h"); var reg021b=document.getElementById("reg021b"); var reg021b1=document.getElementById("reg021b1"); @@ -55,16 +78,29 @@ document.addEventListener("DOMContentLoaded", () => { var scrubber = new Scrubber("scrubber-touch", "scrubber-cur"); scrubber.activate(); var times = [ - [1000, 0], [1000, 1000], [1000, 2000], [1000, 3000], [1000, 4000], - [1000, 5000], [1000, 6000], [1000, 7000], [1000, 8000], [1000, 9000], [1000, 10000], [1000, 11000], [1000, 12000], [1000, 13000], [1000, 14000], + // 1 2 3 4 5 6 7 8 9 10 11 12 13 + /* REG 02 */ [500, 0], [500, 500], [500, 1000], [500, 1500], [500, 2000], [500, 2500], [500, 2500], [500, 2500], [500, 2500], [500, 2500], [500, 3000], [500, 3500], [500, 4000], + // 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + /* REG 02 B */ [500, 4500], [500, 4500], [500, 4500], [500, 5000], [500, 5000], [500, 5000], [500, 5500], [500, 5500], [500, 5500], [500, 6000], [500, 6000], [500, 6500], [500, 7000], [500, 7500], [500, 8000], [500, 6500], [500, 7500], [500, 8500], [500, 10000], [500, 13000], [500, 14000], ]; + var fx = [ + // 1 2 3 4 5 6 7 8 9 10 11 12 13 + fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, + // 1 2 3 4 5 6 7 8 9 10 11 12 13 + fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeOut, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, fadeIn, + ] + var effects:KeyframeEffect[] = []; - var items = [reg02b, reg02b1, reg02b2, reg02b3, reg02b4, reg021h, reg021b, reg021b1, reg021b2, reg021b3, reg021b4, reg021b5, reg021b6, reg021b7, reg021b8]; + var items = [ + // 1 2 3 4 5 6 7 8 9 10 11 12 13 + reg02b1, reg02b1o, reg02b1axes, reg02b1pt, reg02b1ptax1, reg02b1axis2, reg02b1axis2lbl1, reg02b1axis2lbl2, reg02b1axis2lbl3, reg02b1axis2lbl4, reg02b2, reg02b3, reg02b4, + // 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 + reg021h, reg021b1, reg021b2, reg021b1ptvt, reg021b2vx, reg021b1vtx, reg021b1vtsum, reg021b2vy, reg021b2vxc, reg021b2cvx, reg021b1vtmult, reg021b1vtcomb, reg021b1vtdot, reg021b1vtnorm, reg021b1vtunit, reg021b3, reg021b4, reg021b5, reg021b6, reg021b7, reg021b8]; var total = 15000; for(let i=0; i < items.length; i++) { - effects.push(new KeyframeEffect(items[i], fadeIn, {duration: times[i][0], easing:"ease-in-out", delay: times[i][1], endDelay: total-(times[i][1]+times[i][0]), fill: "both"})); + effects.push(new KeyframeEffect(items[i], fx[i], {duration: times[i][0], easing:"ease-in-out", delay: times[i][1], endDelay: total-(times[i][1]+times[i][0]), fill: "both"})); } - scrubber.pauses=[0, 1000, 2000, 3000, 4000, 5000]; + scrubber.pauses=[0, 500, 1000, 1500, 2000, 2500, 3000, 3500, 4000, 4500, 5000, 5500, 6000, 6500, 7000, 7500, 8000, 8500, 9000, 9500, 10000, 10500, 11000, 11500, 12000, 12500, 13000, 13500, 14000, 14500, 15000, 15500, 16000, 16500, 17000, 17500, 18000, 18500, 19000, 19500]; scrubber.animations=effects.map(effect => new Animation(effect, document.timeline)); scrubber.time_max = 10000; scrubber.playForwards(); -- GitLab