三维展现一种实现

         前言 

        用过matlab,scilab,octave,python的人,对三维曲面都有一定的了解,里面有一套针对曲面绘制的函数方法,诸如mesh、surface、contour以及网格插值函数interp、griddata等等。现在普遍的java web开发都有或多或少的图形展示界面,前端方面展示的一般都是基于图表形式的控件,有echart 、highchart等,但这些都只限于二维的图形。当让可以用客户端去做三维展现,这里就不考虑了。是否有一种东西,既可以做三维展示,旋转曲面,又可以实现数据的交互。

      可采用将jzy3d绘制的图形嵌入到applet中,让applet去处理数据交互!

        三维控件jzy3d

         首先的考量是控件能绘制等值面,曲面,其次最好是java实现的,好与后台交互。net的控件之前也考虑过,好像也能做到,忘记出处了。jzy3d基于awt,swt开发的,可以直接基于客户端运行,同时新的版本基于jogl 可以用applet展现三维。这正是我所需要的。

        后台交互

      后台框架现在多如牛毛,springmvc , serverlet等,我采用的是springboot,方便开发集成。其中很重要的一点,applet只能与applet的服务器交互,其他的是不允许的。

        代码片段

       //html
     
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />

<title>Insert title here</title>
</head>
<body>
    <p>hellow</p>
	<applet code="appletcontour.appletcontour.HelloApplet" width=800 height=600 codebase="./"
		archive="jzy3d-api-1.0.1-SNAPSHOT.jar,
jzy3d-depthpeeling-1.0.1-SNAPSHOT.jar,
jzy3d-guide-1.0.1-SNAPSHOT.jar,
jzy3d-jdt-core-1.0.1-SNAPSHOT.jar,
gluegen-rt.jar,
gluegen-rt-natives-windows-i586.jar
gluegen-rt-natives-windows-amd64.jar,
jogl-all.jar,
log4j-1.2.16.jar,
jogl-all-natives-windows-i586.jar
jogl-all-natives-windows-amd64.jar"></applet>

</body>
</html>
    //applet
package appletcontour.appletcontour;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JApplet;

import org.jzy3d.chart.Chart;
import org.jzy3d.chart.ChartLauncher;
import org.jzy3d.chart.Settings;
import org.jzy3d.demos.surface.WireSurfaceDemo;

import org.jzy3d.plot3d.rendering.canvas.ICanvas;

public class HelloApplet extends JApplet implements ActionListener {
	/**
	 * 
	 */
	private static final long serialVersionUID = -8375384122588025739L;
	private Chart chart;
	private ICanvas canvas;

	public void paint(Graphics g) {
		super.paint(g);
	}

	@Override
	public void init() {
		try {
		
			
			WireSurfaceDemo demo = new WireSurfaceDemo();
			Settings.getInstance().setHardwareAccelerated(true);
			demo.init();
			this.chart = demo.getChart();
			boolean allowSlaveThreadOnDoubleClick = true;
			boolean startThreadImmediatly = true;
			ChartLauncher.configureControllers(chart, "title",
					allowSlaveThreadOnDoubleClick, startThreadImmediatly);
			chart.render();
			this.canvas = chart.getCanvas();
			getContentPane().add((java.awt.Component) this.canvas);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
		}
	}

	@Override
	public void actionPerformed(ActionEvent e) {

	}
}
         //效果参考
        http://download.jzy3d.org/api/0.9/applet/jzy3d-applet.html

       调试

        (1)用appletviewer调试,开java console在“配置java”处。
         (2)暴力删除第三方jar包中 trustLibrary:true标记, jre\lib\security\java.policy添加 grant{ permission java.security.AllPermission;} 
         (3) “配置java”处添加站点 http://127.0.0.1:8080/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值