private double? GetDistance(int segmentsLength, int tmpIndex, int runOrderIndex)
{
if (tmpIndex < runOrderIndex)
{
// the dissimilarity between (column) i and j is retrieved from index [n*i - i*(i+1)/2 + j-i-1].
return this.Distance[segmentsLength * tmpIndex - (tmpIndex * (tmpIndex + 1)) / 2 + runOrderIndex - tmpIndex - 1];
}
else if (tmpIndex > runOrderIndex)
{
return this.Distance[segmentsLength * runOrderIndex - (runOrderIndex * (runOrderIndex + 1)) / 2 + tmpIndex - runOrderIndex - 1];
}
else
{
return null;
}
}