|  | @@ -1,274 +0,0 @@
 | 
	
		
			
				|  |  | -<template>
 | 
	
		
			
				|  |  | -  <div style="color:#fff">
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | -    <div ref="vtkContainer" />
 | 
	
		
			
				|  |  | -   <!-- <my-leftfloat/> -->
 | 
	
		
			
				|  |  | -   <div class="tool">
 | 
	
		
			
				|  |  | -     <div class="img" v-for="(item,index) in listArray" :key="index" @click="add(item.id)"><el-image :src="item.img" fit="cover"  /><span>{{item.name}}</span></div>  
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -   <div class="left_container" >
 | 
	
		
			
				|  |  | - 
 | 
	
		
			
				|  |  | -     <div class="leftdialong"  v-show="dialogVisible">
 | 
	
		
			
				|  |  | -          
 | 
	
		
			
				|  |  | -           <div class="time" > 当前时间:00.02.00</div>
 | 
	
		
			
				|  |  | -           <el-form-item
 | 
	
		
			
				|  |  | -          label="动画开始"
 | 
	
		
			
				|  |  | -          v-model="starttime"
 | 
	
		
			
				|  |  | -        >
 | 
	
		
			
				|  |  | -          <el-input
 | 
	
		
			
				|  |  | -            v-model="num"
 | 
	
		
			
				|  |  | -            autocomplete="off"
 | 
	
		
			
				|  |  | -          ></el-input>
 | 
	
		
			
				|  |  | -        </el-form-item>
 | 
	
		
			
				|  |  | -         <el-form-item
 | 
	
		
			
				|  |  | -          label="动画结束"
 | 
	
		
			
				|  |  | -           v-model="endtime"
 | 
	
		
			
				|  |  | -        >
 | 
	
		
			
				|  |  | -          <el-input
 | 
	
		
			
				|  |  | -            v-model="num"
 | 
	
		
			
				|  |  | -            autocomplete="off"
 | 
	
		
			
				|  |  | -          ></el-input>
 | 
	
		
			
				|  |  | -        </el-form-item>
 | 
	
		
			
				|  |  | -       <div class="itemlist">
 | 
	
		
			
				|  |  | -           <div class="item">播  放</div>
 | 
	
		
			
				|  |  | -            <div class="item">暂  停</div>
 | 
	
		
			
				|  |  | -            <div class="item">上一分钟</div>
 | 
	
		
			
				|  |  | -            <div class="item">下一分钟</div>
 | 
	
		
			
				|  |  | -       </div>
 | 
	
		
			
				|  |  | -         <div  class="dialog-footer">
 | 
	
		
			
				|  |  | -    <el-button @click="dialogVisible = false">取 消</el-button>
 | 
	
		
			
				|  |  | -    <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
 | 
	
		
			
				|  |  | -  </div >
 | 
	
		
			
				|  |  | -     </div>
 | 
	
		
			
				|  |  | - </div>
 | 
	
		
			
				|  |  | - </div>
 | 
	
		
			
				|  |  | - <!-- 内容 -->
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  </div>
 | 
	
		
			
				|  |  | -</template>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -<script>
 | 
	
		
			
				|  |  | -import p1 from '@/assets/img/u3479.png'
 | 
	
		
			
				|  |  | -import p2 from '@/assets/img/u10068.png'
 | 
	
		
			
				|  |  | -import p3 from '@/assets/img/12.png'
 | 
	
		
			
				|  |  | -import p4 from '@/assets/img/u3883.png'
 | 
	
		
			
				|  |  | -import p5 from '@/assets/img/u3405.png'
 | 
	
		
			
				|  |  | -import * as d3 from 'd3-scale';
 | 
	
		
			
				|  |  | -import { formatDefaultLocale } from 'd3-format';
 | 
	
		
			
				|  |  | -import { onMounted,ref,reactive } from 'vue';
 | 
	
		
			
				|  |  | -import '@kitware/vtk.js/Rendering/Profiles/Geometry';
 | 
	
		
			
				|  |  | -import vtkFullScreenRenderWindow from '@kitware/vtk.js/Rendering/Misc/FullScreenRenderWindow';
 | 
	
		
			
				|  |  | -import vtkActor           from '@kitware/vtk.js/Rendering/Core/Actor';
 | 
	
		
			
				|  |  | -import vtkMapper          from '@kitware/vtk.js/Rendering/Core/Mapper';
 | 
	
		
			
				|  |  | -import vtkUnstructuredDataReader from '../reader/UnstructuredDataReader.js';
 | 
	
		
			
				|  |  | -import vtkScalarBarActor from '@kitware/vtk.js/Rendering/Core/ScalarBarActor';
 | 
	
		
			
				|  |  | -import vtkLookupTable from '@kitware/vtk.js/Common/Core/LookupTable';
 | 
	
		
			
				|  |  | -import vtkDataArray from '@kitware/vtk.js/Common/Core/DataArray.js';
 | 
	
		
			
				|  |  | -import vtkColorTransferFunction from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction';
 | 
	
		
			
				|  |  | -import myleftfloat from './myHelloleft.vue'
 | 
	
		
			
				|  |  | -export default {
 | 
	
		
			
				|  |  | -  name: 'HelloWorld',
 | 
	
		
			
				|  |  | -    components: {
 | 
	
		
			
				|  |  | -    // myleftfloat, 
 | 
	
		
			
				|  |  | -  },
 | 
	
		
			
				|  |  | -  //体制
 | 
	
		
			
				|  |  | -  setup() {
 | 
	
		
			
				|  |  | -    //安装时
 | 
	
		
			
				|  |  | -    let time=3*60
 | 
	
		
			
				|  |  | -    let listArray=reactive([
 | 
	
		
			
				|  |  | -      {id:0,img:p1,name:'灾情演化'},
 | 
	
		
			
				|  |  | -      {id:1,img:p2,name:'演化过程'},
 | 
	
		
			
				|  |  | -      {id:2,img:p3,name:'动画'},
 | 
	
		
			
				|  |  | -      {id:3,img:p4,name:'日志'},
 | 
	
		
			
				|  |  | -      ]);
 | 
	
		
			
				|  |  | -      let dialogVisible=ref(false);
 | 
	
		
			
				|  |  | -      let num=ref(4)
 | 
	
		
			
				|  |  | -      let starttime=ref(5);
 | 
	
		
			
				|  |  | -      let endtime=ref(60);
 | 
	
		
			
				|  |  | -    function  add(id){
 | 
	
		
			
				|  |  | -      if(id==2){
 | 
	
		
			
				|  |  | -       dialogVisible.value=true
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -    onMounted(() => {
 | 
	
		
			
				|  |  | -     const fullScreenRenderer = vtkFullScreenRenderWindow.newInstance();
 | 
	
		
			
				|  |  | -      const renderer = fullScreenRenderer.getRenderer();
 | 
	
		
			
				|  |  | -      const renderWindow = fullScreenRenderer.getRenderWindow();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      const resetCamera = renderer.resetCamera;
 | 
	
		
			
				|  |  | -      const render = renderWindow.render;
 | 
	
		
			
				|  |  | -              
 | 
	
		
			
				|  |  | -      const mapper = vtkMapper.newInstance();
 | 
	
		
			
				|  |  | -      const actor = vtkActor.newInstance();
 | 
	
		
			
				|  |  | -      const reader = vtkUnstructuredDataReader.newInstance();
 | 
	
		
			
				|  |  | -      const scalarName ="Pressure";
 | 
	
		
			
				|  |  | -      
 | 
	
		
			
				|  |  | -      var scalars;
 | 
	
		
			
				|  |  | -      reader.setUrl('data/Fire/POST0.vtk').then(() => {
 | 
	
		
			
				|  |  | -          const polydata = reader.getOutputData(0);        
 | 
	
		
			
				|  |  | -           scalars = reader.getOutputData(1);    
 | 
	
		
			
				|  |  | -          const scalarArray=scalars.get(scalarName);
 | 
	
		
			
				|  |  | -          const dataArray = vtkDataArray.newInstance({
 | 
	
		
			
				|  |  | -            name:scalarName,
 | 
	
		
			
				|  |  | -            size:polydata.getNumberOfPoints()
 | 
	
		
			
				|  |  | -          });
 | 
	
		
			
				|  |  | -          dataArray.setData(scalarArray);
 | 
	
		
			
				|  |  | -          polydata.getPointData().setScalars(dataArray); 
 | 
	
		
			
				|  |  | -          actor.setMapper(mapper);
 | 
	
		
			
				|  |  | -          mapper.setInputData(polydata);
 | 
	
		
			
				|  |  | -          renderer.addActor(actor);
 | 
	
		
			
				|  |  | -          let lut = mapper.getLookupTable();
 | 
	
		
			
				|  |  | -          const scalarBarActor = vtkScalarBarActor.newInstance();
 | 
	
		
			
				|  |  | -          renderer.addActor(scalarBarActor);
 | 
	
		
			
				|  |  | -          scalarBarActor.setScalarsToColors(lut);
 | 
	
		
			
				|  |  | -          console.log("lut:",lut.getRange());    
 | 
	
		
			
				|  |  | -          // Change the number of ticks (TODO: add numberOfTicks to ScalarBarActor)
 | 
	
		
			
				|  |  | -          function generateTicks(numberOfTicks) {
 | 
	
		
			
				|  |  | -            return (helper) => {
 | 
	
		
			
				|  |  | -              const lastTickBounds = helper.getLastTickBounds();
 | 
	
		
			
				|  |  | -              // compute tick marks for axes
 | 
	
		
			
				|  |  | -              const scale = d3
 | 
	
		
			
				|  |  | -                .scaleLinear()
 | 
	
		
			
				|  |  | -                .domain([0.0, 1.0])
 | 
	
		
			
				|  |  | -                .range([lastTickBounds[0], lastTickBounds[1]]);
 | 
	
		
			
				|  |  | -              const samples = scale.ticks(numberOfTicks);
 | 
	
		
			
				|  |  | -              const ticks = samples.map((tick) => scale(tick));
 | 
	
		
			
				|  |  | -              // Replace minus "\u2212" with hyphen-minus "\u002D" so that parseFloat() works
 | 
	
		
			
				|  |  | -              formatDefaultLocale({ minus: '\u002D' });
 | 
	
		
			
				|  |  | -              const format = scale.tickFormat(
 | 
	
		
			
				|  |  | -                ticks[0],
 | 
	
		
			
				|  |  | -                ticks[ticks.length - 1],
 | 
	
		
			
				|  |  | -                numberOfTicks
 | 
	
		
			
				|  |  | -              );
 | 
	
		
			
				|  |  | -              const tickStrings = ticks
 | 
	
		
			
				|  |  | -                .map(format)
 | 
	
		
			
				|  |  | -                .map((tick) => Number(parseFloat(tick).toPrecision(12)).toPrecision()); // d3 sometimes adds unwanted whitespace
 | 
	
		
			
				|  |  | -              helper.setTicks(ticks);
 | 
	
		
			
				|  |  | -              helper.setTickStrings(tickStrings);
 | 
	
		
			
				|  |  | -           };     
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -          scalarBarActor.setGenerateTicks(generateTicks(5));
 | 
	
		
			
				|  |  | -          scalarBarActor.setAxisLabel(scalarName);
 | 
	
		
			
				|  |  | -          scalarBarActor.setDrawAboveRangeSwatch(true);
 | 
	
		
			
				|  |  | -          const ctf = vtkColorTransferFunction.newInstance();
 | 
	
		
			
				|  |  | -          ctf.addRGBPoint(0.0, 0.0, 0.0, 1.0);
 | 
	
		
			
				|  |  | -          ctf.addRGBPoint(1.0, 1.0, 0.0, 0.0);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -          mapper.setLookupTable(ctf);
 | 
	
		
			
				|  |  | -          lut = mapper.getLookupTable();
 | 
	
		
			
				|  |  | -          scalarBarActor.setScalarsToColors(lut);
 | 
	
		
			
				|  |  | -          resetCamera();
 | 
	
		
			
				|  |  | -          render();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        for (let index = 1; index <= 60; index++) {
 | 
	
		
			
				|  |  | -          var flag =true;
 | 
	
		
			
				|  |  | -          while(flag){
 | 
	
		
			
				|  |  | -            flag=false;
 | 
	
		
			
				|  |  | -              const reader = vtkUnstructuredDataReader.newInstance();
 | 
	
		
			
				|  |  | -              reader.setUrl('data/Fire/POST'+index+'.vtk').then(() => {
 | 
	
		
			
				|  |  | -                console.log("index:",index);
 | 
	
		
			
				|  |  | -                const polydata = mapper.getInputData();    
 | 
	
		
			
				|  |  | -                // console.log("polydata:",polydata);
 | 
	
		
			
				|  |  | -                const scalars = reader.getOutputData(1);
 | 
	
		
			
				|  |  | -                // console.log("scalars:",scalars);        
 | 
	
		
			
				|  |  | -                const scalarArray=scalars.get(scalarName);
 | 
	
		
			
				|  |  | -                  // console.log("polydata.getNumberOfPoints():",polydata.getNumberOfPoints());        
 | 
	
		
			
				|  |  | -                const dataArray = vtkDataArray.newInstance({
 | 
	
		
			
				|  |  | -                  name:scalarName,
 | 
	
		
			
				|  |  | -                  size:polydata.getNumberOfPoints()
 | 
	
		
			
				|  |  | -                });
 | 
	
		
			
				|  |  | -                dataArray.setData(scalarArray);
 | 
	
		
			
				|  |  | -                polydata.getPointData().setScalars(dataArray); 
 | 
	
		
			
				|  |  | -                // mapper.setInputData(polydata);
 | 
	
		
			
				|  |  | -                renderWindow.render();
 | 
	
		
			
				|  |  | -                flag=true;
 | 
	
		
			
				|  |  | -              });
 | 
	
		
			
				|  |  | -          }  
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | -      });
 | 
	
		
			
				|  |  | -     
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      renderWindow.render();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | -    return{listArray,add,num,dialogVisible,starttime,endtime
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -</script>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -<style scoped>
 | 
	
		
			
				|  |  | -.controls {
 | 
	
		
			
				|  |  | -  position: absolute;
 | 
	
		
			
				|  |  | -  top: 25px;
 | 
	
		
			
				|  |  | -  left: 25px;
 | 
	
		
			
				|  |  | -  background: white;
 | 
	
		
			
				|  |  | -  padding: 12px;
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -.haha{
 | 
	
		
			
				|  |  | -  color: #fff;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -.tool{
 | 
	
		
			
				|  |  | -  position: fixed;
 | 
	
		
			
				|  |  | -  top: 50px;
 | 
	
		
			
				|  |  | -  left: 20px;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  z-index:999999;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -.img{
 | 
	
		
			
				|  |  | -  width: 48px;
 | 
	
		
			
				|  |  | -margin: -6px 0;
 | 
	
		
			
				|  |  | -  padding: 8px 10px;
 | 
	
		
			
				|  |  | -  background-color:rgba(255, 255, 255, 0.1);
 | 
	
		
			
				|  |  | -  font-size: 12px;
 | 
	
		
			
				|  |  | -  transform: scale(0.9);
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -.img span{
 | 
	
		
			
				|  |  | -  display: inline-block;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -.img .el-image{
 | 
	
		
			
				|  |  | -  width: 34px;
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -.leftdialong{
 | 
	
		
			
				|  |  | -  padding: 15px;
 | 
	
		
			
				|  |  | - width: 300px;
 | 
	
		
			
				|  |  | -border: 1px solid;
 | 
	
		
			
				|  |  | -position: relative;
 | 
	
		
			
				|  |  | -top: -248px;
 | 
	
		
			
				|  |  | -left: 67px; 
 | 
	
		
			
				|  |  | -border-radius: 5px;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -/deep/ .leftdialong .el-form-item__label{
 | 
	
		
			
				|  |  | -font-size: 12px;
 | 
	
		
			
				|  |  | -color: #fff !important;
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -.time{
 | 
	
		
			
				|  |  | -  font-size: 12px;
 | 
	
		
			
				|  |  | -  margin-bottom: 30px;
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -.itemlist{
 | 
	
		
			
				|  |  | -  display: flex;
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -.item{
 | 
	
		
			
				|  |  | -  background-color: rgba(255, 255, 255, 0.1);
 | 
	
		
			
				|  |  | -  margin: 5px;
 | 
	
		
			
				|  |  | -  padding:5px 9px;
 | 
	
		
			
				|  |  | -border-radius: 5px;
 | 
	
		
			
				|  |  | -font-size: 14px;
 | 
	
		
			
				|  |  | -  transform: scale(0.8);
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -.dialog-footer{
 | 
	
		
			
				|  |  | -  margin-top: 30px;
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -</style>
 |