В контексте C #, .Net 4 ...
Учитывая объект источника данных, который предоставляет вершины по индексу из массива двойников, где вершина содержит десять двойников с членами Px, Py, Pz,Nx, Ny, Nz, S, T, U, V. и вспомогательный массив содержит все или любое подмножество элементов вершины, основанное на свойствах шага, смещения и счетчика источника данных.Источник данных может быть упрощен как:
public class DataSource
{
private double[] data;
private int offset, stride, count;
public double[] ElementAt(int index)
{
double[] result = new double[count];
var relativeIndex = index * stride + offset;
Array.Copy(data, relativeIndex, result, 0, count);
return result;
}
.
.
.
}
Некоторым потребителям будет интересен тип возвращаемого значения double [], но большинство будет запрашивать данные как тип PointNf, где N - число взятых членов вершины (Point1f ... Point10f).Потребитель типа Point не заботится о шаге источника, и источник предоставляет ноль для элементов, превышающих его шаг.например, Point4f из источника шага 3 будет заполнен данными [i + 0], данными [i + 1], данными [i + 2], 0.
Очевидно, DataSource может предоставлять методы GetPoint1f (int index), GetPoint2f (int index) и тому подобное.Эти типы решений лучше всего подходят, учитывая фиксированный набор типов возвращаемых данных, размер элемента и т. Д. Однако ...
Каковы возможные решения, если синтаксис, такой как ...
Point3f point = SomeDataSource.ElementAt[index];
...или подобное было запрошено / обязательно / желательно? ... плюсы / минусы? ... примеры чего не делать? ... грубый язык?