3
using Microsoft.DirectX.Direct3D;

struct Voxel
{
    public Vector3 p

    public Voxel(float _x, float _y, float _z)
    {
        p = new Vector3(_x, _y, _z);
    }
}

List<Voxel> myDataList = new List<Voxel>();

いくつかのデータメソッドを追加した後、最終的にmyDataList以下のようなものになります:

myDataList[0] - { X: 164 , Y: 59 , Z: 120 }
myDataList[1] - { X: 146 , Y: 63 , Z: 120 }
myDataList[2] - { X: 192 , Y: 59 , Z: 120 }
myDataList[3] - { X: 196 , Y: 79 , Z: 120 } //peak coordinate is here
myDataList[4] - { X: 110 , Y: 55 , Z: 120 }

上記の例では、myDataList[3] は Y 値が最大の 79 であるピーク座標です。

私の質問は、myDataList[3] が最高の Y 値を含むピーク座標であることを特定するにはどうすればよいですか?

最大Y値を取得するには、以下のようなことができることを知っています

float maxY = myDataList.Max(y => y.p.Y); //output = 79

しかし、私が欲しいのは、単に知っているのではなく、3D 座標 (X、Y、Z) です。maxY

* myDataList の順序は次の手順で重要になるため、Y 値と の降順でリストを並べ替えないでください。.First()

4

1 に答える 1

2

すでに持っているので、その値を使用して以下のようにmaxY最大値を見つけることができますVoxel

var maxVoxel = myDataList.FirstOrDefault(x=>x.p.Y ==maxY);
于 2013-08-12T05:23:34.463 に答える