예제 #1
0
void pathFinding::findNeighboringCell(node c_node, bool diagonal = false)
{
    addCell(getCellIdFromPoint(c_node.getX(),  c_node.getY() + 1), c_node);

    addCell(getCellIdFromPoint(c_node.getX() - 1,  c_node.getY()), c_node);

    addCell(getCellIdFromPoint(c_node.getX() + 1, c_node.getY()), c_node);

    addCell(getCellIdFromPoint(c_node.getX(), c_node.getY() - 1), c_node);


    if (diagonal)
    {
        addCell(getCellIdFromPoint(c_node.getX() - 1, c_node.getY() + 1), c_node);

        addCell(getCellIdFromPoint(c_node.getX() + 1, c_node.getY() + 1), c_node);

        addCell(getCellIdFromPoint(c_node.getX() + 1, c_node.getY() - 1), c_node);

        addCell(getCellIdFromPoint(c_node.getX() - 1, c_node.getY() - 1), c_node);

    }
    sortOpenList();
}
예제 #2
0
	float angle(node d1){
		float dx = d1.getX()-x;
		float dy = d1.getY()-y;
		return atan2(dy,dx);
	}
예제 #3
0
	float dist(node d1){
		return pow(pow(x-d1.getX(),2) + pow(y-d1.getY(),2),0.5);
	}
예제 #4
0
void node::calculH(node endNode)
{
    h = 10 * (fabs(endNode.getX() - m_x)  + fabs(endNode.getY() - m_y));
}