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
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
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; }
}
}
Danke 🙂 Ist ja nicht allzu aufwendig 🙂 Aber dennoch danke
Life is a short
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
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.
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
Salute Seikilos
Vektor (Vector) heisst das Zauberwort.
Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011
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
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
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
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