Laden...

PointD statt PointF / PointF in 3D?

Erstellt von Seikilos vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.535 Views
S
Seikilos Themenstarter:in
753 Beiträge seit 2006
vor 16 Jahren
PointD statt PointF / PointF in 3D?

Ich hab in einem Programm, wo ich mit PointF arbeite, dass Gefühl, dass float nicht genau genug ist und würde gerne auf mehr Stellen umsteigen, aber PointD gibts leider nicht und zwei doubles zu nehmen würde bedeuten, das ganze Programm umschreiben zu müssen. Gibts da ne Lösung?

Life is a short

1.373 Beiträge seit 2004
vor 16 Jahren

Na - selber schreiben! Das dürfte bei einer Point-Struktur nicht zu schwer sein. Zur Note verwendest du Reflector, um zu sehen, was PointF intern macht. Geschätzter Aufwand: 5-60 Minuten, je nach "Copy&Paste" Faktor.

An den Stellen, wo z.B. die Graphics-Funktionen einen PointF erwarten, kannst du natürlich mit deinem PointD nichts machen. Aber wenn du alle Zwischenergebnisse als PointD behandelst und nur zum Ende nach PointF umwandelst (expliziter/impliziter cast-operator!) dürfte das schon was bringen.

Grüße,
Andre

849 Beiträge seit 2006
vor 16 Jahren

Hi, ich hatte schonmal sowas geschrieben..



public struct PointD
        {
            public PointD(double x, double y)
            {
                this._x = x;
                this._y = y;
            }

            public bool IsEmpty
            {
                get { return _x == 0 && _y == 0; }
            }

            private double _x;

            public double X
            {
                get { return _x; }
                set {_x = value; }
            }
            
            private double _y;

            public double Y
            {
                get { return _y; }
                set { _y = value; }
            } 
        }


S
Seikilos Themenstarter:in
753 Beiträge seit 2006
vor 16 Jahren

Danke 🙂 Ist ja nicht allzu aufwendig 🙂 Aber dennoch danke

Life is a short

0
767 Beiträge seit 2005
vor 16 Jahren

den expliziten operator für PointF kannst gleich so dazubauen:


        public static explicit operator PointF(PointD point)
        {
            return new PointF((float)point.X, (float)point.Y);
        }

und dann verwenden:


PointD pd = new PointD(75.3, 92.2);
PointF pf = (PointF)pd;

loop:
btst #6,$bfe001
bne.s loop
rts

B
1.529 Beiträge seit 2006
vor 16 Jahren

Ich hab in einem Programm ... das Gefühl, dass float nicht genau genug ist

Nur ein Gefühl oder Gewissheit? PointF wird ja nur bei der Ausgabe verwendet. Und wozu du dort mehr als 53Bit Genauigkeit brauchst ist mir etwas schleierhaft.

S
Seikilos Themenstarter:in
753 Beiträge seit 2006
vor 16 Jahren
PointF in 3D?

Ich bin an einem Punkt, an dem ich PointF für mehr als zwei Dimensionen brauche, genaugenommen 3 🙂 Und befor ich mir da selber was programmiere, würd ich gerne wissen, ob es einen Datentyp gibt, welcher 3 Punkte speichern kann und ein struct ist

Life is a short

5.941 Beiträge seit 2005
vor 16 Jahren

Salute Seikilos

Vektor (Vector) heisst das Zauberwort.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Peter Bucher,

laut Doku gibt es Vector3 nur für .NET Compact Framework.

Hallo Seikilos,

letztlich ist es doch die gleiche Frage, wie die aus dem Thread, an den ich diesen Beitrag angehängt habe, hier mit mehr Dimensionen, oben mit mehr Genauigkeit.

herbivore

S
Seikilos Themenstarter:in
753 Beiträge seit 2006
vor 16 Jahren

Recth hast du.
Was heiißt denn :
.NET Compact Framework
Unterstützt in: 2.0
Heißt das es unterstützt das CF 2.0 ? Oder das normale Framework 2.0?

Life is a short

5.941 Beiträge seit 2005
vor 16 Jahren

Hallo Herbivore

Original von herbivore
laut Doku gibt es Vector3 nur für .NET Compact Framework.

Ja, hab ich später dann auch gesehen.
Allerdings sind die Vektor Strukturen auch in Microsoft.DirectX vorhanden.
Aber hier macht es auf jeden Fall mehr Sinn, sich selber eine Struktur zu schreiben.

BTW: Ich war gestern der erste der geantwortet hab, wieso stehe ich jetzt hier unten. Echt komisch 🙂

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Peter Bucher,

wieso komisch? Ich habe doch geschrieben warum:

letztlich ist es doch die gleiche Frage, wie die aus dem Thread, an den ich diesen Beitrag angehängt habe, hier mit mehr Dimensionen, oben mit mehr Genauigkeit.

herbivore