package org.jzy3d.demos.vbo.scatter;

import static java.lang.Math.E;
import static java.lang.Math.cos;
import static java.lang.Math.pow;
import static java.lang.Math.sin;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import org.jzy3d.colors.Color;
import org.jzy3d.colors.ColorMapper;
import org.jzy3d.colors.colormaps.ColorMapRainbow;
import org.jzy3d.maths.Coord3d;
import org.jzy3d.maths.Range;

public class ScatterGenerator {
    public static List getScatter(int size) {
        List coords = new ArrayList(size);
        Random r = new Random();
        r.setSeed(0);
        double x;
        double y;
        double z;
        for (int i = 0; i < size; i++) {
            x = 2.0 * r.nextDouble();
            y = 2.0 * r.nextDouble();
            double s = r.nextDouble();

            if (s > 0.75) {
                x *= -1;
                y *= -1;
            }
            if (s > 0.5 && s <= 0.75) {
                x *= -1;
            }
            if (s > 0.25 && s <= 0.5) {
                y *= -1;
            }

            // exp( -(x**2 + y**2) ) * cos(x/4)*sin(y) * cos(2*(x**2+y**2))
            double f1 = cos(2 * (x * x + y * y));
            double f2 = cos(x / 4) * sin(y);
            double f3 = x * x + y * y;
            z = pow(E, -f3) * f2 * f1;

            coords.add(new Coord3d(x, y, z));
        }
        return coords;
    }
    
    public static ColorMapper coloring(List coords) {
        Range zrange = Coord3d.getZRange(coords);
        ColorMapper coloring = new ColorMapper(new ColorMapRainbow(), zrange.getMin(), zrange.getMax(), new Color(1, 1, 1, .5f));
        return coloring;
    }
}

 

Ads help maintain this website.