Hvordan kan jeg konvertere en rekke structs inn en rekke Point3D gjenstander i C #?

stemmer
0

Jeg har til hensikt å danne 3D mesh objekt. Maske objektet har et 3D punkt matrise av ca.. 50.000 eks. På grunn av antallet 3D-punkter, må matrisen initialiseres på haugen.

Den nødvendige koden er, kort tid, som følger:

class MyMesh
{
    public MeshGeometry3D Mesh3D  // Properties tanimlaniyor
    {
        get { return GetMesh3D(); }
    }

    public struct mystruct
    {
        public int m_i;
        public int m_j;
        public int m_k;

        public mystruct(int i, int j, int k)
        {
            m_i = i;
            m_j = j;
            m_i = k;
        }
    }

    private mystruct[] mypts = 
    {
        new mystruct(20 , 7 , 7),   
        .
        .
        new mystruct(23 , 5 , 7)     
    };
}

Kan du forklare meg hvordan 3D-koordinater i mystructovenfor kan konverteres til 3D koordinatene til en System.Windows.Media.Media3D.Point3Dstruktur.

Takk på forhånd.

oner YILMAZ

Publisert på 21/05/2009 klokken 20:04
kilden bruker
På andre språk...                            


3 svar

stemmer
2

Hvis du har en faktisk liste over 50.000 mystructgjenstander, ville det være bedre å bare lage dem som Point3Dstructs i første omgang?

Rett og slett en "Søk og erstatt" av:

ny mystruct (

og erstatte den med

ny Point3D (

Deretter endring:

private mystruct[] mypts = 

til:

private Point3D[] mypts =
Svarte 21/05/2009 kl. 20:31
kilden bruker

stemmer
0

Er du ute etter noe sånt ...

List<Point3D> points = mypts.Select<mystruct, Point3D> (x => 
                                      new Point3D(x.m_i, x.m_j, x.m_k))
                            .ToList();

Alternativt kan du avsløre en iterator som returnerte en IEnumerable som dette ...

public IEnumerable<Point3D> Points()
{
    foreach(var point in mypts)
    {
        yield return new Point3D(point.m_i, point.m_j, point.m_k, );
    }
}

[Legg validering / feilhåndtering kode som passende]

Svarte 21/05/2009 kl. 20:36
kilden bruker

stemmer
-1

Hvis du trenger å beholde dine mystruct gjenstander samt at Point3D funksjonalitet, kan du bruke noe sånt som:

class MyMesh {
    ...

    public Point3D[] ToPoint3D()
    {
        Point3D[] p3D = null;   // or set it to an Empty Point3D array, if necessary

        if (mpts.Length > 0)
        {
            p3D = new Point3D[mpts.Length]

            for (int x = 0; x < mypts.Length; x++)
            {
                p3D[x].X = new Point3D(mypts[x].m_i;
                p3D[x].Y = new Point3D(mypts[x].m_j;
                p3D[x].Z = new Point3D(mypts[x].m_k;
            }
        }

        return p3D;
    }

    ...
}
Svarte 21/05/2009 kl. 20:35
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more