public override bool Equals(object obj) { if (obj == null) { return(false); } if (!(obj is Graph2DCoords)) { return(false); } Graph2DCoords coords = (Graph2DCoords)obj; return(row == coords.row && col == coords.col); }
/// <summary> /// Obtém o próximo nó a partir do nó de coordenadas coords no qual deve ser seguido para ficar mais próximo do nó de destino (previamente informado pela chamada ao método GenerateNodeValues) /// </summary> /// <param name="coords">Coordenadas do nó de origem</param> /// <returns>Próximo nó do menor caminho entre o nó de coordenadas coords até o nó de destino informado pela chamada ao método GenerateNodeValues, false caso GenerateNodeValues não tenha sido chamado desde a última modificação do grafo</returns> public Node GetNextNode(Graph2DCoords coords) { return(GetNextNode(coords.Row, coords.Col)); }
/// <summary> /// Obtém o menor caminho entre dois nós. Deve-se chamar o método GenerateNodeValues antes de chamar este método. /// </summary> /// <param name="coords">Coordenadas do nó de origem</param> /// <param name="route">Lista contendo os nós de menor caminho, ordenada no sentido da origem para o destino</param> /// <returns>true se for encontrado o menor caminho, false caso contrário ou se o nó de destino não foi informado previamente com a chamada ao método GenerateNodeValues</returns> public bool GetMinimalRoute(Graph2DCoords coords, List <Graph2DCoords> route) { return(GetMinimalRoute(coords.Row, coords.Col, route)); }
/// <summary> /// Obtém o menor caminho entre dois nós /// </summary> /// <param name="src">Coordenadas do nó de origem</param> /// <param name="dst">Coordenadas do nó de destino</param> /// <param name="route">Lista contendo os nós do menor caminho, ordenada no sentido da origem para o destino</param> /// <returns>true se for encontrado o menor caminho, false caso contrário</returns> public bool GetMinimalRoute(Graph2DCoords src, Graph2DCoords dst, List <Graph2DCoords> route) { return(GetMinimalRoute(src.Row, src.Col, dst.Row, dst.Col, route)); }
/// <summary> /// Preenche os valores de todos os nós do grafo com as distâncias relativas a posição informada. /// Para a posição informada a distância é zero e portanto o valor será zero. /// Para os nós vizinhos os valores serão 1. /// Para os vizinhos dos vizinhos que ainda não tiverem valores definidos a distância será 2. /// O preenchimento continua até que todos os nós atíngiveis a partir do nó inicial estejam com seus valores definidos. /// Os nós que não forem atingíveis a partir do nó inicial ficarão com seus valores definidos como infinoto. /// </summary> /// <param name="dst">Coordenadas do nó inicial (nó de destino na geração do menor caminho)</param> public void GenerateNodeValues(Graph2DCoords dst) { GenerateNodeValues(dst.Row, dst.Col); }
/// <summary> /// Exclui um nó /// </summary> /// <param name="coords">Coordenadas do nó</param> /// <returns>Nó excluido caso ele exista, null caso contrário</returns> public Node Delete(Graph2DCoords coords) { return(Delete(coords.Row, coords.Col)); }
/// <summary> /// Cria um novo nó nas coordenadas especificadas /// </summary> /// <param name="coords">Coordenadas do novo nó</param> /// <returns>Nó criado caso ele não existia, caso contrário retorna o nó existente associado as coordenadas especificadas</returns> public Node Insert(Graph2DCoords coords) { return(Insert(coords.Row, coords.Col)); }