samples/logisticmap.js

Wed, 27 Apr 2016 01:36:41 +0800

author
aoqi
date
Wed, 27 Apr 2016 01:36:41 +0800
changeset 0
b1a7da25b547
child 962
ac62e33a99b0
permissions
-rw-r--r--

Initial load
http://hg.openjdk.java.net/jdk8u/jdk8u/nashorn/
changeset: 1034:4b9cc65dd24d
tag: jdk8u25-b17

     1 #// Usage: jjs -fx -scripting logisticmap.js -- <initial_x> <R>
     3 /*
     4  * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
     5  * 
     6  * Redistribution and use in source and binary forms, with or without
     7  * modification, are permitted provided that the following conditions
     8  * are met:
     9  * 
    10  *   - Redistributions of source code must retain the above copyright
    11  *     notice, this list of conditions and the following disclaimer.
    12  * 
    13  *   - Redistributions in binary form must reproduce the above copyright
    14  *     notice, this list of conditions and the following disclaimer in the
    15  *     documentation and/or other materials provided with the distribution.
    16  * 
    17  *   - Neither the name of Oracle nor the names of its
    18  *     contributors may be used to endorse or promote products derived
    19  *     from this software without specific prior written permission.
    20  * 
    21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
    22  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
    23  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    24  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
    25  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
    26  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    27  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
    28  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
    29  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
    30  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    31  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    32  */
    34 // Logistic map viewer using Java8 Streams and JavaFX
    35 // See also http://en.wikipedia.org/wiki/Logistic_map
    37 if (!$OPTIONS._fx || arguments.length < 2) {
    38     print("Usage: jjs -fx -scripting logisticmap.js -- <initial_x> <R>");
    39     exit(1);
    40 }
    42 // parameters for the logistic map
    43 var x = parseFloat(arguments[0]);
    44 var R = parseFloat(arguments[1]);
    45 var NUM_POINTS = arguments.length > 2? parseFloat(arguments[2]) : 20;
    47 // Java classes used
    48 var DoubleStream = Java.type('java.util.stream.DoubleStream');
    49 var LineChart = Java.type("javafx.scene.chart.LineChart");
    50 var NumberAxis = Java.type("javafx.scene.chart.NumberAxis");
    51 var Scene = Java.type("javafx.scene.Scene");
    52 var Stage = Java.type("javafx.stage.Stage");
    53 var XYChart = Java.type("javafx.scene.chart.XYChart");
    55 function start(stage) {
    56     stage.title = "Logistic Map: initial x = ${x}, R = ${R}";
    57     // make chart
    58     var xAxis = new NumberAxis();
    59     var yAxis = new NumberAxis();
    60     var lineChart = new LineChart(xAxis, yAxis);
    61     xAxis.setLabel("iteration");
    62     yAxis.setLabel("x");
    63     // make chart data series
    64     var series = new XYChart.Series();
    65     var data = series.data;
    66     // populate data using logistic iteration
    67     var i = 0;
    68     DoubleStream
    69         .generate(function() x = R*x*(1-x))
    70         .limit(NUM_POINTS)
    71         .forEach(
    72             function(value) {
    73                 data.add(new XYChart.Data(i, value));
    74                 i++;
    75             }
    76          );
    77     // add to stage
    78     var scene = new Scene(lineChart, 800, 600);
    79     lineChart.data.add(series);
    80     stage.scene = scene;
    81     stage.show();
    82 }

mercurial