cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
149 lines (148 loc) • 4.77 kB
JavaScript
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 };