AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Complex Library

Complex Library

Ein Thema von Dust Signs · begonnen am 2. Jun 2006 · letzter Beitrag vom 2. Jun 2006
Antwort Antwort
Dust Signs
Registriert seit: 28. Dez 2004
Complex Library

Was ist die Complex Library?

Complex Library ist eine Bibliothek für .NET 2.0 (geschrieben in C#), die Datentypen und Methoden zum Berechnen und Darstellen von komplexen Zahlen bereitstellt. Sie definiert den Namespace DSComplexLib.Calculation mit der Klasse ComplexNumber, die die komplexe Zahl ansich darstellt und diverse Funktionen (zum Formatieren, Parsen, Rechnen...) bereitstellt, sowie den Namespace DSComplexLib.Visualization zur grafischen Darstellung von komplexen Zahlen.

Weitere Informationen findet ihr in der angehängten Dokumentation (siehe Posting unten!), einen Screenshot der Demo ebenfalls. Hinweis: die Demo zeigt nur einen Bruchteil der Funktionalität, allerdings ist dafür auch dementsprechend wenig Quelltext notwendig (siehe Code unten).

Verwendungs-Beispiele

Hier ein Beispiel, wie zwei komplexe Zahlen dividiert und die Wurzel des Ergebnisses berechnet und auf einem Label dargestellt werden kann:

Code:
using DSComplexLib.Calculation;

ComplexNumber c1 = ComplexNumber.j; //j
ComplexNumber c2 = new ComplexNumber(1, 2); //1+2j

ComplexNumber c = (c1 / c2).Sqrt();
c.SetAngleRestriction(AngleRestriction.ar0To2Pi); //Winkel soll zwischen 0 und 2Pi liegen

label1.Text = c.ToCompString(); //In Komponenten-Form ausgeben
label2.Text = c.ToPolarString(false); //In Polar-Form ausgeben
Und hier ein Beispiel, wie man zwei Strings in eine komplexe Zahl umwandeln und addieren kann:

Code:
using DSComplexLib.Calculation;

String s1 = "1+j2"; //1+2j
String s2 = "1*e^j90°"; //j

ComplexNumber c = ComplexNumber.Parse(s1) + ComplexNumber.Parse(s2);
label1.Text = c.ToCompString(); //In Komponenten-Form ausgeben
Hier ein Teil des Sourcecodes der Demo - ihr braucht nur eine leere Form - die entsprechenden Eventhandler sind einzustellen .DLL in die Referenzen hinzufügen nicht vergessen. Die Kommentare sollten selbsterklärend sein.

Code:
using System;
//...

using DSComplexLib.Calculation;
using DSComplexLib.Visualization;

namespace DSComplexLibDemo
{
    public partial class Form1 : Form
    {
        ComplexPlane cPlane;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            cPlane = new ComplexPlane(this.CreateGraphics());
            cPlane.SetSmoothingMode(SmoothingMode.AntiAlias); //Enable Antialiasing

            Pen AuxiliaryPen = new Pen(Color.LightGray, 1);
            AuxiliaryPen.DashStyle = DashStyle.Dot; //Make auxiliary raster lines gray dotted
            cPlane.SetAuxiliaryRasterPen(AuxiliaryPen);
            cPlane.AddCircle(Circle.UnitCircle); //Show unit circle
            cPlane.AddCircle(new Circle(Pens.Black, Math.Sqrt(2))); //Show circle with radius Sqrt(2)

            ComplexPhasorGroup g1 = new ComplexPhasorGroup("Group 1", false); //Create phasor group
            g1.AddPhasor(new ComplexPhasor(new ComplexNumber(1, 1), Pens.Red, "Phasor 1", true, true, ContentAlignment.TopLeft, false, ContentAlignment.BottomLeft, new Font("Verdana", 10), Brushes.Red)); //Add phasor
            g1.AddPhasor(new ComplexPhasor(new ComplexNumber(1, -1), Pens.Blue, "Phasor 2", true, true, ContentAlignment.BottomLeft, false, ContentAlignment.TopLeft, new Font("Verdana", 10), Brushes.Blue));
            cPlane.AddPhasorGroup(g1); //Add phasor group to complex plane

            ComplexPhasorGroup g2 = new ComplexPhasorGroup("Group 2", true); //Create phasor group where phasors are added graphically
            g2.AddPhasor(new ComplexPhasor(new ComplexNumber(-1, -1), Pens.Green, "Phasor 3", true, true, ContentAlignment.BottomRight, false, ContentAlignment.TopRight, new Font("Verdana", 10), Brushes.Green));
            g2.AddPhasor(new ComplexPhasor(new ComplexNumber(0, 2), Pens.Purple, "Phasor 4", true, true, ContentAlignment.MiddleLeft, false, ContentAlignment.MiddleRight, new Font("Verdana", 10), Brushes.Purple));
            cPlane.AddPhasorGroup(g2);
        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            cPlane.Render(this.ClientSize.Width, this.ClientSize.Height); //Redraw
        }

        private void Form1_Resize(object sender, EventArgs e)
        {
            Form1_Paint(sender, null); //Redraw when size of window changes
        }

        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            if (((MouseEventArgs)e).Button == MouseButtons.Left) //When moving mouse and left button is pressed...
                cPlane.StretchSelectedPhasor(((MouseEventArgs)e).Location); //...stretch currently selected phasor
        }

        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            cPlane.SelectPhasor(((MouseEventArgs)e).Location);
        }
    }
}
Lizenz

Die Bibliothek darf frei verwendet und modifiziert werden, solange ich als ursprünglicher Autor genannt werde. Für Details bitte den Lizenztext in der angehängten readme.txt lesen.

Download

Die Dateien findet ihr im Anhang.

Würde mich über jegliche Art von Kritik und eventuelle Verbesserungsvorschläge freuen

Dust Signs
Angehängte Dateien
Dateityp: zip cmpx_lib_doc_121.zip (141,1 KB, 18x aufgerufen)
Dateityp: zip cmpx_lib_demo_132.zip (22,9 KB, 20x aufgerufen)
Dateityp: zip cmpx_lib_src_204.zip (27,1 KB, 26x aufgerufen)
Dateityp: txt readme_197.txt (3,4 KB, 16x aufgerufen)
(aka AXMD in der EE)
Die Nummer, die Sie gewählt haben, ist imaginär. Bitte drehen Sie Ihr Telefon um 90° und versuchen Sie es erneut.
 
Dust Signs
 
#2
  Alt 2. Jun 2006, 21:36
Hier noch die restlichen Anhänge

Dust Signs
Miniaturansicht angehängter Grafiken
cmpxdemo_167.gif  
Angehängte Dateien
Dateityp: zip cmpx_lib_docdev_169.zip (181,4 KB, 15x aufgerufen)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz