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

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

?? rescuevansim.java

?? 一個多機器人的仿真平臺
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/* * RescueVanSim.java */package EDU.gatech.cc.is.abstractrobot;import java.awt.*;import java.util.Enumeration;import EDU.gatech.cc.is.util.*;import EDU.gatech.cc.is.simulation.*;import EDU.gatech.cc.is.communication.*;import EDU.cmu.cs.coral.simulation.*;import EDU.cmu.cs.coral.util.Polygon2;import EDU.cmu.cs.coral.util.Circle2;/** * RescueVanSim implements RescueVanSim for simulation. * Also includes code implementing communication, gripper and * vision. * <P> * <A HREF="../COPYRIGHT.html">Copyright</A> * (c)1998 Tucker Balch * * @see RescueVanSim * @author Tucker Balch * @version $Revision: 1.5 $ */public class RescueVanSim extends Simple	implements SimulatedObject, RescueVan	{	private	CircularBuffer	trail;	// robot's trail	private KinSensorSim	kin_sensor;	// senses our kin	private TransceiverSim	transceiver;	// comm to other robots	protected Vec2	position;	protected Vec2	steer;	private	double	speed;	protected Color	foreground, background;	private long	time;	private double	timed;	protected double left, right, top, bottom;	private	SimulatedObject[] all_objects = new SimulatedObject[0];	private	int	visionclass;	public	static final boolean DEBUG = false;	/**	 * Instantiate a <B>RescueVanSim</B> object.  Be sure	 * to also call init with proper values.	 * @see RescueVanSim#init	 */        public RescueVanSim()		{		/*--- set parameters ---*/                super(1);		position = new Vec2(0,0);		steer = new Vec2(1,0);		foreground = Color.black;		background = Color.black;		if (DEBUG) System.out.println("RescueVanSim: instantiated.");		/*--- set default bounds ---*/		top = 100000;		bottom = -100000;		left = -100000;		right = 100000;		}	        /**         * Initialize a <B>RescueVanSim</B> object.         */	public void init(double xp, double yp, double tp, double ignore,		Color f, Color b, int v, int i, long s)		{		trail = new CircularBuffer(1000);		setID(i);                kin_sensor = new KinSensorSim(this);		transceiver = new TransceiverSim(this, this);		position = new Vec2(xp,yp);		steer = new Vec2(1,0);		steer.sett(tp);		foreground = f;		background = b;		time = 0;		timed = 0;		visionclass = v;		if (DEBUG) System.out.println("RescueVanSim: initialized"			+" at "+xp+","+yp);		}	/**	 * Take a simulated step;	 */	private double last_traversability = 1.0;	public void takeStep(long time_increment, SimulatedObject[] all_objs)		{		if (DEBUG) System.out.println("RescueVanSim.TakeStep()");                if (DEBUG) System.out.println("position is "+position.x+","+position.y);		/*--- keep pointer to the other objects ---*/		all_objects = all_objs;		/*--- update the time ---*/		time += time_increment;		double time_incd = ((double)time_increment)/1000;		timed += time_incd;		/*--- update the steering ---*/		double sturn = Units.BestTurnRad(steer.t, desired_heading);		if (Math.abs(sturn) > (MAX_STEER*time_incd))			{			if (sturn<0)				sturn = -MAX_STEER*time_incd;			else sturn = MAX_STEER*time_incd;			}		steer.sett(steer.t + sturn);		/*--- compute velocity ---*/		Vec2 velocity = new Vec2(steer.x, steer.y);		if (in_reverse)			velocity.setr(-base_speed * last_traversability				* desired_speed);		else			velocity.setr(base_speed * last_traversability				* desired_speed);		/*--- compute a movement step ---*/		Vec2 mvstep = new Vec2(velocity.x, velocity.y);		mvstep.setr(mvstep.r * time_incd);		/*--- test the new position to see if in bounds ---*/		Vec2 pp = new Vec2(position.x, position.y);		pp.add(mvstep);		if (pp.x+RADIUS > right)			{			position.setx(right-RADIUS);			velocity.setx(0);			mvstep.setx(0);			}		else if (pp.x-RADIUS < left)			{			position.setx(left+RADIUS);			velocity.setx(0);			mvstep.setx(0);			}		if (pp.y+RADIUS > top)			{			position.sety(top-RADIUS);			velocity.sety(0);			mvstep.sety(0);			}		else if (pp.y-RADIUS < bottom)			{			position.sety(bottom+RADIUS);			velocity.sety(0);			mvstep.sety(0);			}		/*--- test the new position to see if on top of obstacle ---*/		pp = new Vec2(position.x, position.y);		boolean moveok = true;		last_traversability = 1.0;		pp.add(mvstep);		for (int i=0; i<all_objects.length; i++)			{			if (all_objects[i].isObstacle() && 				(all_objects[i].getID() != unique_id))				{				Vec2 tmp = all_objects[i].getClosestPoint(pp);				if (tmp.r < RADIUS)					{					moveok = false;					break;					}				}			else if (all_objects[i] instanceof 				SimulatedTerrainObject)				{				Vec2 tmp = all_objects[i].getClosestPoint(pp);				if (tmp.r == 0) // on/in object					last_traversability =				((SimulatedTerrainObject)all_objects[i]).getTraversability();				}			}		if (moveok) position.add(mvstep);		/*--- test the new position to see if on top of pushable ---*/		for (int i=0; i<all_objects.length; i++)			{			if (all_objects[i].isPushable() && 				(all_objects[i].getID() != unique_id))				{				Vec2 tmp = all_objects[i].getClosestPoint(pp);				if (tmp.r < RADIUS)					{					tmp.setr(RADIUS - tmp.r);					all_objects[i].push(tmp, velocity);					}				}			}                if (DEBUG) System.out.println("position is "+position.x+","+position.y);		}		/*--- From RescueVan ---*/	/**	 * Report how many things are loaded in the van.	 */	public int getNumObjectsCarrying(long timestamp)		{		return(num_loaded);		}	/**	 * Pick up something and load it in the van.	 */	private SimulatedObject[] loaded = new SimulatedObject[MAX_CAPACITY];	private int num_loaded = 0;	public boolean pickup(long timestamp)		{		boolean got_something = false;                /*--- check all objects ---*/		for(int i = 0; i<all_objects.length; i++)			{			/*--- check if it's not self ---*/			if (all_objects[i].getID() != unique_id)				{				Vec2 tmp = all_objects[i].getCenter(position);				// check if can pick it up				if ((tmp.r<PICKUP_CAPTURE_RADIUS)					&&(all_objects[i].isPickupable())					&&(all_objects[i].getVisionClass()>=0)					&&(num_loaded<MAX_CAPACITY))					{					// pick it up					loaded[num_loaded++] = all_objects[i];					all_objects[i].pickUp(						(SimulatedObject) this);					got_something = true;					break;                                        }                                }                        }		return(got_something);		}	/**	 * Drop something out of the van in Last-In-First-Out (LIFO) order.	 */	public void drop(long timestamp)		{		if (num_loaded>0)			{			num_loaded--;			loaded[num_loaded].putDown(new Vec2(position));			}		}	/*--- From SimulatedObject ---*/	public boolean isObstacle()		{		return(true);		}		public boolean isPushable()		{		return(false);		}		public boolean isPickupable()		{		return(false);		}		public Vec2 getClosestPoint(Vec2 from)		{		Vec2 tmp = new Vec2(position.x, position.y);		tmp.sub(from);		if (tmp.r < RADIUS)			tmp.setr(0);		else			tmp.setr(tmp.r-RADIUS);		return(tmp);		}        /**	 * determine if the object is intersecting with a specified circle.	 * This is useful for obstacle avoidance and so on.	 * @param c the circle which may be intersecting the current object.	 * @return true if collision detected.         */	public boolean checkCollision(Circle2 c)	    {	    Vec2 closest = getClosestPoint(c.centre); // closest is a vector with origin at centre that leads to closest point on current object	    if (closest.r <= c.radius) // closest point is within c.radius of c.centre			{			return true;			}	    else 			{			return false;			}	    }        /**	 * determine if the object is intersecting with a specified polygon.	 * This is useful for obstacle avoidance and so on.	 * @param p the polygon which may be intersecting the current object.	 * @return true if collision detected.         */	public boolean checkCollision(Polygon2 p)		{		Vec2 vertex1, vertex2, vec1, vector2, closestPt;		int numberEdges = p.vertices.size(); // n edges if n vertices (as vertex n+1 wraps round to vertex 0)		double scale;		for (int i=0;i<numberEdges;i++)			{			vertex1 = (Vec2)p.vertices.elementAt(i);			vertex2 = (Vec2)p.vertices.elementAt((i+1)%numberEdges);			vertex1.sub(position);			vertex2.sub(position);			// if either vertex is within the circles radius you are colliding			if ((vertex1.r < RADIUS) || (vertex2.r < RADIUS))				{				return true;				} 			vertex1.add(position);			vertex2.add(position);			vec1 = new Vec2(vertex2);			vec1.sub(vertex1);			vector2 = new Vec2(position);			vector2.sub(vertex1);			scale = ((vec1.x*vector2.x)+(vec1.y*vector2.y))/((vec1.x*vec1.x)+(vec1.y*vec1.y));			closestPt = new Vec2(scale*vec1.x, scale*vec1.y);			closestPt.add(vertex1); // absolute position of closest point			closestPt.sub(position); // position of closest point relative to centre of current object			if (closestPt.r < RADIUS)				{				// now need to check if closestPt lies between vertex1 and vertex2				// i.e. it could lie on vector between them but outside of them				if ( (scale > 0.0) && (scale < 1.0) )					{					return true;					}				}			}		return false; // closest point to object on each edge of polygon not within object					}	public Vec2 getCenter(Vec2 from)		{		Vec2 tmp = new Vec2(position.x, position.y);		tmp.sub(from);		return(tmp);		}	public void push(Vec2 d, Vec2 v)		{		// sorry no pushee robots!		}	public void pickUp(SimulatedObject o)		{		// sorry no pickupee robots!		}	public void putDown(Vec2 p)		{		// sorry no put downee robots!		}	public void setVisionClass(int v)		{		visionclass = v;		}	public int getVisionClass()		{		return(visionclass);		}	  public Color getForegroundColor() { return foreground; }	  public Color getBackgroundColor() { return background; }	/**         * Draw the robot's ID.         */        public void drawID(Graphics g, int w, int h,                double t, double b, double l, double r)                {                top =t; bottom =b; left =l; right =r;                if (DEBUG) System.out.println("draw "+                        w + " " +                        h + " " +                        t + " " +                        b + " " +                        l + " " +                        r + " ");                double meterspp = (r - l) / (double)w;                int radius = (int)(RADIUS / meterspp);                int xpix = (int)((position.x - l) / meterspp);                int ypix = (int)((double)h - ((position.y - b) / meterspp));                /*--- draw ID ---*/                g.setColor(background);                g.drawString(String.valueOf(getPlayerNumber(0))			,xpix-radius,ypix-radius);                }        private Point last = new Point(0,0);        /**         * Draw the robot's Trail.         */        public void drawTrail(Graphics g, int w, int h,                double t, double b, double l, double r)                {                top =t; bottom =b; left =l; right =r;                if (DEBUG) System.out.println("draw "+                        w + " " +                        h + " " +                        t + " " +                        b + " " +                        l + " " +                        r + " ");                double meterspp = (r - l) / (double)w;                int xpix = (int)((position.x - l) / meterspp);                int ypix = (int)((double)h - ((position.y - b) / meterspp));                /*--- record the point ---*/                Point p = new Point(xpix,ypix);                if ((last.x!=xpix)||(last.y!=ypix))                        trail.put(p);                last = p;                /*--- get the list of all points ---*/                Enumeration point_list = trail.elements();                /*--- draw the trail ---*/                g.setColor(background);                Point from = (Point)point_list.nextElement();                while (point_list.hasMoreElements())                        {                        Point next = (Point)point_list.nextElement();                        g.drawLine(from.x,from.y,next.x,next.y);                        from = next;                        }                }	private String display_string = "blank";	/**         * Set the String that is printed on the robot's display.         * For simulated robots, this appears printed below the agent         * when view "Robot State" is selected.         * @param s String, the text to display.         */        public void setDisplayString(String s)		{		display_string = s;		}        /**         * Draw the robot's state.         */        public void drawState(Graphics g, int w, int h,                double t, double b, double l, double r)                {                top =t; bottom =b; left =l; right =r;                if (DEBUG) System.out.println("draw "+                        w + " " +                        h + " " +                        t + " " +                        b + " " +                        l + " " +                        r + " ");                double meterspp = (r - l) / (double)w;                int radius = (int)(RADIUS / meterspp);                int xpix = (int)((position.x - l) / meterspp);                int ypix = (int)((double)h - ((position.y - b) / meterspp));                /*--- draw State ---*/                g.setColor(background);                g.drawString(display_string,xpix+radius+3,ypix-radius);                displayVectors.draw(g,w,h,t,b,l,r);		}	/**         * Set the length of the trail (in movement steps).         * @param l int, the length of the trail.         */        public void setTrailLength(int l)		{		trail = new CircularBuffer(l);		}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品视频在线观看免费| 国产风韵犹存在线视精品| 99久久久久久| 国产精品国产成人国产三级| 国产成人av一区| 中文字幕高清不卡| 91麻豆国产福利精品| 亚洲美女在线一区| 欧美另类z0zxhd电影| 日本中文字幕一区| 久久久久久99久久久精品网站| 高清久久久久久| 亚洲日本在线天堂| 欧美男同性恋视频网站| 蜜桃一区二区三区四区| 中文字幕av一区二区三区| 在线观看亚洲a| 日韩 欧美一区二区三区| 国产三级久久久| 91国产丝袜在线播放| 日韩 欧美一区二区三区| 久久精品一区二区| 91国产丝袜在线播放| 久久精品国产99国产精品| 国产精品久久久久久亚洲伦| 在线观看视频一区二区欧美日韩| 日本一道高清亚洲日美韩| 欧美国产欧美综合| 欧美乱妇一区二区三区不卡视频| 国产精品一级片在线观看| 一区二区欧美视频| 精品国产乱码久久久久久1区2区| 99精品久久免费看蜜臀剧情介绍| 水野朝阳av一区二区三区| 国产欧美日产一区| 91精品国产综合久久精品性色 | 亚洲人成影院在线观看| 欧美日韩精品一区二区三区 | 国产亚洲精品资源在线26u| av高清不卡在线| 久久激情综合网| 一区二区三区在线观看动漫 | 国产亚洲欧美激情| 欧美日韩成人高清| 不卡的av电影在线观看| 欧美aaaaaa午夜精品| 亚洲人成人一区二区在线观看| 日韩欧美一区在线| 色婷婷一区二区| 国产成人超碰人人澡人人澡| 亚洲国产精品自拍| 中文字幕中文字幕在线一区| 91精品国产综合久久久蜜臀图片| 91视频在线观看| 国产精品羞羞答答xxdd| 美女诱惑一区二区| 亚洲成av人**亚洲成av**| 国产精品欧美经典| 久久久久久久国产精品影院| 欧美一级久久久久久久大片| 欧洲一区二区三区在线| 91麻豆精品视频| 国产91精品一区二区| 国产麻豆精品一区二区| 日韩av一区二区三区| 午夜亚洲福利老司机| 亚洲女爱视频在线| 国产精品久久毛片a| 国产午夜精品在线观看| 久久女同精品一区二区| 久久精品亚洲乱码伦伦中文 | 91小视频在线| 成人动漫视频在线| 国产精品18久久久久久久久 | 成人黄色片在线观看| 国产成人亚洲综合a∨婷婷| 久久精品国产精品亚洲综合| 美女免费视频一区二区| 午夜成人免费视频| 天天操天天色综合| 天天综合网天天综合色| 天使萌一区二区三区免费观看| 亚洲一区在线看| 婷婷久久综合九色综合绿巨人 | 福利一区二区在线观看| 国产iv一区二区三区| 国产精品资源在线观看| 丁香五精品蜜臀久久久久99网站 | 天天综合色天天综合| 午夜久久电影网| 美女精品自拍一二三四| 久久精品国产99国产| 国产麻豆精品久久一二三| 精品一区二区日韩| 国产.欧美.日韩| 99久久国产免费看| 91首页免费视频| 欧美日韩色一区| 欧美成人a视频| 中文av一区二区| 亚洲欧美一区二区久久| 性欧美大战久久久久久久久| 美女网站视频久久| 成人午夜精品在线| 一本高清dvd不卡在线观看| 欧美老女人第四色| 欧美精品一区二区三区视频| 国产欧美日韩在线| 亚洲一区二区三区精品在线| 丝袜美腿高跟呻吟高潮一区| 国产一区二区不卡| 欧美在线观看视频在线| 欧美一区二区三区在线电影| 欧美国产日韩亚洲一区| 亚洲国产视频网站| 国产美女av一区二区三区| 一本大道综合伊人精品热热| 日韩视频免费观看高清完整版 | 在线免费不卡视频| 欧美videos大乳护士334| 日韩毛片高清在线播放| 久久99精品久久久久婷婷| av网站免费线看精品| 欧美一区二区三区免费在线看| 久久精品一区四区| 三级一区在线视频先锋 | 日韩精品一区二区三区四区视频| 中文在线免费一区三区高中清不卡 | 成人a区在线观看| 欧美丰满少妇xxxxx高潮对白| 久久久国产一区二区三区四区小说 | 成人18精品视频| 欧美不卡一区二区三区四区| 亚洲视频在线一区观看| 精品一区二区免费看| 欧美日韩的一区二区| 亚洲丝袜制服诱惑| 国产福利一区二区三区视频在线 | 国产一区二区精品久久99| 欧美在线999| 国产欧美一二三区| 精品制服美女丁香| 欧美日韩国产首页| 亚洲精品国产第一综合99久久 | 国产一区二区精品在线观看| 欧美日韩电影在线播放| 亚洲欧美日韩国产另类专区| 国产成人99久久亚洲综合精品| 91精品国产综合久久福利| 亚洲午夜成aⅴ人片| 一本大道av伊人久久综合| 亚洲国产精品二十页| 国产精品亚洲第一区在线暖暖韩国| 7777女厕盗摄久久久| 午夜私人影院久久久久| 91久久精品一区二区三| 亚洲欧美一区二区三区国产精品| 国产精品一二三区在线| 久久亚洲影视婷婷| 国产制服丝袜一区| 久久综合av免费| 激情五月激情综合网| 精品国产露脸精彩对白| 狠狠色丁香婷婷综合| 精品日韩成人av| 激情亚洲综合在线| 久久精品一区二区三区不卡牛牛 | 99久久久精品| 亚洲视频在线一区观看| 日本乱码高清不卡字幕| 一区二区三区在线观看欧美| 91成人看片片| 亚洲成人久久影院| 884aa四虎影成人精品一区| 亚洲电影第三页| 欧美人妖巨大在线| 免费高清不卡av| 久久午夜免费电影| 成人激情免费网站| 亚洲精品日韩一| 欧美日韩五月天| 九九精品一区二区| 欧美极品aⅴ影院| 99久久99久久综合| 一区二区三区久久| 欧美性猛交一区二区三区精品| 亚洲成人综合网站| 日韩一级大片在线| 国产精品一二三在| 亚洲日本va在线观看| 欧美性猛片xxxx免费看久爱| 男女视频一区二区| 久久看人人爽人人| 91麻豆.com| 麻豆成人91精品二区三区| 国产日产欧美一区| 色婷婷久久综合| 久久国内精品自在自线400部| 国产欧美一区视频| 欧美性生交片4|