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

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

?? molecule1.java

?? 包括了JAVA3D(全世界都能看到的網絡三維動畫)的源代碼部分! 很多基礎但是卻很精彩的例子!有什么不明白的也可以和我交流MSN:guorui0728@hotmail.com
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
// by Liu Peng, Nov.18, 2000

import java.lang.Math.*;
import java.awt.Graphics;
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.awt.BorderLayout;
import java.awt.GraphicsConfiguration;
import java.awt.event.WindowAdapter;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.geometry.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.behaviors.mouse.*;
import com.sun.j3d.utils.behaviors.keyboard.*;
import com.sun.j3d.utils.behaviors.picking.*;


public class molecule1 extends Applet implements ActionListener, Runnable {

    Thread timer;
	Transform3D globalTransform3D;
	Transform3D globalTransform3DBackup;
	TransformGroup globalTransformGroup;
	SharedGroup shared;
	boolean timerFlag=true;
	Group group;
  	double radius=0.2; 				
    float angle = 0.0f;
  	int currentLink=0, currentVert=0;
  	int prevLink=0, prevVert=0;
    boolean activateState=true;
    Button activateB = new Button("Stop/Move");
    Button normalB = new Button("Normal");
    Button rotateBX = new Button("RotateX");
    Button rotateBY = new Button("RotateY");
    Button rotateBZ = new Button("RotateZ");
  	
  	class Links_c {
  		double x0, y0, z0;		// 起始坐標
  		int numVert;			// 需要創建的分子數
  		boolean dx,dy,dz;
    		// 如果dx是true,則向X方向擴展;否則向-X方向擴展。dy,dz類似。
  		double probability;
    		// 按dx,dy,dz規定的方向擴展的概率,取值范圍必須在[0, 1]之間。
    		// probability取值為0.5時,最易聚簇; 為1或0時,最易散開
    		// 只不過為1時,是按指定的方向散開;為0時,是按相反的方向散開
    		
    	public void init(double ix0,double iy0,double iz0,int inumVert,
    			boolean idx,boolean idy,boolean idz, double iprobability)
    	{
    		x0=ix0; y0=iy0; z0=iz0; numVert=inumVert;
    		dx=idx; dy=idy; dz=idz; probability=iprobability;
    	}
  	};
  	Links_c links[];
  	int numLink;
	Point3d pointPosition[][];
	Transform3D pointTransform3D[][];
	TransformGroup pointTransformGroup[][];



  // 以一種隨機和加方向性控制的方式,生成數條分子鏈的每個分子的坐標
  // 
  private void createVert()
  {
  	double x,y,z, p;
  	boolean dx,dy,dz;
		  	
	// 此處應該和links一起改,否則會出錯
  	numLink=3;
  	
  	links =new Links_c[numLink];
  	for (int i=0; i<numLink; i++)
  		links[i] = new Links_c();
  	
  	// 此處應該和numLink一起改,否則會出錯
  	links[0].init(-0.5, -0.5, 0.2, 28, false, false, true, 0.6);
	links[1].init(0.6, -0.6, 0, 22, true, true, false, 0.8);
	links[2].init(0, 0.5, -0.2, 26, false, true, false, 0.65);
	pointPosition = new Point3d[numLink][];
  	for (int l=0; l<numLink; l++)
  	{
  		pointPosition[l]=new Point3d[links[l].numVert];
  		for (int i=0; i<links[l].numVert; i++)
  			pointPosition[l][i]=new Point3d();
  		pointPosition[l][0].x=links[l].x0;
  		pointPosition[l][0].y=links[l].y0;
  		pointPosition[l][0].z=links[l].z0;
  	    p=links[l].probability;
  		dx=links[l].dx;
  	    dy=links[l].dy;
  	    dz=links[l].dz;
  	    
  		for (int i=1;i<links[l].numVert;i++)
  		{
			x=Math.random()*radius;
			x=sign(x,p,dx);
			y=Math.sqrt(radius*radius-x*x) * Math.random();
				// Y的值不能也在0-radius范圍內隨意取值:
				// 因為在X、Y平面上,當X、Y都取radius時,
				// 點(X,Y)就跑到了圓x^2+y^2=r^2的外面了。
				// 所以X、Y坐標必須滿足這個約束。
			y=sign(y,p,dy);
			z=Math.sqrt(radius*radius-x*x-y*y);
			z=sign(z,p,dz);
  			pointPosition[l][i].x=pointPosition[l][i-1].x+x;
  			pointPosition[l][i].y=pointPosition[l][i-1].y+y;
  			pointPosition[l][i].z=pointPosition[l][i-1].z+z;
  		}  	
  	}
  }


  // 依次改變所有分子鏈中每個分子的坐標(每次改一個)
  private void changeAVert()
  {
  	double x,y,z, p;
  	boolean dx,dy,dz;
	
	int l=currentLink;
	int i=currentVert;

	prevLink=l;
	prevVert=i;		  	
  	i++;
  	if (i==links[l].numVert)		// 本條鏈結束,下次從下條鏈開始
  	{
  		i=0;
  		l++;
  	}
  	if (l==numLink)			// 所有鏈結束,重新開始一輪
  	{
  		l=0;
  	}
  	currentLink=l;
  	currentVert=i;

  	p=links[l].probability;
  	dx=links[l].dx;
  	dy=links[l].dy;
  	dz=links[l].dz;

	if (i==0)
	{
  		pointPosition[l][0].x=links[l].x0;
  		pointPosition[l][0].y=links[l].y0;
  		pointPosition[l][0].z=links[l].z0;
  	} else
  	{    
		x=Math.random()*radius;
		x=sign(x,p,dx);
		y=Math.sqrt(radius*radius-x*x) * Math.random();
			// Y的值不能也在0-radius范圍內隨意取值:
			// 因為在X、Y平面上,當X、Y都取radius時,
			// 點(X,Y)就跑到了圓x^2+y^2=r^2的外面了。
			// 所以X、Y坐標必須滿足這個約束。
		y=sign(y,p,dy);
		z=Math.sqrt(radius*radius-x*x-y*y);
		z=sign(z,p,dz);
  		pointPosition[l][i].x=pointPosition[l][i-1].x+x;
  		pointPosition[l][i].y=pointPosition[l][i-1].y+y;
  		pointPosition[l][i].z=pointPosition[l][i-1].z+z;
  	}
  }
	
  private double sign(double v, double p, boolean direction)
  {
  	double ret;
  	if (p>=Math.random())	// 以給定的概率遵照擴展方向的約定
  	{
  		if (direction)
  			ret=v;
  		else
  			ret=-v;
	} else					// 落在規定的概率之外,則與擴展的方向相反
	{
		if (direction)
			ret=-v;
		else 
			ret=v;
	}
	return ret;
  }


  // 將一個坐標系中的任意物體旋向(x,y,z)指定的任意方向(坐標原點不變)
  //
  // 輸入:給定舊坐標系中的一點A,它的坐標為(x,y,z)。
  // 輸出:兩個坐標系之間的轉換矩陣(OXYZ-->OX"Y"Z")
  // 要求:旋轉后OA為新坐標系中的Y"軸。(如此旋轉后,原來與Y軸平行的物體,
  //       將與Y"軸平行,其他位置的物體也將作相應的非扭曲旋轉)
  // 旋轉方法:
  //    假設OA在ZOX平面的投影為OA'。ZOA'夾角為angle1。則第一步旋轉為:
  //       以Y軸為轉軸,將ZOX平面旋轉angle1度,此時坐標系變為OX'YZ'(A'
  //       處于Z'軸上了);
  //       由于X'垂直于YOZ'平面(X'亦垂直于OA及OA')。假設YOA的夾角為angle2,
  //       則第二步旋轉為:以X'為軸,將YOZ'平面旋轉angle2度,則此時Y軸與OA
  //       軸重合,記為Y",另外記新的Z坐標為Z",還有X"(是與X'重合的)。
  //       經過上述兩次坐標軸旋轉,坐標系中的物體也就轉向了指定的任意方向。
  private Transform3D transForm(double x, double y,double z)
  {
	double r = Math.sqrt(x*x+y*y+z*z);
	double angle1 = Math.atan(x/z);
	double angle2 = Math.acos(y/r);

//	
//  angle1 調整旋轉的角度:	
// 
//  Angle1是從+Z向Z'旋轉的實際角度(范圍:0-360度),Z'是(x,y,z)點在XOZ平面的投影線。
//        Z        X          Angle1
// ------------------------------------
//    +(or 0)   +(or 0)       angle1             (angle1此時為正)
//    +(or 0)      -        2*PI+angle1          (angle1此時為負)
//        -     +(or 0)      PI+angle1           (angle1此時為負)
//        -        -         PI+angle1           (angle1此時為正)
	double Angle1,Angle2;
	if (z>=0)
	{
		if (x>=0)
			Angle1=angle1;
		else
			Angle1=2*Math.PI+angle1;
	} else
	{
		if (x>=0)
			Angle1=Math.PI+angle1;
		else
			Angle1=Math.PI+angle1;
	}
	

//	
//  angle2 調整旋轉的角度:	
//	               
//  Angle2 是從+Y向Z'旋轉的實際角度(范圍:0-180度)
//        Y         Angle2
// ---------------------------------
//     +(or 0)      angle2                   (angle2此時為正)
//        -         angle2                   (angle2此時為負)
	if (y>=0)
		Angle2=angle2;
	else
		Angle2=angle2;
    			
    Transform3D rot1 = new Transform3D();
    Transform3D rot2 = new Transform3D();
    rot1.rotY(Angle1);
    rot2.rotX(Angle2);

    Transform3D newTransform = new Transform3D();

    newTransform.mul(rot1);
    newTransform.mul(rot2);
    return newTransform;
  }
  


  private Group moleculeLinks()
  {
	group=new Group();

	createVert();

    shared = new SharedGroup();
    shared.addChild(aMolecule());
	pointTransform3D = new Transform3D[numLink][];
	pointTransformGroup = new TransformGroup[numLink][];
  	for (int l=0; l<numLink; l++)
  	{
  		pointTransform3D[l]=new Transform3D[links[l].numVert];
  		pointTransformGroup[l]=new TransformGroup[links[l].numVert];
  		
		for (int i=0;i<links[l].numVert; i++)
		{
			if (i==links[l].numVert-1) 
			{
				pointTransform3D[l][i] = transForm(
					pointPosition[l][i-1].x - pointPosition[l][i].x,
					pointPosition[l][i-1].y - pointPosition[l][i].y,
					pointPosition[l][i-1].z - pointPosition[l][i].z
					);
			} else
			{
				pointTransform3D[l][i] = transForm(
					pointPosition[l][i+1].x - pointPosition[l][i].x,
					pointPosition[l][i+1].y - pointPosition[l][i].y,
					pointPosition[l][i+1].z - pointPosition[l][i].z
					);
			}
			pointTransform3D[l][i].setTranslation(new Vector3d(
				pointPosition[l][i].x, pointPosition[l][i].y, pointPosition[l][i].z));
			pointTransformGroup[l][i] = new TransformGroup(pointTransform3D[l][i]);
			pointTransformGroup[l][i].setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品区一区二区| 一区二区三区 在线观看视频| 国产精品美女一区二区在线观看| 一区二区三区在线看| 久久精品国产亚洲a| 91精品视频网| ㊣最新国产の精品bt伙计久久| 日韩精品欧美精品| 91亚洲大成网污www| 久久综合狠狠综合| 日本中文字幕一区| 欧美色图免费看| 亚洲色图视频网| 国产精品主播直播| 欧美tk—视频vk| 五月婷婷激情综合网| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 狠狠色丁香婷综合久久| 欧美三级在线看| 亚洲男人的天堂av| 白白色亚洲国产精品| 久久久九九九九| 黄色小说综合网站| 欧美成人乱码一区二区三区| 亚洲成人免费影院| 欧美日韩日日夜夜| 亚洲午夜电影网| 在线视频你懂得一区二区三区| 欧美国产一区在线| 成人黄色av电影| 国产精品免费免费| 成人18精品视频| 中文在线一区二区| 99久久er热在这里只有精品15| 国产色综合一区| 经典三级一区二区| 日韩一区二区视频| 精品一区二区影视| 亚洲精品一区二区在线观看| 国产综合一区二区| 久久久久久久久99精品| 欧美调教femdomvk| 偷拍一区二区三区四区| 欧美日韩一区三区| 韩国精品主播一区二区在线观看 | 久久品道一品道久久精品| 亚洲精品久久久蜜桃| 91浏览器入口在线观看| 亚洲三级在线免费观看| 一本到高清视频免费精品| 亚洲一二三区不卡| 日韩一二三区视频| 国产精品亚洲午夜一区二区三区| 国产亲近乱来精品视频| 99国内精品久久| 亚洲妇女屁股眼交7| 精品免费视频一区二区| 福利91精品一区二区三区| 国产精品久久久久一区| 欧美日韩视频在线第一区| 日本视频中文字幕一区二区三区| 亚洲精品一区二区三区在线观看| 成人一区二区三区中文字幕| 18成人在线观看| 日韩视频国产视频| 成人激情免费视频| 亚洲与欧洲av电影| 欧美成人精品福利| 不卡的av电影在线观看| 亚洲gay无套男同| 久久久精品国产免费观看同学| 99r国产精品| 久久99精品国产麻豆不卡| 最新国产精品久久精品| 欧美一区二区三区免费大片 | 精品国产一区二区三区久久久蜜月| 国产一区二区不卡老阿姨| 亚洲欧美视频在线观看| 日韩欧美色综合| 欧美综合一区二区三区| 国产精品一线二线三线| 亚洲高清免费观看高清完整版在线观看| 欧美大片拔萝卜| 欧美亚洲一区二区在线| 成人综合日日夜夜| 免费成人在线播放| 亚洲视频一区在线观看| 久久久久久久综合| 欧美老女人在线| 色系网站成人免费| 风间由美中文字幕在线看视频国产欧美| 午夜一区二区三区在线观看| 中文字幕中文在线不卡住| 精品日韩一区二区三区免费视频| 在线观看三级视频欧美| av在线不卡电影| 春色校园综合激情亚洲| 久久不见久久见中文字幕免费| 亚洲成av人片| 亚洲免费资源在线播放| 中文字幕视频一区二区三区久| 欧美精品一区二区三区蜜桃| 91精品国产综合久久久蜜臀粉嫩| 在线观看亚洲精品| 91麻豆福利精品推荐| 成人av午夜电影| 成人精品国产免费网站| 国产风韵犹存在线视精品| 韩国av一区二区三区| 男女男精品视频| 伦理电影国产精品| 欧美96一区二区免费视频| 日韩黄色在线观看| jvid福利写真一区二区三区| 国产曰批免费观看久久久| 免费成人在线观看| 免费成人结看片| 精品亚洲成a人在线观看| 免费人成在线不卡| 美女www一区二区| 久久国产综合精品| 久久国产精品99久久久久久老狼| 精品一区二区久久久| 国产在线视频一区二区| 久久99国产精品久久| 国产精品一区二区你懂的| 国产高清精品久久久久| 成人黄色一级视频| 色久优优欧美色久优优| 欧美日韩精品一区视频| 日韩视频免费直播| 国产午夜精品一区二区三区嫩草| 国产亚洲va综合人人澡精品| 国产精品久久看| 亚洲午夜私人影院| 久久国产欧美日韩精品| 国产成人免费高清| 色狠狠桃花综合| 欧美一级久久久| 国产精品久久久久久久久久免费看| 亚洲婷婷在线视频| 三级一区在线视频先锋 | 国产成人av自拍| 日本精品裸体写真集在线观看| 欧美日韩视频一区二区| 久久亚洲影视婷婷| 亚洲日本在线观看| 日本强好片久久久久久aaa| 国产在线播放一区| 在线观看网站黄不卡| 精品卡一卡二卡三卡四在线| 欧美激情一区三区| 午夜精品福利一区二区三区蜜桃| 激情五月播播久久久精品| 成+人+亚洲+综合天堂| 欧美日韩精品福利| 国产午夜精品久久| 午夜精品一区二区三区免费视频| 国产揄拍国内精品对白| 欧洲精品一区二区| 国产色婷婷亚洲99精品小说| 亚洲制服丝袜在线| 丰满白嫩尤物一区二区| 欧美人动与zoxxxx乱| 国产精品国产精品国产专区不片 | 777午夜精品视频在线播放| 国产视频一区二区三区在线观看| 亚洲国产aⅴ成人精品无吗| 国产suv精品一区二区三区| 欧美日韩一区二区三区高清 | 久久综合久久综合久久综合| 一区二区三区四区五区视频在线观看| 日本va欧美va瓶| 欧美在线观看你懂的| 国产精品情趣视频| 日本aⅴ亚洲精品中文乱码| 91视频精品在这里| 久久久精品黄色| 久久国产精品99久久久久久老狼| 在线免费不卡电影| 亚洲图片另类小说| 国产福利一区在线| 久久这里只有精品首页| 日本美女一区二区三区| 欧美三级电影网站| 亚洲欧美aⅴ...| 波多野结衣欧美| 国产女人aaa级久久久级| 狠狠狠色丁香婷婷综合激情| 这里只有精品99re| 五月天中文字幕一区二区| 日本二三区不卡| 一区二区三区丝袜| 日本国产一区二区| 亚洲乱码中文字幕| 91麻豆.com| 亚洲高清免费观看高清完整版在线观看| 91影院在线免费观看| 亚洲六月丁香色婷婷综合久久| 91香蕉视频在线|