public IEnumerable<List<double>> GetComponentsForEachDimension(Vector b) { if (this.NumberOfDimensions != b.NumberOfDimensions) throw new Exception("Inconsistent dimensionalities"); for (int i = 0; i < this.NumberOfDimensions; i++) { List<double> componentsToReturn = new List<double>(); if (i == 0) { componentsToReturn.Add(this.GetX()); componentsToReturn.Add(b.GetX()); } if (i == 1) { componentsToReturn.Add(this.GetY()); componentsToReturn.Add(b.GetY()); } if (i == 2) { componentsToReturn.Add(this.GetZ()); componentsToReturn.Add(b.GetZ()); } yield return componentsToReturn; } }