UNPKG

cione-comp-lib

Version:

`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`

149 lines (148 loc) 4.77 kB
import "../../../../echarts/lib/echarts.mjs"; import componentShadingMixin from "../../component/common/componentShadingMixin.mjs"; import formatTooltip from "../common/formatTooltip.mjs"; import createList from "../common/createList.mjs"; import SeriesModel from "../../../../echarts/lib/model/Series.mjs"; import { round, getPrecisionSafe } from "../../../../echarts/lib/util/number.mjs"; import { merge } from "../../../../zrender/lib/core/util.mjs"; var SurfaceSeries = SeriesModel.extend({ type: "series.surface", dependencies: ["globe", "grid3D", "geo3D"], visualStyleAccessPath: "itemStyle", formatTooltip: function(dataIndex) { return formatTooltip(this, dataIndex); }, getInitialData: function(option, ecModel) { var data = option.data; function validateDimension(dimOpts) { return !(isNaN(dimOpts.min) || isNaN(dimOpts.max) || isNaN(dimOpts.step)); } function getPrecision(dimOpts) { var getPrecision2 = getPrecisionSafe; return Math.max(getPrecision2(dimOpts.min), getPrecision2(dimOpts.max), getPrecision2(dimOpts.step)) + 1; } if (!data) { if (!option.parametric) { var equation = option.equation || {}; var xOpts = equation.x || {}; var yOpts = equation.y || {}; ["x", "y"].forEach(function(dim) { if (!validateDimension(equation[dim])) { return; } }); if (typeof equation.z !== "function") { return; } var xCount = Math.floor((xOpts.max + xOpts.step - xOpts.min) / xOpts.step); var yCount = Math.floor((yOpts.max + yOpts.step - yOpts.min) / yOpts.step); data = new Float32Array(xCount * yCount * 3); var xPrecision = getPrecision(xOpts); var yPrecision = getPrecision(yOpts); var off = 0; for (var j = 0; j < yCount; j++) { for (var i = 0; i < xCount; i++) { var x = i * xOpts.step + xOpts.min; var y = j * yOpts.step + yOpts.min; var x2 = round(Math.min(x, xOpts.max), xPrecision); var y2 = round(Math.min(y, yOpts.max), yPrecision); var z = equation.z(x2, y2); data[off++] = x2; data[off++] = y2; data[off++] = z; } } } else { var parametricEquation = option.parametricEquation || {}; var uOpts = parametricEquation.u || {}; var vOpts = parametricEquation.v || {}; ["u", "v"].forEach(function(dim) { if (!validateDimension(parametricEquation[dim])) { return; } }); ["x", "y", "z"].forEach(function(dim) { if (typeof parametricEquation[dim] !== "function") { return; } }); var uCount = Math.floor((uOpts.max + uOpts.step - uOpts.min) / uOpts.step); var vCount = Math.floor((vOpts.max + vOpts.step - vOpts.min) / vOpts.step); data = new Float32Array(uCount * vCount * 5); var uPrecision = getPrecision(uOpts); var vPrecision = getPrecision(vOpts); var off = 0; for (var j = 0; j < vCount; j++) { for (var i = 0; i < uCount; i++) { var u = i * uOpts.step + uOpts.min; var v = j * vOpts.step + vOpts.min; var u2 = round(Math.min(u, uOpts.max), uPrecision); var v2 = round(Math.min(v, vOpts.max), vPrecision); var x = parametricEquation.x(u2, v2); var y = parametricEquation.y(u2, v2); var z = parametricEquation.z(u2, v2); data[off++] = x; data[off++] = y; data[off++] = z; data[off++] = u2; data[off++] = v2; } } } } var dims = ["x", "y", "z"]; if (option.parametric) { dims.push("u", "v"); } var list = createList(this, dims, data); return list; }, defaultOption: { coordinateSystem: "cartesian3D", zlevel: -10, grid3DIndex: 0, shading: "lambert", parametric: false, wireframe: { show: true, lineStyle: { color: "rgba(0,0,0,0.5)", width: 1 } }, equation: { x: { min: -1, max: 1, step: 0.1 }, y: { min: -1, max: 1, step: 0.1 }, z: null }, parametricEquation: { u: { min: -1, max: 1, step: 0.1 }, v: { min: -1, max: 1, step: 0.1 }, x: null, y: null, z: null }, dataShape: null, itemStyle: {}, animationDurationUpdate: 500 } }); merge(SurfaceSeries.prototype, componentShadingMixin); var SurfaceSeries$1 = SurfaceSeries; export { SurfaceSeries$1 as default };