Skip to content
Snippets Groups Projects
Select Git revision
  • 2f40d74bb03ba8b9b9d79a10bd9bc811aa37cbd8
  • main default protected
  • master
3 results

Display.java

Blame
  • Forked from LABOUREL Arnaud / formula Template
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    FunctionList.java 1.70 KiB
    package viewer;
    
    import javafx.scene.chart.XYChart;
    
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.List;
    
    class FunctionList {
      private final List<PlottableFunction> functions = new ArrayList<>();
    
      private final FunctionChart functionChart;
      private final double lowerBound;
      private final double upperBound;
    
      FunctionList(FunctionChart functionChart) {
        this.functionChart = functionChart;
        this.lowerBound = functionChart.getLowerBound();
        this.upperBound = functionChart.getUpperBound();
    
        // TODO: add functions
    
    
      }
    
      void toggleFunction(PlottableFunction function) {
        if (function.isPlotted()){
          unplot(function);
        }
        else{
          plot(function);
        }
      }
    
      private void unplot(PlottableFunction function) {
        functionChart.removeSeries(function.toString());
        function.setPlotted(false);
      }
    
      List<PlottableFunction> getFunctions(){
        return functions;
      }
    
      private void plot(PlottableFunction function){
        XYChart.Series<Number, Number> series = function.getData(lowerBound, upperBound);
        series.setName(function.toString());
        functionChart.getData().add(series);
        function.setPlotted(true);
      }
    
      private void addFunctionsAndTheirDerivative(Collection<PlottableFunction> functions){
        for(PlottableFunction function: functions){
          addFunctionAndItsDerivative(function);
        }
      }
    
      private void addFunctionAndItsDerivative(PlottableFunction function){
        add(function);
        add(function.derivative());
      }
    
      private void add(PlottableFunction function) {
        functions.add(function);
      }
    
      void clear() {
        functionChart.getData().clear();
        for(PlottableFunction function: functions){
          function.setPlotted(false);
        }
      }
    }