public static Point pointAt( Point start, Point dir, double dist ) {
		if( dir.x == 0 && dir.y == 0 ){
			return start;
		}
		
		double dirDist = Math.sqrt( dist2( 0, 0, dir.x, dir.y ));
		double factor = dist / dirDist;
		
		return new Point( round( start.x + factor * dir.x ), round( start.y + factor * dir.y ) );
	}