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

📄 bextenddemo.java

📁 BDijkstra算法的java实现。使用工具是eclipse
💻 JAVA
字号:
/**
 * 该类的功能是在Kuffner算法中,判断某节点的一个临近单元格是否扩展过,
 * 如果没有扩展过,则对其进行扩展,创建对应的节点并加入open表中
 * 如果已经扩展过,而该临近节点与该节点的关系是直交,则需要对其对应节点
 * 的距离长度进行判断,如果该长度大于从目前节点扩展到该节点的长度,
 * 则对该单元格对应的节点的属性进行更改
**/

package page;

import java.util.*;

public class BExtendDemo 
{
	public BExtendDemo ()
	{
	}	
		
	//对斜交子单元格的判定
	public BExtendDemo (int[][] environ,int x,int y,int distance2,LinkedList open,int nowx,int nowy)
	{
		if(environ[x][y]==0)   //如果为零,则说明该单元格可达,而且没有扩展过
		{
			environ[x][y]=distance2;    //在数组中显示该节点的路径长度					
			open.add(new BNodes(x,y,nowx,nowy,distance2));
		}	
	}

	//对直交子单元格的判定
	public BExtendDemo (int[][] environ,int x,int y,int distance1,LinkedList open,int nowx,int nowy,int i)
	{
		if(environ[x][y]==0)  //如果为零,则说明该单元格可达,而且没有扩展过
		{
			environ[x][y]=distance1;    //在数组中显示该节点的路径长度
			open.add(new BNodes(x,y,nowx,nowy,distance1));			
		}
		
		//不为零且是可达单元,说明之前已经扩展过,那么只需要对其距离进行比较处理即可	
		else if(environ[x][y]!=555)  
		{
			//如果其距离长度大于distance1,则从open表中找出该节点,对其属性进行更改
			if(environ[x][y]>distance1)
			{
				if(open.size()>0)
				{
					environ[x][y]=distance1;
					
					BNodes now=(BNodes)new BChooseClosed(open,x,y).getNode();
					now.setPre(nowx,nowy);
					now.setDistance(distance1);
				}
			}
		}
	}//构造函数结束
}

⌨️ 快捷键说明

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