nbPoints=50; A=[]; for i from 0 to nbPoints { A[i]=[]; for j from 0 to nbPoints { A[i][j]=Point3D("x3D(A)+"+i/nbPoints+"*x3D(v1)+"+j/nbPoints+"*x3D(v2)", "y3D(A)+"+i/nbPoints+"*y3D(v1)+"+j/nbPoints+"*y3D(v2)", "z3D(A)+"+i/nbPoints+"*z3D(v1)+"+j/nbPoints+"*z3D(v2)"); Hide(A[i][j]); } } C=[]; for i from 0 to nbPoints-1 { C[i]=[]; for j from 0 to nbPoints-1 { C[i][j]=Polygon(A[i][j]+","+A[i+1][j]+","+A[i+1][j+1]+","+A[i][j+1]+","+A[i][j]); SetColor(C[i][j],"blue"); Conditional(C[i][j],"hidden","x3D("+A[i][j]+")+x3D("+A[i+1][j+1]+")>2||x3D("+A[i][j]+")+x3D("+A[i+1][j+1]+")<0||y3D("+A[i][j]+")+y3D("+A[i+1][j+1]+")>2||y3D("+A[i][j]+")+y3D("+A[i+1][j+1]+")<0||z3D("+A[i][j]+")+z3D("+A[i+1][j+1]+")>2||z3D("+A[i][j]+")+z3D("+A[i+1][j+1]+")<0"); } }