⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lens.java

📁 生物物种进化历程的演示
💻 JAVA
字号:
/* * Created on 7-Oct-2003 * * To change the template for this generated file go to * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments */package AccordionDrawer;import gl4java.*;import java.awt.*;/** * @author hilde * * To change the template for this generated type comment go to * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments */public class Lens {	static final int X = 0;	static final int Y = 1;	int[] texture = new int[1];	/** bottom left corner, in pixel coordinates */	public int min[] = new int[2];	/** top right corner, in pixel coordinates */	public int max[] = new int[2];	/** center point, in pixel coordinates */	public int center[] = new int[2];	public int size[] = new int[2];	public int pos[] = new int[2];	public int oldPos[] = new int[2];	/**	* framebuffer pixels from last mouseover label drawn	*/	public float pixels[] = new float[2];		public float temp_min[] = new float[2];	public float temp_max[] = new float[2];	public int temp_size[] = new int[2];							float linewidth;	float plane;	AccordionDrawer d;	public GridCell minc[] = new GridCell[2];	public GridCell maxc[] = new GridCell[2];	public CellGeom item;	Color markCol;	public Lens(int[] _pos, int[] _max, int _min[], int[] _center, int _size[], AccordionDrawer d) {		System.out.println("lens initialized");		for (int xy = 0; xy < 2; xy++) {			min[xy] = _min[xy];			max[xy] = _max[xy];			center[xy] = _center[xy];			pos[xy]= _pos[xy];			size[xy]= _size[xy];			temp_size[xy]= _size[xy];		}		this.d = d;				//init();	}	public Lens(GridCell minc[], GridCell maxc[], int pos[], int _size[], CellGeom item, AccordionDrawer d) {		for (int xy = 0; xy < 2; xy++ ) {			this.min[xy] = pos[xy] - 50;			this.max[xy] = pos[xy] + 50;			center[xy] = (int)((max[xy]-min[xy])/2.0 + min[xy]);			this.minc[xy]=minc[xy];			this.maxc[xy]=maxc[xy];			this.pos[xy] = pos[xy];			this.oldPos[xy] =0;			this.size[xy] = _size[xy];		}		this.d = d;		this.item = item;				}	public void draw(Color col, float linewidth, float plane) {		System.out.println("draw");		this.markCol = col;		this.linewidth = linewidth;		this.plane = plane;		drawLens();	}	public void undrawLens() {		drawLens();	}	public void init(){			System.out.println("lens init");		GLFunc gl = d.gl;		GLUFunc glu = d.glu;		//GLUTFunc glut = d.glut;		GLCapabilities glc = d.glc;						//int[] data = new int[(min[0] - max[0]) * (min[1] - max[1])];		int[] data = new int[(d.getWinsize(X) * d.getWinsize(Y))];		}	public void drawLens() {		GLFunc gl = d.gl;		//GLUTFunc glut = d.glut;		GLCapabilities glc = d.glc;									//gl.glStencilFunc(GLEnum.GL_EQUAL, 1, ~0);		//gl.glStencilOp(GLEnum.GL_KEEP, GLEnum.GL_KEEP, GLEnum.GL_KEEP);		//glut.glutSolidCube(1.0);					//gl.glDisable(GLEnum.GL_STENCIL_TEST);		//System.out.println("lens with pos " + center[0] + " " + center[1]);				//gl.glDrawBuffer(GLEnum.GL_FRONT);		//gl.glDepthFunc(GLEnum.GL_ALWAYS);		//gl.glDepthMask(false);		//glc.setDoubleBuffered(false);		//gl.glEnable(GLEnum.GL_COLOR_LOGIC_OP);		//gl.glLogicOp(GLEnum.GL_XOR);		//float thecol[] = new float[3];		//markCol.getRGBColorComponents(thecol);		//gl.glColor3f(thecol[0], thecol[1], thecol[2]);		//gl.glColor3f(1.0f,1.0f,1.0f);		//gl.glLineWidth(linewidth);				//		gl.glPolygonMode(GLEnum.GL_FRONT_AND_BACK, GLEnum.GL_LINE);//		gl.glBegin(GLEnum.GL_QUADS);//		//gl.glTexCoord2d(0.0,1.0);//		gl.glVertex3d(d.s2w(min[X], X), d.s2w(min[Y], Y), plane);//		//gl.glTexCoord2d(1.0,1.0);//		gl.glVertex3d(d.s2w(min[X], X), d.s2w(max[Y], Y), plane);//		//gl.glTexCoord2d(1.0,.0);//		gl.glVertex3d(d.s2w(max[X], X), d.s2w(max[Y], Y), plane);//		//gl.glTexCoord2d(.0,.0);//		gl.glVertex3d(d.s2w(max[X], X), d.s2w(min[Y], Y), plane);//		//		gl.glEnd();//		//gl.glDisable(GLEnum.GL_TEXTURE_2D);		//gl.glPointSize(linewidth + 2f);		 			 		//gl.glDisable(GLEnum.GL_COLOR_LOGIC_OP);		//gl.glDepthFunc(GLEnum.GL_LEQUAL);		//gl.glDepthMask(true);		//		gl.glDisable(GLEnum.GL_TEXTURE_RECTANGLE_NV);//		gl.glBindTexture(GLEnum.GL_TEXTURE_RECTANGLE_NV, 0);		//drawFlowMenu();				 	}	/*	 * draw flowmenu	 */	public void drawFlowMenu() {		int i;		float cosine, sine;		GLFunc gl = d.gl;		GLCapabilities glc = d.glc;				gl.glColor4f(0.9f, 0.9f, 0.9f, 0.8f);				String str1 = "zoom in";		String str2 = "zoom out";		String str3 = "context";		String str4 = "dist";		int a = str1.length();		int b = str2.length();		int c = str3.length();		int d = str4.length();/*		for (int i = 0; i < a; i++) {			gl.glRasterPos3f(25 + i * 7, 78, 0);			gl.glutBitmapCharacter(GLUT_BITMAP_8_BY_13, str1.);		}		for (i = 0; i < b; i++) {			gl.glRasterPos3f(-78 + i * 7, -70, 0);			gl.glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (char) * str2);			* str2++;		}		for (i = 0; i < c; i++) {			gl.glRasterPos3f(-78 + i * 7, 78, 0);			gl.glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (char) * str3);			* str3++;		}		for (i = 0; i < d; i++) {			gl.glRasterPos3f(25 + i * 7, -70, 0);			gl.glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (char) * str4);			* str4++;		}		*/				gl.glColor4f(0.8f, 0.8f, 0.8f, 0.4f);		/*		 * go for Display lists man		 */		/*		 * middle polygon		 */		gl.glBegin(GLEnum.GL_POLYGON);		gl.glVertex3d(-50.0f, -50.0f, plane);		gl.glVertex3d(-50, 50,  plane);		gl.glVertex3d(50, 50,  plane);		gl.glVertex3d(50, -50,  plane);		gl.glEnd();		gl.glBegin(GLEnum.GL_POLYGON);		gl.glVertex3d(-50, -50,  plane);		gl.glVertex3d(-50, 50,  plane);		gl.glVertex3d(50, 50,  plane);		gl.glVertex3d(50, -50,  plane);		gl.glEnd();		/*		 * because with polygon is it only possible to render convex points		 */		gl.glPolygonMode(GLEnum.GL_FRONT_AND_BACK, GLEnum.GL_FILL);		gl.glBegin(GLEnum.GL_POLYGON);		gl.glVertex3d(-80, 0,  plane);		gl.glVertex3d(-80, -80,  plane);		gl.glVertex3d(-50, -80,  plane);		gl.glVertex3d(-50, 0,  plane);		gl.glEnd();		gl.glBegin(GLEnum.GL_POLYGON);		gl.glVertex3d(-50, -50,  plane);		gl.glVertex3d(-50, -80,  plane);		gl.glVertex3d(0, -80,  plane);		gl.glVertex3d(0, -50,  plane);		gl.glEnd();		gl.glPolygonMode(GLEnum.GL_FRONT_AND_BACK, GLEnum.GL_LINE);		gl.glPolygonMode(GLEnum.GL_FRONT_AND_BACK, GLEnum.GL_FILL);		gl.glBegin(GLEnum.GL_POLYGON);		gl.glVertex3d(80, 0,  plane);		gl.glVertex3d(80, 80,  plane);		gl.glVertex3d(50, 80,  plane);		gl.glVertex3d(50, 0,  plane);		gl.glEnd();		gl.glBegin(GLEnum.GL_POLYGON);		gl.glVertex3d(50, 50,  plane);		gl.glVertex3d(50, 80,  plane);		gl.glVertex3d(0, 80,  plane);		gl.glVertex3d(0, 50,  plane);		gl.glEnd();		gl.glPolygonMode(GLEnum.GL_FRONT_AND_BACK, GLEnum.GL_LINE);		gl.glPolygonMode(GLEnum.GL_FRONT_AND_BACK, GLEnum.GL_FILL);		gl.glBegin(GLEnum.GL_POLYGON);		gl.glVertex3d(-80, 2,  plane);		gl.glVertex3d(-80, 80,  plane);		gl.glVertex3d(-50, 80,  plane);		gl.glVertex3d(-50, 2,  plane);		gl.glEnd();		gl.glBegin(GLEnum.GL_POLYGON);		gl.glVertex3d(-50, 50,  plane);		gl.glVertex3d(-50, 80,  plane);		gl.glVertex3d(-2, 80,  plane);		gl.glVertex3d(-2, 50,  plane);		gl.glEnd();		gl.glPolygonMode(GLEnum.GL_FRONT_AND_BACK, GLEnum.GL_LINE);		gl.glPolygonMode(GLEnum.GL_FRONT_AND_BACK, GLEnum.GL_FILL);		gl.glBegin(GLEnum.GL_POLYGON);		gl.glVertex3d(80, -2,  plane);		gl.glVertex3d(80, -80,  plane);		gl.glVertex3d(50, -80,  plane);		gl.glVertex3d(50, -2,  plane);		gl.glEnd();		gl.glBegin(GLEnum.GL_POLYGON);		gl.glVertex3d(50, -50,  plane);		gl.glVertex3d(50, -80,  plane);		gl.glVertex3d(2, -80,  plane);		gl.glVertex3d(2, -50,  plane);		gl.glEnd();		gl.glPolygonMode(GLEnum.GL_FRONT_AND_BACK, GLEnum.GL_LINE);		/*			 * if you like to use a circle then here			 */		//			   glBegin(GL_POLYGON);		//			   for(i=0;i<100;i++){		//			cosine=50*cos(i*2*PI/100.0);		//			sine=50*sin(i*2*PI/100.0);		//			glVertex3f(cosine,sine, 0);		//			   }		//			   glEnd();		/*		 *  lines down 		 */		gl.glBegin(GLEnum.GL_LINES);		gl.glVertex3d(0, 50,  plane);		gl.glVertex3d(0, 80,  plane);		gl.glEnd();		gl.glBegin(GLEnum.GL_LINES);		gl.glVertex3d(50, 0,  plane);		gl.glVertex3d(80, 0,  plane);		gl.glEnd();		/*		 * lines up		 */		gl.glBegin(GLEnum.GL_LINES);		gl.glVertex3d(0, -50,  plane);		gl.glVertex3d(0, -80,  plane);		gl.glEnd();		gl.glBegin(GLEnum.GL_LINES);		gl.glVertex3d(-50, 0,  plane);		gl.glVertex3d(-80, 0,  plane);		gl.glEnd();	}	/*	 * top right corner	 */	public void setMax(int[] xy) {		max[0] = xy[0];		max[1] = xy[1];	}	/*	 * bottom left corner	 */	public void setMin(int[] xy) {		min[0] = xy[0];		min[1] = xy[1];	}	/*	* center	 */	public void setCenter(int[] xy) {		center[0] = xy[0];		center[1] = xy[1];	}	/*	 * set lens size half of right and left	 * update min and max	 */	public void setSize(int[] _size){		this.size[0] = _size[0];		this.size[1] = _size[1];				this.min[0] =  pos[0] - (_size[0] / 2);		this.min[1] =  pos[1] - (_size[1] / 2);		this.max[0] =  pos[0] + (_size[0] / 2);		this.max[1] =  pos[1] + (_size[1] / 2);	}		public int[] getSize(){		return this.size;	}	public int[] getMax() {		return max;	}	public int[] getMin() {		return min;	}	public int[] getCenter() {		return center;	}};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -