当前位置: 首页 > news >正文

常德 网站建设电工培训机构

常德 网站建设,电工培训机构,网站没备案可以做商城吗,达州高端网站建设文章目录 一、Matplot3D for JAVA V4.0 概述 二、什么是处理器 三、DataGridProcessor处理器 四、基本使用方法 五、举个栗子#xff1a;绘制高程地形图 新版本介绍 v5.0 文章链接 Matplot3D for Java V5.0#xff1a;一个纯JAVA开发的数学科学数据可视化组件#xff… 文章目录 一、Matplot3D for JAVA V4.0 概述 二、什么是处理器 三、DataGridProcessor处理器 四、基本使用方法 五、举个栗子绘制高程地形图 新版本介绍 v5.0  文章链接 Matplot3D for Java V5.0一个纯JAVA开发的数学科学数据可视化组件JAVA 三维绘图可视化图表组件类似matplotlib-CSDN博客文章浏览阅读707次点赞8次收藏9次。在数据科学和工程领域数据可视化是理解和交流复杂信息的关键工具。如果您是一位Java开发者寻找一个强大的、本地化的三维图形绘图库那么Matplot3D for JAVAV5.0值得你关注。该组件旨在为Java开发者提供类似于Python中Matplotlib的三维绘图功能让Java也能轻松绘制出令人印象深刻的3D图形图表。https://blog.csdn.net/tanling8334/article/details/137752605?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22137752605%22%2C%22source%22%3A%22tanling8334%22%7D 一、Matplot3D for JAVA V4.0 概述 Matplot3D for JAVA  是一个基于JAVA SE 1.8环境开发的数学科学数据三维可视化组件。 这是一个纯JAVA实现的类似matplotlib可视化三维库内含纯java实现的3维软引擎封装为一个jar包jar文件大小只有200多KB直接引用即可。无需再安装和配置第三方库或者环境无需依赖OpenGL、DriectX、JAVA 3D或JAVAFX等等。 下载地址  码云        https://gitee.com/tanling8334/Matplot3D-for-Java Github    https://github.com/tanling8334/Matplot3D-for-Java 二、什么是处理器 Matplot3D for JAVA 的处理器Processor是一类对象它们的作用是将数据转换成对应图表的三维模型负责数据处理和建模无需使用者直接编写具体模型的代码只需要将数据加入到处理器中再通过Matplot3D4JMgr对象将图表直接在绘制到界面上或者输出为图像文件即可。一个Matplot3D4JMgr对象可以“持有”多个不同类型的处理器对象。 三、DataGridProcessor处理器 DataGridProcessor是数据网格处理器可以绘制连续的曲面。数据网格是指一个在xy方向都均匀排列的点阵列。使用一个Double[][]表示数据数组中的值为z高度值。x,y方向由于均匀分布在指定了各自的取值范围后即可换算为空间坐标的x,y坐标。需要注意的是Double[][]中存放的为数据和显示的分段数不一定相等譬如说数据数组是100*100的但3维曲面模型的分段数可以使90*80。 四、基本使用方法 DataGridProcessor的编程模式如下 DataGridProcessor processor new DataGridProcessor(); //创建一个数据处理器Matplot3D4JMgr mgrnew Matplot3D4JMgr(processor); //创建图形管理器Double[][] datasnew Double[20][20]; //数据阵列//......准备数据//向pricessor对象加入数据 processor.addData(datas, Name, new Range(0, 300), new Range(0, 300), 100, 100, cs, 1f);mgr.show(); 其中datas表示用户的数据上面的代码中并没有数据。 现生成一些演示数据如下 DataGridProcessor processor new DataGridProcessor();Matplot3D4JMgr mgrnew Matplot3D4JMgr(processor); //----------以下生成一些演示数据Double[][] datasnew Double[20][20];Random randomnew Random();for(int i0;idatas.length;i) {for(int j0;jdatas[0].length;j) {if(ij20)datas[i][j](double)ijrandom.nextDouble();else datas[i][j]40d-i-j-random.nextDouble();}}processor.setClose3DObject(true); //设置是否是封闭三维对象mgr.setScaleZ(1.2); //z方向伸拉至原始的1.2倍mgr.setTitle(Demo 数据阵列);processor.setShowGrid(false);//不显示辅助网格线//创建一个颜色风格ColorStyle cs new TopBottomColorStyle(ColorStyle.DEFAULT_COLORS_ARRAY);processor.addData(datas, , new Range(0, 100), new Range(100, 200), 20, 20, cs, 1f);mgr.show(); 运行效果如下 ​ 主要方法介绍 public void setClose3DObject(boolean flag) 设置是否封闭三维对象如果为false则只显示数据曲面如果为true则将曲面、和自适应的水平的矩形平面和四周的垂直面将三维图形围蔽。 public void addData(Double[][] data, String name, Color color, Range rangeX, Range rangeY, int  stepX, int stepY, float alpha) 加入一组数据阵列数据并指定x,y范围显示分段,颜色和不透明度。参数说明如下 1、data:数据阵列二维数组第一个下标代表X方向,第二个下标代表Y方向 2、name名字 3、color颜色 4、rangeX数据在X方向的分布范围 5、rangeY数据在Y方向的分布范围 6、stepX X方向的显示分段 7、stepYY方向的显示分段 8、alpha不透明度0为完全透明1.0为完全不透明。 public void addData(Double[][] data, String name, Range rangeX, Range rangeY, int stepX, int stepY, ColorStyle cs, float alpha) 此方法与前一个方法类似只是使用ColorStyle 最为参填充而不是用一种纯色填充。注意参数的顺序是和上面的方法不一样的。 五、举个栗子绘制高程地形图 现在我们来写一个稍微高级一点点的栗子绘制高程地形图。就像下面这样 ​ 是不是看起来还挺酷的实际上DataGridProcessord的使用方法和上面简单的栗子并没有多少差别差别在于数据。同时根据数据的分布密度设置合理的分段数进行建模和绘制。 需要特别指出的是由于这是一个JAVA纯软件实现的三维引擎完全依靠JVM和CPU运算以及靠内存存储数据当模型数据过多时会占用较多内存“刷新时”也会占用较多CPU时间。所以根据自己电脑的实际配置和性能来决定模型的精细度。根据我的4年前的破电脑的使用经验如果是需要实时刷新我觉得最好把模型的片面数控制在10W个以内例如分段数设定为300*300时模型的片面数就会超过9W个。大家可以根据自己电脑的实际配置测试一下在可接受的刷新效率下的极限精细度。 关于性能方面的底层问题我还在还在持续改进中看看使用CPU计算时JAVA的极限能达到什么程度。 言归正传地形数据怎么生成。首先从互联网上找到高程数据高程数据一般都是测绘卫星测绘获得的有多种格式大家有兴趣可以研究研究。我是从下面这个网站下载高程数据的 http://viewfinderpanoramas.org/Coverage%20map%20viewfinderpanoramas_org3.htm ​ 选择某一个方格可以下载那一区域的高程数据下载后解压可以得到一堆后缀是 .hgt的文件。文件是以一个方格区域的右上角的经纬度命名的每个文件代表的方格跨度分别是经度的1度和纬度的1度。例如N08E036.hgt文件包含的就是北纬8度到北纬9度东经36度到东经37度这一区域的地形高程数据。每个文件的大小是一致的共包含1442401个采样点的高程数据可以看到每个文件的大小是2884802字节就是说每个采样点数据占用了两个字节。 ​ 同时可以按照地球的半径换算​结果大约是90m,也就是说这些hgt文件的数据精度是90米。每一个文件涵盖的区域长宽大概是108km而我们知道地球最高的海拔也只有8800多米所以整块绘制体现不出地形高度起伏可以只提取其中的一个子区域绘制。 例如提取文件“ N27E086.hgt ” 文件其中300*300个点表示的区域进行绘制。这个区域位于喜马拉雅山脉因此地形起伏会比较明显。   hgt文件数据提取代码如下 /** * param fileName 文件名 * param offsetU 提取区域右上角的经度偏移量 * param offsetV 提取区域右上角的维度偏移量 * param countU 经度提取点数量 * param countV 维度提取点数量 * return 高程数据数组 */ Double[][] readHgtFile(String fileName,int offsetU,int offsetV,int countU,int countV) throws Exception{File file new File(fileName);DataInputStream dio new DataInputStream(new FileInputStream(file));int x0,y0;Double[][] datasnew Double[countU][countV];byte[] bufnew byte[2402];for(int i0;i1201;i) {dio.read(buf);if(ioffsetU||ioffsetUcountU)continue;for(int k0;kbuf.length;k2) {if(k/2offsetV||k/2offsetVcountV)continue;datas[x][y](double)((buf[k] 8) | (buf[k1] 0xff));y;}y0;x;}dio.close();return datas; } 接下来是主程序因为我们需要取纵横300个点按照点间90米计算跨度大约为27公里因此绘图范围的跨度应该设置为27000分段数可随意这里设置为270使片面数不至于很大。主程序如下 public static void main(String[] args) throws Exception {final Double[][] datas readHgtFile(./demo_data/N27E086.hgt,139,100,301,300);DataGridProcessor processor new DataGridProcessor();Matplot3D4JMgr mgrnew Matplot3D4JMgr(processor);mgr.setTitle(高程地形);mgr.setShowReferencePlanes(false); //不显示坐标系processor.setShowGrid(false); //不显示网格线processor.addData(datas, ,Color.LIGHT_GRAY, new Range(0, 27000), new Range(0, 27000), 270, 270, 1f);processor.setClose3DObject(true);mgr.show();} 执行程序显示如图 ​ 是不是已经有点意思了。但是颜色只有灰色我们希望可以根据高度显示不同的颜色就是高度用颜色也能体现出来。 还有高光感看起来感觉有一点像金属表面。那么就做一下细节调整。用颜色数组创建ColorStyle对象并在添加数据时设置同时关闭高光渲染。调整代码调整如下  ColorStyle cs new TopBottomColorStyle(new Color[] {Color.BLUE,Color.GREEN,Color.YELLOW,Color.RED.brighter(),Color.RED.darker()});processor.addData(datas, , new Range(0, 27000), new Range(0, 27000), 270, 270, cs, 1f);processor.setHighlight(false); 注意使用ColorStyle的 addData 方法的参数顺序和使用Color作为参数的方法是不一样的效果如下 ​ 关闭高光渲染时效果如下 ​ 是不是挺酷
http://www.dnsts.com.cn/news/181541.html

相关文章:

  • 公司网站开发需要做哪些事联通 网站备案
  • 论坛网站需要多大的空间黑帽seo培训
  • 做网站能赚到流量费吗e4a做网站app
  • 深圳需要做网站的公司有哪些网络营销推广目标
  • php做网站优点软件技术学的是什么
  • 建立网站需要多少钱八寇湖南岚鸿团队wordpress 上传目录
  • 网站怎么做域名关于网站建设好处文章
  • 红色专题网站首页模板wordpress的采集插件
  • 黄骅做网站价格电影大型网站制作
  • 分析建设网站的可行性湛江建设部网站
  • 微信网站入口网站信息备案变更 哪里做
  • 买服务器的网站网站建设客户会问的问题
  • 中国做跨境电商出口的网站大同网站建设企业
  • 公司网站开发用什么软件win10优化
  • seo网站推广教程企业咨询服务合同模板免费
  • 网站外连软件外包服务公司是做什么的
  • 开发网站的技术路线网页网站制作维护
  • 网站demo要几个人做前端网站开发心得体会
  • 深圳龙岗做网站的公司支付宝网页版
  • 百度网站建设如何定制鞋子哪个网站好
  • 网站建设最好的公司排名999导航
  • 网站开发毕业设计任务书wordpress怎么在本地安装
  • app和网站的区别建设网银怎么开通使用
  • 太仓建设工程网站咨询型网站
  • 网站建设好的乡镇网站后台建设 招聘
  • 做网站需要办什么手续嘉定做网站的
  • 网站外部链接建设易网网站多少
  • 做cpa必须要有网站吗网络营销是营销的网络化吗
  • 外汇做单在什么网站做网站切图
  • 自学商城网站建设网站广告出价平台