Просмотр исходного кода

waterAnalysisSharingEnginePush water.js 李欣儒 commit at 2020-12-02

李欣儒 4 лет назад
Родитель
Сommit
5d0e7f902a
1 измененных файлов с 82 добавлено и 0 удалено
  1. 82 0
      waterAnalysisSharingEnginePush/externalJs/water.js

+ 82 - 0
waterAnalysisSharingEnginePush/externalJs/water.js

@@ -69,3 +69,85 @@ function getListData(queryParam = {}) {
                     // 计算高亮效果的放大比例(未高亮,则比例为 1)
                     let hoverRate = isHovered ? 1.05 : 1;
 
+                    // 返回曲面参数方程
+                    return {
+
+                        u: {
+                            min: -Math.PI,
+                            max: Math.PI * 3,
+                            step: Math.PI / 32
+                        },
+
+                        v: {
+                            min: 0,
+                            max: Math.PI * 2,
+                            step: Math.PI / 20
+                        },
+
+                        x: function(u, v) {
+                            if (u < startRadian) {
+                                return offsetX + Math.cos(startRadian) * (1 + Math.cos(v) * k) * hoverRate;
+                            }
+                            if (u > endRadian) {
+                                return offsetX + Math.cos(endRadian) * (1 + Math.cos(v) * k) * hoverRate;
+                            }
+                            return offsetX + Math.cos(u) * (1 + Math.cos(v) * k) * hoverRate;
+                        },
+
+                        y: function(u, v) {
+                            if (u < startRadian) {
+                                return offsetY + Math.sin(startRadian) * (1 + Math.cos(v) * k) * hoverRate;
+                            }
+                            if (u > endRadian) {
+                                return offsetY + Math.sin(endRadian) * (1 + Math.cos(v) * k) * hoverRate;
+                            }
+                            return offsetY + Math.sin(u) * (1 + Math.cos(v) * k) * hoverRate;
+                        },
+
+                        z: function(u, v) {
+                            if (u < -Math.PI * 0.5) {
+                                return Math.sin(u);
+                            }
+                            if (u > Math.PI * 2.5) {
+                                return Math.sin(u);
+                            }
+                            return Math.sin(v) > 0 ? 1 : -1;
+                        }
+                    };
+                }
+
+                // 生成模拟 3D 饼图的配置项
+                function getPie3D(pieData, internalDiameterRatio) {
+
+                    let series = [];
+                    let sumValue = 0;
+                    let startValue = 0;
+                    let endValue = 0;
+                    let legendData = [];
+                    let k = typeof internalDiameterRatio !== 'undefined' ? (1 - internalDiameterRatio) / (1 + internalDiameterRatio) : 1 / 3;
+
+                    // 为每一个饼图数据,生成一个 series-surface 配置
+                    for (let i = 0; i < pieData.length; i++) {
+
+                        sumValue += pieData[i].value;
+
+                        let seriesItem = {
+                            name: typeof pieData[i].name === 'undefined' ? `series${i}` : pieData[i].name,
+                            type: 'surface',
+                            parametric: true,
+                            wireframe: {
+                                show: false
+                            },
+                            pieData: pieData[i],
+                            pieStatus: {
+                                selected: false,
+                                hovered: false,
+                                k: k
+                            }
+                        };
+
+                        if (typeof pieData[i].itemStyle != 'undefined') {
+
+                            let itemStyle = {};
+
+                            typeof pieData[i].itemStyle.color != 'undefined' ? itemStyle.color = pieData[i].itemStyle.color : null;