private void divideCell(SOTACell cellToDivide) { float[] parentCentroid; cellToDivide.left = new SOTACell(numberOfSamples, dataMatrix); cellToDivide.right = new SOTACell(numberOfSamples, dataMatrix); numberOfClusters++; cellToDivide.left.parent = cellToDivide; cellToDivide.right.parent = cellToDivide; cellToDivide.right.pred = cellToDivide.left; cellToDivide.left.succ = cellToDivide.right; if (cellToDivide.pred != null) { cellToDivide.left.pred = cellToDivide.pred; cellToDivide.left.pred.succ = cellToDivide.left; } else cellToDivide.left.pred = null; if (cellToDivide.succ != null) { cellToDivide.right.succ = cellToDivide.succ; cellToDivide.right.succ.pred = cellToDivide.right; } else cellToDivide.right.succ = null; if (cellToDivide == head) head = cellToDivide.left; cellToDivide.succ = null; cellToDivide.pred = null; for (int i = 0; i < numberOfSamples; i++) { cellToDivide.left.centroidGene.set(0, i, cellToDivide.centroidGene.get(0, i)); cellToDivide.right.centroidGene.set(0, i, cellToDivide.centroidGene.get(0, i)); } }