UNPKG

bytev-charts

Version:

基于echarts和JavaScript及ES6封装的一个可以直接调用的图表组件库,内置主题设计,简单快捷,且支持用户自定义配置; npm 安装方式: npm install bytev-charts 若启动提示还需额外install插件,则运行 npm install @babel/runtime-corejs2 即可;

298 lines (238 loc) 10.5 kB
import _Object$create from "@babel/runtime-corejs2/core-js/object/create"; console.warn("THREE.CurveExtras: As part of the transition to ES6 Modules, the files in 'examples/js' were deprecated in May 2020 (r117) and will be deleted in December 2020 (r124). You can find more information about developing using ES6 Modules in https://threejs.org/docs/#manual/en/introduction/Installation."); /** * A bunch of parametric curves * * Formulas collected from various sources * http://mathworld.wolfram.com/HeartCurve.html * http://mathdl.maa.org/images/upload_library/23/stemkoski/knots/page6.html * http://en.wikipedia.org/wiki/Viviani%27s_curve * http://mathdl.maa.org/images/upload_library/23/stemkoski/knots/page4.html * http://www.mi.sanu.ac.rs/vismath/taylorapril2011/Taylor.pdf * https://prideout.net/blog/old/blog/index.html@p=44.html */ THREE.Curves = function () { // GrannyKnot function GrannyKnot() { THREE.Curve.call(this); } GrannyKnot.prototype = _Object$create(THREE.Curve.prototype); GrannyKnot.prototype.constructor = GrannyKnot; GrannyKnot.prototype.getPoint = function (t, optionalTarget) { var point = optionalTarget || new THREE.Vector3(); t = 2 * Math.PI * t; var x = -0.22 * Math.cos(t) - 1.28 * Math.sin(t) - 0.44 * Math.cos(3 * t) - 0.78 * Math.sin(3 * t); var y = -0.1 * Math.cos(2 * t) - 0.27 * Math.sin(2 * t) + 0.38 * Math.cos(4 * t) + 0.46 * Math.sin(4 * t); var z = 0.7 * Math.cos(3 * t) - 0.4 * Math.sin(3 * t); return point.set(x, y, z).multiplyScalar(20); }; // HeartCurve function HeartCurve(scale) { THREE.Curve.call(this); this.scale = scale === undefined ? 5 : scale; } HeartCurve.prototype = _Object$create(THREE.Curve.prototype); HeartCurve.prototype.constructor = HeartCurve; HeartCurve.prototype.getPoint = function (t, optionalTarget) { var point = optionalTarget || new THREE.Vector3(); t *= 2 * Math.PI; var x = 16 * Math.pow(Math.sin(t), 3); var y = 13 * Math.cos(t) - 5 * Math.cos(2 * t) - 2 * Math.cos(3 * t) - Math.cos(4 * t); var z = 0; return point.set(x, y, z).multiplyScalar(this.scale); }; // Viviani's Curve function VivianiCurve(scale) { THREE.Curve.call(this); this.scale = scale === undefined ? 70 : scale; } VivianiCurve.prototype = _Object$create(THREE.Curve.prototype); VivianiCurve.prototype.constructor = VivianiCurve; VivianiCurve.prototype.getPoint = function (t, optionalTarget) { var point = optionalTarget || new THREE.Vector3(); t = t * 4 * Math.PI; // normalized to 0..1 var a = this.scale / 2; var x = a * (1 + Math.cos(t)); var y = a * Math.sin(t); var z = 2 * a * Math.sin(t / 2); return point.set(x, y, z); }; // KnotCurve function KnotCurve() { THREE.Curve.call(this); } KnotCurve.prototype = _Object$create(THREE.Curve.prototype); KnotCurve.prototype.constructor = KnotCurve; KnotCurve.prototype.getPoint = function (t, optionalTarget) { var point = optionalTarget || new THREE.Vector3(); t *= 2 * Math.PI; var R = 10; var s = 50; var x = s * Math.sin(t); var y = Math.cos(t) * (R + s * Math.cos(t)); var z = Math.sin(t) * (R + s * Math.cos(t)); return point.set(x, y, z); }; // HelixCurve function HelixCurve() { THREE.Curve.call(this); } HelixCurve.prototype = _Object$create(THREE.Curve.prototype); HelixCurve.prototype.constructor = HelixCurve; HelixCurve.prototype.getPoint = function (t, optionalTarget) { var point = optionalTarget || new THREE.Vector3(); var a = 30; // radius var b = 150; // height var t2 = 2 * Math.PI * t * b / 30; var x = Math.cos(t2) * a; var y = Math.sin(t2) * a; var z = b * t; return point.set(x, y, z); }; // TrefoilKnot function TrefoilKnot(scale) { THREE.Curve.call(this); this.scale = scale === undefined ? 10 : scale; } TrefoilKnot.prototype = _Object$create(THREE.Curve.prototype); TrefoilKnot.prototype.constructor = TrefoilKnot; TrefoilKnot.prototype.getPoint = function (t, optionalTarget) { var point = optionalTarget || new THREE.Vector3(); t *= Math.PI * 2; var x = (2 + Math.cos(3 * t)) * Math.cos(2 * t); var y = (2 + Math.cos(3 * t)) * Math.sin(2 * t); var z = Math.sin(3 * t); return point.set(x, y, z).multiplyScalar(this.scale); }; // TorusKnot function TorusKnot(scale) { THREE.Curve.call(this); this.scale = scale === undefined ? 10 : scale; } TorusKnot.prototype = _Object$create(THREE.Curve.prototype); TorusKnot.prototype.constructor = TorusKnot; TorusKnot.prototype.getPoint = function (t, optionalTarget) { var point = optionalTarget || new THREE.Vector3(); var p = 3; var q = 4; t *= Math.PI * 2; var x = (2 + Math.cos(q * t)) * Math.cos(p * t); var y = (2 + Math.cos(q * t)) * Math.sin(p * t); var z = Math.sin(q * t); return point.set(x, y, z).multiplyScalar(this.scale); }; // CinquefoilKnot function CinquefoilKnot(scale) { THREE.Curve.call(this); this.scale = scale === undefined ? 10 : scale; } CinquefoilKnot.prototype = _Object$create(THREE.Curve.prototype); CinquefoilKnot.prototype.constructor = CinquefoilKnot; CinquefoilKnot.prototype.getPoint = function (t, optionalTarget) { var point = optionalTarget || new THREE.Vector3(); var p = 2; var q = 5; t *= Math.PI * 2; var x = (2 + Math.cos(q * t)) * Math.cos(p * t); var y = (2 + Math.cos(q * t)) * Math.sin(p * t); var z = Math.sin(q * t); return point.set(x, y, z).multiplyScalar(this.scale); }; // TrefoilPolynomialKnot function TrefoilPolynomialKnot(scale) { THREE.Curve.call(this); this.scale = scale === undefined ? 10 : scale; } TrefoilPolynomialKnot.prototype = _Object$create(THREE.Curve.prototype); TrefoilPolynomialKnot.prototype.constructor = TrefoilPolynomialKnot; TrefoilPolynomialKnot.prototype.getPoint = function (t, optionalTarget) { var point = optionalTarget || new THREE.Vector3(); t = t * 4 - 2; var x = Math.pow(t, 3) - 3 * t; var y = Math.pow(t, 4) - 4 * t * t; var z = 1 / 5 * Math.pow(t, 5) - 2 * t; return point.set(x, y, z).multiplyScalar(this.scale); }; var scaleTo = function scaleTo(x, y, t) { var r = y - x; return t * r + x; }; // FigureEightPolynomialKnot function FigureEightPolynomialKnot(scale) { THREE.Curve.call(this); this.scale = scale === undefined ? 1 : scale; } FigureEightPolynomialKnot.prototype = _Object$create(THREE.Curve.prototype); FigureEightPolynomialKnot.prototype.constructor = FigureEightPolynomialKnot; FigureEightPolynomialKnot.prototype.getPoint = function (t, optionalTarget) { var point = optionalTarget || new THREE.Vector3(); t = scaleTo(-4, 4, t); var x = 2 / 5 * t * (t * t - 7) * (t * t - 10); var y = Math.pow(t, 4) - 13 * t * t; var z = 1 / 10 * t * (t * t - 4) * (t * t - 9) * (t * t - 12); return point.set(x, y, z).multiplyScalar(this.scale); }; // DecoratedTorusKnot4a function DecoratedTorusKnot4a(scale) { THREE.Curve.call(this); this.scale = scale === undefined ? 40 : scale; } DecoratedTorusKnot4a.prototype = _Object$create(THREE.Curve.prototype); DecoratedTorusKnot4a.prototype.constructor = DecoratedTorusKnot4a; DecoratedTorusKnot4a.prototype.getPoint = function (t, optionalTarget) { var point = optionalTarget || new THREE.Vector3(); t *= Math.PI * 2; var x = Math.cos(2 * t) * (1 + 0.6 * (Math.cos(5 * t) + 0.75 * Math.cos(10 * t))); var y = Math.sin(2 * t) * (1 + 0.6 * (Math.cos(5 * t) + 0.75 * Math.cos(10 * t))); var z = 0.35 * Math.sin(5 * t); return point.set(x, y, z).multiplyScalar(this.scale); }; // DecoratedTorusKnot4b function DecoratedTorusKnot4b(scale) { THREE.Curve.call(this); this.scale = scale === undefined ? 40 : scale; } DecoratedTorusKnot4b.prototype = _Object$create(THREE.Curve.prototype); DecoratedTorusKnot4b.prototype.constructor = DecoratedTorusKnot4b; DecoratedTorusKnot4b.prototype.getPoint = function (t, optionalTarget) { var point = optionalTarget || new THREE.Vector3(); var fi = t * Math.PI * 2; var x = Math.cos(2 * fi) * (1 + 0.45 * Math.cos(3 * fi) + 0.4 * Math.cos(9 * fi)); var y = Math.sin(2 * fi) * (1 + 0.45 * Math.cos(3 * fi) + 0.4 * Math.cos(9 * fi)); var z = 0.2 * Math.sin(9 * fi); return point.set(x, y, z).multiplyScalar(this.scale); }; // DecoratedTorusKnot5a function DecoratedTorusKnot5a(scale) { THREE.Curve.call(this); this.scale = scale === undefined ? 40 : scale; } DecoratedTorusKnot5a.prototype = _Object$create(THREE.Curve.prototype); DecoratedTorusKnot5a.prototype.constructor = DecoratedTorusKnot5a; DecoratedTorusKnot5a.prototype.getPoint = function (t, optionalTarget) { var point = optionalTarget || new THREE.Vector3(); var fi = t * Math.PI * 2; var x = Math.cos(3 * fi) * (1 + 0.3 * Math.cos(5 * fi) + 0.5 * Math.cos(10 * fi)); var y = Math.sin(3 * fi) * (1 + 0.3 * Math.cos(5 * fi) + 0.5 * Math.cos(10 * fi)); var z = 0.2 * Math.sin(20 * fi); return point.set(x, y, z).multiplyScalar(this.scale); }; // DecoratedTorusKnot5c function DecoratedTorusKnot5c(scale) { THREE.Curve.call(this); this.scale = scale === undefined ? 40 : scale; } DecoratedTorusKnot5c.prototype = _Object$create(THREE.Curve.prototype); DecoratedTorusKnot5c.prototype.constructor = DecoratedTorusKnot5c; DecoratedTorusKnot5c.prototype.getPoint = function (t, optionalTarget) { var point = optionalTarget || new THREE.Vector3(); var fi = t * Math.PI * 2; var x = Math.cos(4 * fi) * (1 + 0.5 * (Math.cos(5 * fi) + 0.4 * Math.cos(20 * fi))); var y = Math.sin(4 * fi) * (1 + 0.5 * (Math.cos(5 * fi) + 0.4 * Math.cos(20 * fi))); var z = 0.35 * Math.sin(15 * fi); return point.set(x, y, z).multiplyScalar(this.scale); }; return { GrannyKnot: GrannyKnot, HeartCurve: HeartCurve, VivianiCurve: VivianiCurve, KnotCurve: KnotCurve, HelixCurve: HelixCurve, TrefoilKnot: TrefoilKnot, TorusKnot: TorusKnot, CinquefoilKnot: CinquefoilKnot, TrefoilPolynomialKnot: TrefoilPolynomialKnot, FigureEightPolynomialKnot: FigureEightPolynomialKnot, DecoratedTorusKnot4a: DecoratedTorusKnot4a, DecoratedTorusKnot4b: DecoratedTorusKnot4b, DecoratedTorusKnot5a: DecoratedTorusKnot5a, DecoratedTorusKnot5c: DecoratedTorusKnot5c }; }();