Example #1
0
File: Plot3D.cpp Project: hyln9/nV
Plot3D::Plot3D(Kernel &k, const Tuple &cmd) : k(k) {
    spacetype = FLAT_SPACE;
    var expr = cmd[1];
    var xrange = cmd[2];
    var yrange = cmd[3];
    var xparam = xrange.tuple()[1];
    var yparam = yrange.tuple()[1];
    xmin = toD(N(k, k.eval(xrange.tuple()[2])).object());
    xmax = toD(N(k, k.eval(xrange.tuple()[3])).object());
    ymin = toD(N(k, k.eval(yrange.tuple()[2])).object());
    ymax = toD(N(k, k.eval(yrange.tuple()[3])).object());

    if (cmd[cmd.size - 1].isTuple(SYS(Optional))) {
        var opts = cmd[cmd.size - 1];
        readOptions(opts.tuple());
    }

    sur = new Surface*[1];
    surnum = 1;
    F2P *f3d = new F2P(k, expr, xparam, yparam);
    sur[0] = new Surface(f3d, xmin, xmax, ymin, ymax);
    delete f3d;
    zmin = sur[0]->zmin;
    zmax = sur[0]->zmax;
    for (int i = 1; i < surnum; i++) {
        if (sur[i]->zmin < zmin)
            zmin = sur[i]->zmin;
        if (sur[i]->zmax > zmax)
            zmax = sur[i]->zmax;
    }
}