Parametrised surface

Parametrised surface

\documentclass[border=10pt]{standalone}
\usepackage{asymptote}
\begin{document}
\begin{asy}[inline=true]
import graph3;
real w=9cm, h=1.618w; size(w,h);
currentprojection=orthographic(camera=(-13,-8.6,59),up=Z,target=(0.5,0.5,3),zoom=1);
import fontsize; defaultpen(fontsize(9pt));
texpreamble("\usepackage{siunitx}\usepackage{lmodern}");
pen linePen=darkblue+0.9bp;
pen grayPen=gray(0.3)+0.8bp;
pen dashPen=gray(0.3)+0.8bp+linetype(new real[] {5,5});
pen patchFillPen=paleblue;
pen planeFillPen=deepgreen+opacity(0.3);
triple[][] p={ // Bicubic Bezier patch control points
{(1 ,0.3,0),(1 ,0.5,-1),(1 ,0.6,1),(1 ,1,0),},
{(0.6,0.25,0),(0.6,0.3,2) ,(0.6,0.6,2) ,(0.6,1,0.2),},
{(0.5,0.4,0),(0.3,0.3,2),(0.3,0.6,2) ,(0.3,1,2),},
{(0.3 ,0.4,0.2),(0 ,0.3,1.5) ,(0 ,0.6,2.3) ,(0 ,1,1),},
};
triple[][] planePatch(triple a,triple b,triple c){
// Builds a plane Bezier patch from 3 corner points
triple[][] p=new triple[4][4];
p[0][0]=a;
p[3][0]=b+b-a;
p[1][0]=(2*p[0][0]+ p[3][0])/3;
p[2][0]=( p[0][0]+2*p[3][0])/3;
p[0][3]=c+c-a;
p[0][1]=(2*p[0][0]+ p[0][3])/3;
p[0][2]=( p[0][0]+2*p[0][3])/3;
p[3][3]=p[0][0]+(p[3][0]-a)+(p[0][3]-a);
p[1][3]=(2*p[0][3]+p[3][3])/3;
p[2][3]=(p[0][3]+2*p[3][3])/3;
p[3][1]=(2*p[3][0]+ p[3][3])/3;
p[3][2]=( p[3][0]+2*p[3][3])/3;
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Source: TeX.SE

Author: g.kov (License)