Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

[WIP] Redesign plotting API

Aberta
#558 3 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
5/5
Tempo estimado
Mais de uma semana
Facilidade para iniciantes
25/100
Tipo de issue
Funcionalidade
Clareza
Precisa de esclarecimento
Status de atividade
Ativa
Stack de tecnologia
csharp, fsharp

Direção de pesquisa

O ponto de entrada proposto é o tipo AngouriMath.Interactive.Plot, que retorna GenericChart para plotagem e métodos de slider. Comece localizando a implementação experimental de plotagem existente e compare seu comportamento em 2D, 3D e com slider com as assinaturas e os valores padrão listados aqui. Considera-se concluído quando a API reprojetada estiver implementada de forma consistente e houver uma decisão documentada sobre a questão não resolvida dos intervalos cujos valores são expressões.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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) ]

Linguagem predominante
C#
Estrelas
831
Forks
79
Merge médio
1h 12min
PRs com merge (30d)
467

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de ASC-Community/AngouriMath

Todas as issues de ASC-Community/AngouriMath

Issues semelhantes

Mais issues de C#

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.