Zeichnung der Reeb-Folierung

Zeichnung der Reeb-Folierung

Ich versuche, dieReeb Folierung. Bisher habe ich den Code und das Bild unten. Das Problem ist, dass eine Oberfläche ganz leicht durch die davorliegende (durch die vorderste Oberfläche) hervorsteht. Sie sollten jeweils vollständig in der vorherigen verschachtelt sein, wie gebogene Blumentöpfe.

settings.outformat="pdf";
settings.prc=false;
settings.render=4;


import graph;
import graph3;
import three;

size(12cm,0);

real rcutoff=.8;
real rinner=1;
real router=2;


currentprojection=orthographic(1,-2,1);
currentlight=(1,-1,0.5);

real f(pair z) {return 1/(1-abs(z)^2);}

// We change variables so that the unit cylinder x^2+y^2<1 gets mapped to the torus.
triple changevariables(triple X)
{ 
    return (
        (router+rinner*X.x)*cos(X.z),
        (router+rinner*X.x)*sin(X.z),
        rinner*X.y
    );
}


// g returns the location of a point on a ``paraboloid'' inside the unit cylinder with given angle and radius above the unit disk in the (x,y) plane.
triple g(pair p){
    real x=p.x*cos(p.y), y=p.x*sin(p.y);
    return (x,y,f((x,y)));
}


triple h(pair p){
    return changevariables(g(p));
}

real anglestep=10;

for (int z = 0; z <= 20; ++z) {
    draw(
         rotate(-anglestep*z,Z)*surface(
            h,
            (0,0),
            (rcutoff,2*pi),Spline
        ),lightgray+opacity(1)
    );
//  real zz=f((rcutoff,0));
//  triple cent=changevariables((0,0,zz));
//  draw(
//      rotate(-anglestep,Z)*
//      circle(c=cent, r=rcutoff,normal=(-router*sin(zz),router*cos(zz),0)),
//      white
//  );
}

Bildbeschreibung hier eingeben

Vielleicht wird das Problem noch deutlicher, wenn ich nur die letzten beiden Flächen in unterschiedlichen Farben zeichne:

Bildbeschreibung hier eingeben

Antwort1

Dies liegt nur an der numerischen Annäherung Ihrer Oberfläche mit den Bézier-Patches. Standardmäßig haben Sie 10 Maschen (oder 10x10). Abhängig von Ihrem PC können Sie die Anzahl der Maschen in Bezug auf die beiden Variablen unabhängig voneinander erhöhen. Hier habe ich die letzten beiden endgültigen Oberflächen mit getestet

draw(
     rotate(-anglestep*z,Z)*surface(
                                    h,
                                    (0,0),
                                    (rcutoff,2*pi),nu=16,nv=10,Spline
                                    ),lightgreen+opacity(1)
     );

und es scheint in Ordnung zu sein.

verwandte Informationen