m_countY = 1 + (int) (inverseRadius * (upper.y - lower.y)); m_diagram = new Generator[m_countX * m_countY]; queue.reset(new VoronoiDiagramTask[4 * m_countX * m_countX]); for (int k = 0; k < m_generatorCount; k++) { Generator g = m_generatorBuffer[k]; int x = MathUtils.max(0, MathUtils.min((int) g.center.x, m_countX - 1)); int y = MathUtils.max(0, MathUtils.min((int) g.center.y, m_countY - 1)); queue.push(taskPool.pop().set(x, y, x + y * m_countX, g)); while (!queue.empty()) { VoronoiDiagramTask front = queue.pop(); int x = front.m_x; int y = front.m_y; m_diagram[i] = g; if (x > 0) { queue.push(taskPool.pop().set(x - 1, y, i - 1, g)); queue.push(taskPool.pop().set(x, y - 1, i - m_countX, g)); queue.push(taskPool.pop().set(x + 1, y, i + 1, g)); queue.push(taskPool.pop().set(x, y + 1, i + m_countX, g)); Generator b = m_diagram[i + 1]; if (a != b) { queue.push(taskPool.pop().set(x, y, i, b)); queue.push(taskPool.pop().set(x + 1, y, i + 1, a));
m_countY = 1 + (int) (inverseRadius * (upper.y - lower.y)); m_diagram = new Generator[m_countX * m_countY]; queue.reset(new VoronoiDiagramTask[4 * m_countX * m_countX]); for (int k = 0; k < m_generatorCount; k++) { Generator g = m_generatorBuffer[k]; int x = MathUtils.max(0, MathUtils.min((int) g.center.x, m_countX - 1)); int y = MathUtils.max(0, MathUtils.min((int) g.center.y, m_countY - 1)); queue.push(taskPool.pop().set(x, y, x + y * m_countX, g)); while (!queue.empty()) { VoronoiDiagramTask front = queue.pop(); int x = front.m_x; int y = front.m_y; m_diagram[i] = g; if (x > 0) { queue.push(taskPool.pop().set(x - 1, y, i - 1, g)); queue.push(taskPool.pop().set(x, y - 1, i - m_countX, g)); queue.push(taskPool.pop().set(x + 1, y, i + 1, g)); queue.push(taskPool.pop().set(x, y + 1, i + m_countX, g)); Generator b = m_diagram[i + 1]; if (a != b) { queue.push(taskPool.pop().set(x, y, i, b)); queue.push(taskPool.pop().set(x + 1, y, i + 1, a));
m_countY = 1 + (int) (inverseRadius * (upper.y - lower.y)); m_diagram = new Generator[m_countX * m_countY]; queue.reset(new VoronoiDiagramTask[4 * m_countX * m_countX]); for (int k = 0; k < m_generatorCount; k++) { Generator g = m_generatorBuffer[k]; int x = JBoxUtils.max(0, JBoxUtils.min((int) g.center.x, m_countX - 1)); int y = JBoxUtils.max(0, JBoxUtils.min((int) g.center.y, m_countY - 1)); queue.push(taskPool.pop().set(x, y, x + y * m_countX, g)); while (!queue.empty()) { VoronoiDiagramTask front = queue.pop(); int x = front.m_x; int y = front.m_y; m_diagram[i] = g; if (x > 0) { queue.push(taskPool.pop().set(x - 1, y, i - 1, g)); queue.push(taskPool.pop().set(x, y - 1, i - m_countX, g)); queue.push(taskPool.pop().set(x + 1, y, i + 1, g)); queue.push(taskPool.pop().set(x, y + 1, i + m_countX, g)); Generator b = m_diagram[i + 1]; if (a != b) { queue.push(taskPool.pop().set(x, y, i, b)); queue.push(taskPool.pop().set(x + 1, y, i + 1, a));
m_countY = 1 + (int) (inverseRadius * (upper.y - lower.y)); m_diagram = new Generator[m_countX * m_countY]; queue.reset(new VoronoiDiagramTask[4 * m_countX * m_countX]); for (int k = 0; k < m_generatorCount; k++) { Generator g = m_generatorBuffer[k]; int x = MathUtils.max(0, MathUtils.min((int) g.center.x, m_countX - 1)); int y = MathUtils.max(0, MathUtils.min((int) g.center.y, m_countY - 1)); queue.push(taskPool.pop().set(x, y, x + y * m_countX, g)); while (!queue.empty()) { VoronoiDiagramTask front = queue.pop(); int x = front.m_x; int y = front.m_y; m_diagram[i] = g; if (x > 0) { queue.push(taskPool.pop().set(x - 1, y, i - 1, g)); queue.push(taskPool.pop().set(x, y - 1, i - m_countX, g)); queue.push(taskPool.pop().set(x + 1, y, i + 1, g)); queue.push(taskPool.pop().set(x, y + 1, i + m_countX, g)); Generator b = m_diagram[i + 1]; if (a != b) { queue.push(taskPool.pop().set(x, y, i, b)); queue.push(taskPool.pop().set(x + 1, y, i + 1, a));