![]() |
Complex Library
Liste der Anhänge anzeigen (Anzahl: 4)
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:
Und hier ein Beispiel, wie man zwei Strings in eine komplexe Zahl umwandeln und addieren kann:
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
Code:
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.
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
Code:
Lizenz
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); } } } 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 |
Re: Complex Library
Liste der Anhänge anzeigen (Anzahl: 2)
Hier noch die restlichen Anhänge ;)
Dust Signs |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz