亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xyzapp.java

?? 一個小公司要求給寫的很簡單的任務管理系統。
?? JAVA
字號:
/* * @(#)XYZApp.java	1.19 06/02/22 *  * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. *  * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: *  * -Redistribution of source code must retain the above copyright notice, this *  list of conditions and the following disclaimer. *  * -Redistribution in binary form must reproduce the above copyright notice,  *  this list of conditions and the following disclaimer in the documentation *  and/or other materials provided with the distribution. *  * Neither the name of Sun Microsystems, Inc. or the names of contributors may  * be used to endorse or promote products derived from this software without  * specific prior written permission. *  * This software is provided "AS IS," without a warranty of any kind. ALL  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST  * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,  * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY  * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,  * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. *  * You acknowledge that this software is not designed, licensed or intended * for use in the design, construction, operation or maintenance of any * nuclear facility. *//* * @(#)XYZApp.java	1.19 06/02/22 *//* * A set of classes to parse, represent and display Chemical compounds in * .xyz format (see http://chem.leeds.ac.uk/Project/MIME.html) */import java.applet.Applet;import java.awt.Image;import java.awt.Event;import java.awt.Graphics;import java.awt.Dimension;import java.io.*;import java.net.URL;import java.util.Hashtable;import java.awt.image.IndexColorModel;import java.awt.image.ColorModel;import java.awt.image.MemoryImageSource;import java.awt.event.*;/** The representation of a Chemical .xyz model */class XYZChemModel {    float vert[];    Atom atoms[];    int tvert[];    int ZsortMap[];    int nvert, maxvert;    static Hashtable atomTable = new Hashtable();    static Atom defaultAtom;    static {	atomTable.put("c", new Atom(0, 0, 0));	atomTable.put("h", new Atom(210, 210, 210));	atomTable.put("n", new Atom(0, 0, 255));	atomTable.put("o", new Atom(255, 0, 0));	atomTable.put("p", new Atom(255, 0, 255));	atomTable.put("s", new Atom(255, 255, 0));	atomTable.put("hn", new Atom(150, 255, 150)); /* !!*/	defaultAtom = new Atom(255, 100, 200);    }    boolean transformed;    Matrix3D mat;    float xmin, xmax, ymin, ymax, zmin, zmax;    XYZChemModel () {	mat = new Matrix3D();	mat.xrot(20);	mat.yrot(30);    }    /** Create a Cehmical model by parsing an input stream */    XYZChemModel (InputStream is) throws Exception    {       this();       StreamTokenizer st = new StreamTokenizer(               new BufferedReader(new InputStreamReader(is, "UTF-8")));       st.eolIsSignificant(true);       st.commentChar('#');       int slot = 0;       try       {scan:          while (true)          {             switch ( st.nextToken() )             {                case StreamTokenizer.TT_EOF:                   break scan;                default:                   break;                case StreamTokenizer.TT_WORD:                   String name = st.sval;                   double x = 0, y = 0, z = 0;                   if (st.nextToken() == StreamTokenizer.TT_NUMBER)                   {                      x = st.nval;                      if (st.nextToken() == StreamTokenizer.TT_NUMBER)                      {                         y = st.nval;                         if (st.nextToken() == StreamTokenizer.TT_NUMBER)                            z = st.nval;                      }                   }                   addVert(name, (float) x, (float) y, (float) z);                   while( st.ttype != StreamTokenizer.TT_EOL &&                          st.ttype != StreamTokenizer.TT_EOF )                      st.nextToken();             }   // end Switch          }  // end while          is.close();       }  // end Try       catch( IOException e) {}       if (st.ttype != StreamTokenizer.TT_EOF)          throw new Exception(st.toString());    }  // end XYZChemModel()    /** Add a vertex to this model */    int addVert(String name, float x, float y, float z) {	int i = nvert;	if (i >= maxvert)	    if (vert == null) {		maxvert = 100;		vert = new float[maxvert * 3];		atoms = new Atom[maxvert];	    } else {		maxvert *= 2;		float nv[] = new float[maxvert * 3];		System.arraycopy(vert, 0, nv, 0, vert.length);		vert = nv;		Atom na[] = new Atom[maxvert];		System.arraycopy(atoms, 0, na, 0, atoms.length);		atoms = na;	    }	Atom a = (Atom) atomTable.get(name.toLowerCase());	if (a == null) a = defaultAtom;	atoms[i] = a;	i *= 3;	vert[i] = x;	vert[i + 1] = y;	vert[i + 2] = z;	return nvert++;    }    /** Transform all the points in this model */    void transform() {	if (transformed || nvert <= 0)	    return;	if (tvert == null || tvert.length < nvert * 3)	    tvert = new int[nvert * 3];	mat.transform(vert, tvert, nvert);	transformed = true;    }    /** Paint this model to a graphics context.  It uses the matrix associated	with this model to map from model space to screen space.	The next version of the browser should have double buffering,	which will make this *much* nicer */    void paint(Graphics g) {	if (vert == null || nvert <= 0)	    return;	transform();	int v[] = tvert;	int zs[] = ZsortMap;	if (zs == null) {	    ZsortMap = zs = new int[nvert];	    for (int i = nvert; --i >= 0;)		zs[i] = i * 3;	}	/*	 * I use a bubble sort since from one iteration to the next, the sort	 * order is pretty stable, so I just use what I had last time as a	 * "guess" of the sorted order.  With luck, this reduces O(N log N)	 * to O(N)	 */	for (int i = nvert - 1; --i >= 0;) {	    boolean flipped = false;	    for (int j = 0; j <= i; j++) {		int a = zs[j];		int b = zs[j + 1];		if (v[a + 2] > v[b + 2]) {		    zs[j + 1] = a;		    zs[j] = b;		    flipped = true;		}	    }	    if (!flipped)		break;	}	int lg = 0;	int lim = nvert;	Atom ls[] = atoms;	if (lim <= 0 || nvert <= 0)	    return;	for (int i = 0; i < lim; i++) {	    int j = zs[i];	    int grey = v[j + 2];	    if (grey < 0)		grey = 0;	    if (grey > 15)		grey = 15;	    // g.drawString(names[i], v[j], v[j+1]);	    atoms[j/3].paint(g, v[j], v[j + 1], grey);	    // g.drawImage(iBall, v[j] - (iBall.width >> 1), v[j + 1] -	    // (iBall.height >> 1));	}    }    /** Find the bounding box of this model */    void findBB() {	if (nvert <= 0)	    return;	float v[] = vert;	float xmin = v[0], xmax = xmin;	float ymin = v[1], ymax = ymin;	float zmin = v[2], zmax = zmin;	for (int i = nvert * 3; (i -= 3) > 0;) {	    float x = v[i];	    if (x < xmin)		xmin = x;	    if (x > xmax)		xmax = x;	    float y = v[i + 1];	    if (y < ymin)		ymin = y;	    if (y > ymax)		ymax = y;	    float z = v[i + 2];	    if (z < zmin)		zmin = z;	    if (z > zmax)		zmax = z;	}	this.xmax = xmax;	this.xmin = xmin;	this.ymax = ymax;	this.ymin = ymin;	this.zmax = zmax;	this.zmin = zmin;    }}/** An applet to put a Chemical model into a page */public class XYZApp    extends Applet    implements Runnable, MouseListener, MouseMotionListener {    XYZChemModel md;    boolean painted = true;    float xfac;    int prevx, prevy;    float xtheta, ytheta;    float scalefudge = 1;    Matrix3D amat = new Matrix3D(), tmat = new Matrix3D();    String mdname = null;    String message = null;    Image backBuffer;    Graphics backGC;    Dimension backSize;    private synchronized void newBackBuffer() {	backBuffer = createImage(getSize().width, getSize().height);	if (backGC != null) {	    backGC.dispose();	}	backGC = backBuffer.getGraphics();	backSize = getSize();    }    public void init() {	mdname = getParameter("model");	try {	    scalefudge = Float.valueOf(getParameter("scale")).floatValue();	} catch(Exception e) {	};	amat.yrot(20);	amat.xrot(20);	if (mdname == null)	    mdname = "model.obj";	resize(getSize().width <= 20 ? 400 : getSize().width,	       getSize().height <= 20 ? 400 : getSize().height);	newBackBuffer();	addMouseListener(this);	addMouseMotionListener(this);    }    public void destroy() {        removeMouseListener(this);        removeMouseMotionListener(this);    }    public void run() {	InputStream is = null;	try {	    Thread.currentThread().setPriority(Thread.MIN_PRIORITY);	    is = new URL(getDocumentBase(), mdname).openStream();	    XYZChemModel m = new XYZChemModel (is);	    Atom.setApplet(this);	    md = m;	    m.findBB();	    float xw = m.xmax - m.xmin;	    float yw = m.ymax - m.ymin;	    float zw = m.zmax - m.zmin;	    if (yw > xw)		xw = yw;	    if (zw > xw)		xw = zw;	    float f1 = getSize().width / xw;	    float f2 = getSize().height / xw;	    xfac = 0.7f * (f1 < f2 ? f1 : f2) * scalefudge;	} catch(Exception e) {	    e.printStackTrace();	    md = null;	    message = e.toString();	}	try {	    if (is != null)		is.close();	} catch(Exception e) {	}	repaint();    }    public void start() {	if (md == null && message == null)	    new Thread(this).start();    }    public void stop() {    }      /* event handling */  public void mouseClicked(MouseEvent e) {  }  public void mousePressed(MouseEvent e) {    prevx = e.getX();    prevy = e.getY();    e.consume();  }  public void mouseReleased(MouseEvent e) {  }  public void mouseEntered(MouseEvent e) {  }  public void mouseExited(MouseEvent e) {  }  public void mouseDragged(MouseEvent e) {    int x = e.getX();    int y = e.getY();    tmat.unit();    float xtheta = (prevy - y) * (360.0f / getSize().width);    float ytheta = (x - prevx) * (360.0f / getSize().height);    tmat.xrot(xtheta);    tmat.yrot(ytheta);    amat.mult(tmat);    if (painted) {      painted = false;      repaint();    }    prevx = x;    prevy = y;    e.consume();  }  public void mouseMoved(MouseEvent e) {  }    public void update(Graphics g) {	if (backBuffer == null)	    g.clearRect(0, 0, getSize().width, getSize().height);	paint(g);    }    public void paint(Graphics g) {	if (md != null) {	    md.mat.unit();	    md.mat.translate(-(md.xmin + md.xmax) / 2,			     -(md.ymin + md.ymax) / 2,			     -(md.zmin + md.zmax) / 2);	    md.mat.mult(amat);	    // md.mat.scale(xfac, -xfac, 8 * xfac / getSize().width);	    md.mat.scale(xfac, -xfac, 16 * xfac / getSize().width);	    md.mat.translate(getSize().width / 2, getSize().height / 2, 8);	    md.transformed = false;	    if (backBuffer != null) {		if (!backSize.equals(getSize()))		    newBackBuffer();		backGC.setColor(getBackground());		backGC.fillRect(0,0,getSize().width,getSize().height);		md.paint(backGC);		g.drawImage(backBuffer, 0, 0, this);	    }	    else		md.paint(g);	    setPainted();	} else if (message != null) {	    g.drawString("Error in model:", 3, 20);	    g.drawString(message, 10, 40);	}    }    private synchronized void setPainted() {	painted = true;	notifyAll();    }    private synchronized void waitPainted()    {       while (!painted)       {          try          {             wait();          }          catch (InterruptedException e) {}       }       painted = false;    }  public String getAppletInfo() {    return "Title: XYZApp \nAuthor: James Gosling \nAn applet to put a Chemical model into a page.";  }  public String[][] getParameterInfo() {    String[][] info = {      {"model", "path string", "The path to the model to be displayed in .xyz format (see http://chem.leeds.ac.uk/Project/MIME.html).  Default is model.obj."},      {"scale", "float", "Scale factor.  Default is 1 (i.e. no scale)."}    };    return info;  }}   // end class XYZAppclass Atom {    private static Applet applet;    private static byte[] data;    private final static int R = 40;    private final static int hx = 15;    private final static int hy = 15;    private final static int bgGrey = 192;    private final static int nBalls = 16;    private static int maxr;    private int Rl;    private int Gl;    private int Bl;    private Image balls[];    static {	data = new byte[R * 2 * R * 2];	int mr = 0;	for (int Y = 2 * R; --Y >= 0;) {	    int x0 = (int) (Math.sqrt(R * R - (Y - R) * (Y - R)) + 0.5);	    int p = Y * (R * 2) + R - x0;	    for (int X = -x0; X < x0; X++) {		int x = X + hx;		int y = Y - R + hy;		int r = (int) (Math.sqrt(x * x + y * y) + 0.5);		if (r > mr)		    mr = r;		data[p++] = r <= 0 ? 1 : (byte) r;	    }	}	maxr = mr;    }    static void setApplet(Applet app) {	applet = app;    }    Atom(int Rl, int Gl, int Bl) {	this.Rl = Rl;	this.Gl = Gl;	this.Bl = Bl;    }    private final int blend(int fg, int bg, float fgfactor) {	return (int) (bg + (fg - bg) * fgfactor);    }    private void Setup() {	balls = new Image[nBalls];	byte red[] = new byte[256];	red[0] = (byte) bgGrey;	byte green[] = new byte[256];	green[0] = (byte) bgGrey;	byte blue[] = new byte[256];	blue[0] = (byte) bgGrey;	for (int r = 0; r < nBalls; r++) {	    float b = (float) (r+1) / nBalls;	    for (int i = maxr; i >= 1; --i) {		float d = (float) i / maxr;		red[i] = (byte) blend(blend(Rl, 255, d), bgGrey, b);		green[i] = (byte) blend(blend(Gl, 255, d), bgGrey, b);		blue[i] = (byte) blend(blend(Bl, 255, d), bgGrey, b);	    }	    IndexColorModel model = new IndexColorModel(8, maxr + 1,							red, green, blue, 0);	    balls[r] = applet.createImage(		new MemoryImageSource(R*2, R*2, model, data, 0, R*2));	}    }    void paint(Graphics gc, int x, int y, int r) {	Image ba[] = balls;	if (ba == null) {	    Setup();	    ba = balls;	}	Image i = ba[r];	int size = 10 + r;	gc.drawImage(i, x - (size >> 1), y - (size >> 1), size, size, applet);    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美国产综合一区| 精品美女被调教视频大全网站| 精品国产乱码久久久久久牛牛| 中文字幕一区二区三区在线不卡 | 精品国产一区二区亚洲人成毛片| 成人免费在线播放视频| 精久久久久久久久久久| 欧美午夜电影网| 亚洲欧美中日韩| 国产精品资源网| 欧美一区二区高清| 亚洲妇女屁股眼交7| 97久久超碰国产精品电影| 久久久国产综合精品女国产盗摄| 免费观看成人av| 欧美日韩精品一区二区三区蜜桃| **网站欧美大片在线观看| 国产一区二区三区美女| 91精品国产欧美日韩| 午夜亚洲国产au精品一区二区| 91美女在线观看| 国产精品不卡视频| 大白屁股一区二区视频| 国产亚洲一区二区三区在线观看| 男女激情视频一区| 91精品国产福利在线观看| 亚洲午夜精品在线| 欧美在线免费观看视频| 亚洲精品欧美专区| 色综合天天综合网天天看片| 国产精品福利电影一区二区三区四区| 国产乱子轮精品视频| 精品欧美一区二区三区精品久久| 免费成人av在线| 日韩视频免费观看高清在线视频| 日韩激情中文字幕| 91精品国产综合久久蜜臀| 亚洲国产乱码最新视频| 欧美日韩一卡二卡| 亚洲不卡av一区二区三区| 欧美午夜不卡在线观看免费| 亚洲第一福利一区| 欧美日韩国产首页| 日本伊人色综合网| 欧美成人乱码一区二区三区| 久久er99精品| 精品国产一区二区精华| 国产一区二区三区黄视频| 精品国产乱码久久久久久久| 国内精品写真在线观看| 久久久久久久国产精品影院| 国产99久久精品| 亚洲欧洲精品一区二区三区 | 日韩在线a电影| 日韩欧美国产一区二区三区| 久久精品国产99久久6| 欧美岛国在线观看| 国产精品综合在线视频| 国产精品久久久久久久久免费樱桃 | 亚洲一区二区五区| 欧美日韩国产一二三| 麻豆国产91在线播放| 久久综合成人精品亚洲另类欧美| 国产白丝网站精品污在线入口| 国产精品久久久久久妇女6080| 色域天天综合网| 亚洲成av人片一区二区三区| 欧美成人r级一区二区三区| 国产精品911| 亚洲欧美成人一区二区三区| 欧美日韩精品久久久| 蜜桃久久久久久久| 中文字幕av一区二区三区免费看 | 欧美午夜片在线看| 美女一区二区三区在线观看| 日本一区二区三区视频视频| 91丨porny丨蝌蚪视频| 天堂午夜影视日韩欧美一区二区| 精品国产乱码久久久久久图片| 成人免费毛片嘿嘿连载视频| 亚洲成在人线免费| 精品成人在线观看| 91亚洲国产成人精品一区二区三| 石原莉奈在线亚洲二区| 久久精品免费在线观看| 欧洲亚洲国产日韩| 精品综合久久久久久8888| 亚洲视频在线一区| 欧美成人综合网站| 91免费看视频| 免费人成黄页网站在线一区二区| 国产精品狼人久久影院观看方式| 精品视频一区二区不卡| 国产高清一区日本| 首页国产欧美日韩丝袜| 中文字幕二三区不卡| 欧美人妖巨大在线| 成人av高清在线| 日韩国产成人精品| 亚洲视频在线一区观看| 欧美xxxx老人做受| 91久久精品日日躁夜夜躁欧美| 久久99精品一区二区三区| 亚洲三级视频在线观看| 日韩免费性生活视频播放| 色婷婷精品大在线视频| 国产在线一区观看| 亚洲国产精品久久人人爱| 国产午夜亚洲精品理论片色戒| 欧美男女性生活在线直播观看| 成人av在线资源| 久久成人精品无人区| 亚洲线精品一区二区三区八戒| 日本一区二区免费在线| 日韩欧美的一区二区| 欧洲一区二区三区在线| 大桥未久av一区二区三区中文| 日本中文一区二区三区| 一区二区三区影院| 国产精品久久毛片| 久久亚洲精品国产精品紫薇| 欧美人牲a欧美精品| 色综合色综合色综合| 成人在线视频首页| 久久超碰97人人做人人爱| 亚洲地区一二三色| 亚洲女同一区二区| 国产精品久久久久天堂| 国产亚洲欧美激情| 日韩欧美成人一区二区| 欧美高清一级片在线| 日本乱人伦aⅴ精品| 成人av网站在线| 国产98色在线|日韩| 精品一区二区三区不卡 | 欧美激情一区二区三区全黄| 26uuu成人网一区二区三区| 日韩一区二区三区在线视频| 欧美精品久久99久久在免费线 | 国内成人精品2018免费看| 青青草原综合久久大伊人精品| 亚洲午夜激情网站| 亚洲精品中文字幕乱码三区| 国产精品―色哟哟| 欧美激情在线观看视频免费| 国产婷婷色一区二区三区| 久久免费看少妇高潮| 精品福利视频一区二区三区| 精品国产凹凸成av人导航| 日韩无一区二区| 日韩欧美一区二区视频| 欧美一级二级三级乱码| 欧美一区在线视频| 日韩一区二区三区四区五区六区| 91精品国产综合久久精品图片| 欧美日韩高清一区二区不卡 | 国产精品自在欧美一区| 国产伦精品一区二区三区视频青涩| 精品一二线国产| 激情深爱一区二区| 国内精品在线播放| 国产精品综合视频| 丁香啪啪综合成人亚洲小说 | 99久久精品国产精品久久| 99久久精品情趣| 在线一区二区三区四区| 欧美色视频一区| 欧美一区二区三区视频| 精品国产一区二区三区av性色| 久久久久久久久久看片| 欧美韩国日本综合| 亚洲婷婷综合久久一本伊一区| 亚洲免费观看高清在线观看| 一区二区三区不卡视频在线观看| 亚洲一区国产视频| 日本午夜一区二区| 国产最新精品免费| 成人高清伦理免费影院在线观看| 91免费在线视频观看| 欧美日韩一级片网站| 日韩免费性生活视频播放| 久久亚洲欧美国产精品乐播| 国产精品成人网| 亚洲午夜精品网| 蜜桃传媒麻豆第一区在线观看| 国产一二精品视频| 不卡的电视剧免费网站有什么| 欧美伊人精品成人久久综合97| 日韩一区二区精品| 国产欧美精品一区| 亚洲一线二线三线视频| 麻豆国产精品一区二区三区| 国产不卡在线播放| 欧美性受xxxx黑人xyx性爽| 91麻豆精品国产91久久久资源速度 | 91精品久久久久久久久99蜜臂| 久久久亚洲精品石原莉奈| 亚洲人成亚洲人成在线观看图片 | 久久99久久99精品免视看婷婷| 成人国产一区二区三区精品|