Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

[WIP] Redesign plotting API

Offen
#558 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Anfängerfreundlichkeit
25/100
Issue-Typ
Feature
Klarheit
Muss geklärt werden
Aktivitätsstatus
Aktiv
Tech-Stack
csharp, fsharp

Rechercherichtung

Der vorgeschlagene Einstiegspunkt ist der Typ AngouriMath.Interactive.Plot, der für das Plotten und Slider-Methoden GenericChart zurückgibt. Beginne damit, die bestehende experimentelle Plot-Implementierung zu finden und ihr 2D-, 3D- und Slider-Verhalten mit den hier aufgeführten Signaturen und Standardwerten zu vergleichen. Als erledigt gilt, dass die neu entworfene API konsistent implementiert ist und zur offenen Frage nach ausdruckswertigen Bereichen eine dokumentierte Entscheidung vorliegt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Area: Interactive Design document Opinions wanted Proposal

Plotting API

Since 1.4 preview 1 one now can plot functions in "experimental"/preview mode. Time to make it prettier!

Root types

Will be in class Plot:

module AngouriMath.Interactive
...
type AnyFunc = obj
type AnyVar = obj
...
type Plot =
    ... // here the static members come

2D

Signature
static member plottingFunction(func : AnyFunc, 
    [<Optional;DefaultParameterValue(null)>] ?var : AnyVar,
    [<Optional;DefaultParameterValue(null)>] ?range : double seq
) : GenericChart
Functions
Function Default range
cartesianLine [-1.0..0.01..1.0]
cartesianScatter2D [-1.0..0.01..1.0]
polarLine [0.0..0.01..3.1415]
polarScatter [0.0..0.01..3.1415]

3D

Signature
static member plottingFunction(func : AnyFunc, 
    [<Optional;DefaultParameterValue(null)>] ?var1 : AnyVar,
    [<Optional;DefaultParameterValue(null)>] ?var2 : AnyVar,
    [<Optional;DefaultParameterValue(null)>] ?range1 : double seq,
    [<Optional;DefaultParameterValue(null)>] ?range2 : double seq
) : GenericChart

If no var was specified, they're taken from the expression in the alphabet order, e. g. for y + x the variables will be x and y.

Functions
Function Default range 1 Default range 2
cartesianSurface [-1.0..0.05..1.0] [-1.0..0.05..1.0]
cartesianScatter3D [-1.0..0.05..1.0] [-1.0..0.05..1.0]
sphericalSurface [0.0..0.05..3.1415] [0.0..0.05..3.1415]
sphericalScatter [0.0..0.05..3.1415] [0.0..0.05..3.1415]
cylindricalSurface [0.0..0.05..3.1415] [0.0..0.05..1.0]
cylindricalScatter [0.0..0.05..3.1415] [0.0..0.05..1.0]

Sliders

For 2D
static member withSlider2D(func : AnyFunc, 
    plottingFunc : (AnyFunc * AnyVar Option * double seq option) -> GenericChart,
    [<Optional;DefaultParameterValue(null)>] ?var : AnyVar,
    [<Optional;DefaultParameterValue(null)>] ?range : double seq,
    [<Optional;DefaultParameterValue(null)>] ?param : AnyVar,
    [<Optional;DefaultParameterValue(null)>] ?paramRange : double seq,
) : GenericChart

If no parameter and argument is specified, the variables taken from the expression are ordered in alphabet order, and the parameter is the first of them. For example, in x + a the paramater is a and the variable is x.

The default value for range now is [1.0..0.1..2.0], but no default value for range (it will be passed as-is).

For 3D
static member withSlider3D(func : AnyFunc, 
    plottingFunc : (AnyFunc * AnyVar Option * AnyVar Option * double seq Option * double seq Option) -> GenericChart,
    [<Optional;DefaultParameterValue(null)>] ?var1 : AnyVar,
    [<Optional;DefaultParameterValue(null)>] ?var2 : AnyVar,
    [<Optional;DefaultParameterValue(null)>] ?range1 : double seq,
    [<Optional;DefaultParameterValue(null)>] ?range2 : double seq,
    [<Optional;DefaultParameterValue(null)>] ?param : AnyVar,
    [<Optional;DefaultParameterValue(null)>] ?paramRange : double seq,
) : GenericChart

Likewise, the param variable is defined as the first one by alphabet by default.

Unresolved questions

Can we let input expressions? e. g. range = [ 0.0..0.1.. (2 * pi) ]

Vorherrschende Sprache
C#
Sterne
831
Forks
79
Ø Merge
2 Std. 22 Min.
Gemergte PRs (30 T.)
507

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus ASC-Community/AngouriMath

Alle Issues in ASC-Community/AngouriMath

Ähnliche Issues

Weitere Issues zu C#

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.