Surfaces algébriques de degré 4

Visualisation de quelques quartiques en 3D




Visualisations 2d ou stéréoscopiques: parallèle, croisé, anaglyphe, entrelacé ...etc
Les surfaces suivantes ont été choisies pour leur coté esthétique ( avis personnel !), présentent des symétries, des points doubles et contiennent parfois des cercles (resp. des droites).



Deux séries sont visibles :


Cliquer pour lancer la visualisation



Cliquer pour lancer la visualisation




Voici quelques unes des équations utilisées et les équations des doites incluses :


//============================ caspoly 1 =======================================================
//Sa:=(x^2+y^2+z^2-R1)*(x^2+y^2+z^2-R2)-k*(x+y+z-a)*(x+y-z+a)*(x-y+z-a)*(-x+y+z-a) ;


//Sa(2,2,-1,0)=4*x^2*y^2+4*x^2*z^2+4*y^2*z^2-4*x^2-4*y^2-4*z^2+4;
//12 droites en paramétriques
droites= array[12] {<-1,0,tt>,<-1,tt,0>,<0,-1,tt>,<0,1,tt>,<0,tt,-1>,<0,tt,1>,<1,0,tt>,<1,tt,0>,,,,};


//Sa(2,2,-1,1))=4*x^2*y^2+4*x^2*z^2+4*y^2*z^2-4*x^2*z-4*y^2*z+4*z^3-2*x^2-2*y^2-10*z^2+4*z+3;
//8 droites en paramétriques
droites= array[8] {<-.705,tt,1>,<0,tt,-.365>,<0,tt,1.36>,<.705,tt,1>,,,,};

//Sa(2,2,-1,sqrt(2))=4*x^2*y^2+4*x^2*z^2+4*y^2*z^2-16*z^2-4*y^2*z*sqrt(2)-4*x^2*z*sqrt(2)+8*z*sqrt(2)+4*z^3*sqrt(2);
// 4 droites en paramétriques
droites= array[4] {<0,tt,0>,<0,tt,1.41>,,};

//Sa(2,2,-2,sqrt(2))= -x^4+6*x^2*y^2+6*x^2*z^2-y^4+6*y^2*z^2-z^4+4*x^2+4*y^2-28*z^2-4-8*y^2*z*sqrt(2)-8*x^2*z*sqrt(2)+16*z*sqrt(2)+8*z^3*sqrt(2)
// 4 droites en paramétriques
droites= array[4] {<.384*tt,-.924*tt,1.41>,<.384*tt,.924*tt,1.41>,<.925*tt,-.375*tt,1.41>,<.925*tt,.375*tt,1.41>};

//Sa(2,1,-1,sqrt(2))=4*x^2*y^2+4*x^2*z^2+4*y^2*z^2+x^2+y^2-15*z^2-2-4*y^2*z*sqrt(2)-4*x^2*z*sqrt(2)+8*z*sqrt(2)+4*z^3*sqrt(2)
// 8 droites en paramétriques
droites= array[8] {<-.466,tt,.881>,<-.214,tt,.257>,<.214,tt,.257>,<.466,tt,.881>,,,,};


//Sa(1,4,-1,1))=4*x^2*y^2+4*x^2*z^2+4*y^2*z^2-4*x^2*z-4*y^2*z+4*z^3-3*x^2-3*y^2-11*z^2+4*z+3 ;
// 8 droites en paramétriques
droites= array[8] {<-.955,tt,.220>,<-.565,tt,-.324>,<.565,tt,-.324>,<.955,tt,.220>,,,,};

//Sa(1,1,-1,1)=4*x^2*y^2+4*x^2*z^2+4*y^2*z^2-4*x^2*z-4*y^2*z+4*z^3-8*z^2+4*z;
// 4 droites en paramétriques
droites= array[4] {<0,tt,0>,<0,tt,1>,,};

//============================ caspoly 2 =======================================================
//(x^2+y^2+z^2-1)^2 -k*( z-x+a)*(z+x+a)*(z-y-a)*(z+y-a) ;
#declare suiteP=array[35]{1,0,0,0,2-k,0,0,2+k,-2*a*k,-2+a*a*k,0,0,0,0,0,0,0,0,0,0,1,0,0,2+k,2*a*k,-2+a*a*k,0,0,0,0,1-k,0,-2+2*a*a*k,0,1-pow(a,4)*k};


//S21(1,0)=x^4+x^2*y^2+3*x^2*z^2+y^4+3*y^2*z^2-2*x^2-2*y^2-2*z^2+1;
// 4 droites en paramétriques
droites= array[4] {<-.576,-.576,tt>,<-.576,.576,tt>,<.576,-.576,tt>,<.576,.576,tt>};

// Sb(4,0) = x^4-2*x^2*y^2+6*x^2*z^2+y^4+6*y^2*z^2-3*z^4-2*x^2-2*y^2-2*z^2+1;
// 8 droites en paramétriques
droites= array[8] {<.705*tt,-.705*tt,-.576>,<.705*tt,-.705*tt,.576>,<.705*tt,.705*tt,-.576>,<.705*tt,.705*tt,.576>,<.705*tt,-1-.705*tt,0>,<.705*tt,-1+.705*tt,0>,<.705*tt,1-.705*tt,0>,<.705*tt,1+.705*tt,0>};

//============================ caspoly 3 =======================================================
//(x+y+z-a)*(x+y-z+a)*(x-y+z-a)*(-x+y+z-a)-k*(z-x-b)*(z+x-b)*(z-y-b)*(z+y-b);
#declare suiteP=array[35]{-1,0,0,0,-k+2,0,0,k+2,-2*b*k-4*a,b*b*k+2*a*a,0,0,0,0,0,0,0,0,0,0,-1,0,0,k+2,-2*b*k-4*a,b*b*k+2*a*a,0,0,0,0,-1-k,4*b*k+4*a,-6*b*b*k-6*a*a,4*pow(b,3)*k+4*pow(a,3),-pow(a,4)-pow(b,4)*k};

//Sb(1,1,-2)=-x^4+x^2*y^2+3*x^2*z^2-y^4+3*y^2*z^2-2*z^4-4*z^3+6*x^2+6*y^2-30*z^2-28*z-17;
//16 droites en paramétriques
droites= array[16] {<-3,-2+.705*tt,-.705*tt>,<-3,2+.705*tt,.705*tt>,<3,-2+.705*tt,-.705*tt>,<3,2+.705*tt,.705*tt>,<-2+.409*tt,-1+.816*tt,-.409*tt>,<-2+.409*tt,1-.816*tt,-.409*tt>,<-2+.705*tt,-3,-.705*tt>,<-2+.705*tt,3,-.705*tt>,<-1+.816*tt,-2+.409*tt,-.409*tt>,<-1+.816*tt,2-.409*tt,-.409*tt>,<1+.816*tt,-2-.409*tt,.409*tt>,<1+.816*tt,2+.409*tt,.409*tt>,<2+.409*tt,-1-.816*tt,.409*tt>,<2+.409*tt,1+.816*tt,.409*tt>,<2+.705*tt,-3,.705*tt>,<2+.705*tt,3,.705*tt>};



//Sb(1,1,-1)=-x^4+x^2*y^2+3*x^2*z^2-y^4+3*y^2*z^2-2*z^4-2*x^2*z-2*y^2*z+3*x^2+3*y^2-12*z^2-2;
// 16 droites en paramétriques
droites= array16] {<-2,-1+.705*tt,-.705*tt>,<-2,1+.705*tt,.705*tt>,<2,-1+.705*tt,-.705*tt>,<2,1+.705*tt,.705*tt>,<.816*tt,-1-.409*tt,.409*tt>,<.816*tt,-1+.409*tt,-.409*tt>,<.816*tt,1-.409*tt,-.409*tt>,<.816*tt,1+.409*tt,.409*tt>,<-1+.409*tt,-.816*tt,-.409*tt>,<-1+.409*tt,.816*tt,-.409*tt>,<-1+.705*tt,-2,-.705*tt>,<-1+.705*tt,2,-.705*tt>,<1+.409*tt,-.816*tt,.409*tt>,<1+.409*tt,.816*tt,.409*tt>,<1+.705*tt,-2,.705*tt>,<1+.705*tt,2,.705*tt>};

// Sb(-1,1,-1)=-x^4+3*x^2*y^2+x^2*z^2-y^4+y^2*z^2-6*x^2*z-6*y^2*z+8*z^3+x^2+y^2+8*z;
// 16 droites en paramétriques
droites= array[16] {<-2,-1+.705*tt,-.705*tt>,<-2,1+.705*tt,.705*tt>,<2,-1+.705*tt,-.705*tt>,<2,1+.705*tt,.705*tt>,<.816*tt,-1-.409*tt,.409*tt>,<.816*tt,-1+.409*tt,-.409*tt>,<.816*tt,1-.409*tt,-.409*tt>,<.816*tt,1+.409*tt,.409*tt>,<-1+.409*tt,-.816*tt,-.409*tt>,<-1+.409*tt,.816*tt,-.409*tt>,<-1+.705*tt,-2,-.705*tt>,<-1+.705*tt,2,-.705*tt>,<1+.409*tt,-.816*tt,.409*tt>,<1+.409*tt,.816*tt,.409*tt>,<1+.705*tt,-2,.705*tt>,<1+.705*tt,2,.705*tt>};

//Sb(-4,3,-1)=-x^4+6*x^2*y^2-2*x^2*z^2-y^4-2*y^2*z^2+3*z^4-20*x^2*z-20*y^2*z+28*z^3+14*x^2+14*y^2-30*z^2+124*z-77;
// 24 droites en paramétriques
// 24 droites en paramétriques
droites= array[24] {<-4,-1+.705*tt,-.705*tt>,<-4,1+.705*tt,.705*tt>,<4,-1+.705*tt,-.705*tt>,<4,1+.705*tt,.705*tt>,<.384*tt,-.924*tt,-10.6>,<.384*tt,-.924*tt,.64>,<.384*tt,.924*tt,-10.6>,<.384*tt,.924*tt,.64>,<.925*tt,-.38*tt,-10.6>,<.925*tt,-.38*tt,.64>,<.925*tt,.38*tt,-10.6>,<.925*tt,.38*tt,.64>,<-2+.816*tt,-1-.409*tt,.409*tt>,<-2+.816*tt,1+.409*tt,.409*tt>,<-1+.409*tt,-2-.816*tt,-.409*tt>,<-1+.409*tt,2+.816*tt,-.409*tt>,<-1+.705*tt,-4,-.705*tt>,<-1+.705*tt,4,-.705*tt>,<1+.409*tt,-2+.816*tt,.409*tt>,<1+.409*tt,2-.816*tt,.409*tt>,<1+.705*tt,-4,.705*tt>,<1+.705*tt,4,.705*tt>,<2+.816*tt,-1+.409*tt,-.409*tt>,<2+.816*tt,1-.409*tt,-.409*tt>};


//Sb(-1,3/4,-3/4)=-16*x^4+48*x^2*y^2+16*x^2*z^2-16*y^4+16*y^2*z^2-72*x^2*z-72*y^2*z+96*z^3+9*x^2+9*y^2+54*z;
// 16 droites en paramétriques
droites= array[16] {<-1.50,-.750+.705*tt,-.705*tt>,<-1.50,.750+.705*tt,.705*tt>,<1.50,-.750+.705*tt,-.705*tt>,<1.50,.750+.705*tt,.705*tt>,<.816*tt,-.750-.409*tt,.409*tt>,<.816*tt,-.750+.409*tt,-.409*tt>,<.816*tt,.750-.409*tt,-.409*tt>,<.816*tt,.750+.409*tt,.409*tt>,<-.750+.409*tt,-.816*tt,-.409*tt>,<-.750+.409*tt,.816*tt,-.409*tt>,<-.750+.705*tt,-1.50,-.705*tt>,<-.750+.705*tt,1.50,-.705*tt>,<.750+.409*tt,-.816*tt,.409*tt>,<.750+.409*tt,.816*tt,.409*tt>,<.750+.705*tt,-1.50,.705*tt>,<.750+.705*tt,1.50,.705*tt>};

//============================ caspoly 4 =======================================================
//(x+y+z-a)*(x+y-z+a)*(x-y+z-a)*(-x+y+z-a) -k*( z-x-b)*(z+x-b)*(x^2+y^2+z^2-1) ;
#declare suiteP=array[35]{1*k-1,0,0,0,k+2,0,0,2,2*b*k-4*a,-b*b*k+2*a*a-k,0,0,0,0,0,0,0,0,0,0,-1,0,0,-k+2,2*b*k-4*a,-b*b*k+2*a*a,0,0,0,0,-k-1,2*b*k+4*a,-b*b*k-6*a*a+k,-2*b*k+4*pow(a,3),b*b*k-pow(a,4)};


//Sc(-1,1,-1)=-2*x^4+x^2*y^2+2*x^2*z^2-y^4+3*y^2*z^2-2*x^2*z-2*y^2*z+6*z^3+4*x^2+3*y^2-6*z^2+2*z-2;
// 8 droites en paramétriques
droites= array[8] {<-1+.409*tt,-.816*tt,-.409*tt>,<-1+.409*tt,.816*tt,-.409*tt>,<-1+.705*tt,-2,-.705*tt>,<-1+.705*tt,2,-.705*tt>,<1+.409*tt,-.816*tt,.409*tt>,<1+.409*tt,.816*tt,.409*tt>,<1+.705*tt,-2,.705*tt>,<1+.705*tt,2,.705*tt>};


//Sc(1,1,-1)=3*x^2*y^2+2*x^2*z^2-y^4+y^2*z^2-2*z^4-6*x^2*z-6*y^2*z+2*z^3+y^2-6*z^2+6*z;
//11 droites en paramétriques
droites= array[] {,,,<-1+.409*tt,-.816*tt,-.409*tt>,<-1+.409*tt,.816*tt,-.409*tt>,<-1+.705*tt,-2,-.705*tt>,<-1+.705*tt,2,-.705*tt>,<1+.409*tt,-.816*tt,.409*tt>,<1+.409*tt,.816*tt,.409*tt>,<1+.705*tt,-2,.705*tt>,<1+.705*tt,2,.705*tt>};


//Sc(2,1,-1)=x^4+4*x^2*y^2+2*x^2*z^2-y^4-3*z^4-8*x^2*z-8*y^2*z-2*x^2-6*z^2+8*z+1;
//8 droites en paramétriques
droites= array[8] {<-1+.409*tt,-.816*tt,-.409*tt>,<-1+.409*tt,.816*tt,-.409*tt>,<-1+.705*tt,-2,-.705*tt>,<-1+.705*tt,2,-.705*tt>,<1+.409*tt,-.816*tt,.409*tt>,<1+.409*tt,.816*tt,.409*tt>,<1+.705*tt,-2,.705*tt>,<1+.705*tt,2,.705*tt>};

//Sc(-4,1,-2)=-5*x^4-2*x^2*y^2+2*x^2*z^2-y^4+6*y^2*z^2+3*z^4+12*x^2*z+12*y^2*z+20*z^3+22*x^2+18*y^2+6*z^2-12*z-17;
// 8 droites en paramétriques
droites= array[8] {<-2+.409*tt,-1+.816*tt,-.409*tt>,<-2+.409*tt,1-.816*tt,-.409*tt>,<-2+.705*tt,-3,-.705*tt>,<-2+.705*tt,3,-.705*tt>,<2+.409*tt,-1-.816*tt,.409*tt>,<2+.409*tt,1+.816*tt,.409*tt>,<2+.705*tt,-3,.705*tt>,<2+.705*tt,3,.705*tt>};

//Sc(-4,1,+1)=-5*x^4-2*x^2*y^2+2*x^2*z^2-y^4+6*y^2*z^2+3*z^4-12*x^2*z-12*y^2*z-4*z^3+10*x^2+6*y^2-6*z^2+12*z-5;
// 6 droites en paramétriques
droites= array[6] {<-1+.409*tt,-2+.816*tt,.409*tt>,<-1+.409*tt,2-.816*tt,.409*tt>,<-1+.705*tt,0,.705*tt>,<1+.409*tt,-2-.816*tt,-.409*tt>,<1+.409*tt,2+.816*tt,-.409*tt>,<1+.705*tt,0,-.705*tt>};

//Sc(-4,1,0)=-5*x^4-2*x^2*y^2+2*x^2*z^2-y^4+6*y^2*z^2+3*z^4-4*x^2*z-4*y^2*z+4*z^3+6*x^2+2*y^2-10*z^2+4*z-1;
// 8 droites en paramétriques
droites= array[8] {<.409*tt,-1-.816*tt,-.409*tt>,<.409*tt,-1+.816*tt,.409*tt>,<.409*tt,1-.816*tt,.409*tt>,<.409*tt,1+.816*tt,-.409*tt>,<.705*tt,-1,-.705*tt>,<.705*tt,-1,.705*tt>,<.705*tt,1,-.705*tt>,<.705*tt,1,.705*tt>};

//Sc(1,0,0)=3*x^2*y^2+2*x^2*z^2-y^4+y^2*z^2-2*z^4-x^2+z^2;
//12 droites en paramétriques
droites= array[12] {,,,,,,<.409*tt,-.816*tt,-.409*tt>,<.409*tt,-.816*tt,.409*tt>,<.409*tt,.816*tt,-.409*tt>,<.409*tt,.816*tt,.409*tt>,<.705*tt,0,-.705*tt>,<.705*tt,0,.705*tt>};
//==================Nouvelles=============================== S=x^2*y^2+y^2*z^2+x^2*z^2 -a*(x+y+z)-b*(x^2+y^2+z^2-c)^2; # #
S(0,1/4,9) (-x^4+2*x^2*y^2+2*x^2*z^2-y^4+2*y^2*z^2-z^4+18*x^2+18*y^2+18*z^2-81
12 droites en paramétriques
{[0,-3+.705*tt,-.705*tt>,<0,-3+.705*tt,.705*tt>,<0,3+.705*tt,-.705*tt>,<0,3+.705*tt,.705*tt>,<.705*tt,-3-.705*tt,0>,<.705*tt,-3+.705*tt,0>,<.705*tt,3-.705*tt,0>,<.705*tt,3+.705*tt,0>,<-3+.705*tt,0,-.705*tt>,<-3+.705*tt,0,.705*tt>,<3+.705*tt,0,-.705*tt>,<3+.705*tt,0,.705*tt]}
Sx(2,1/4,4)
6 droites en paramétriques
<-.637,1.45+.705*tt,-.705*tt>,<1.23,1.79+.705*tt,-.705*tt>,<.705*tt,2.17-.705*tt,-.780>,<.705*tt,2.43-.705*tt,1.34>,<2.17+.705*tt,-.780,-.705*tt>,<2.43+.705*tt,1.34,-.705*tt>
( z-b*x-c)*(z+b*x-c)*(z-b*y-c)*(z+b*y-c)+k*(x^2+y^2-z^2-1)^2;
suiteP := Sx(-1,1,0) 12 droites en paramétriques
{[-1,-1,tt>,<-1,1,tt>,<-1,.705*tt,-.705*tt>,<-1,.705*tt,.705*tt>,<1,-1,tt>,<1,1,tt>,<1,.705*tt,-.705*tt>,<1,.705*tt,.705*tt>,<.705*tt,-1,-.705*tt>,<.705*tt,-1,.705*tt>,<.705*tt,1,-.705*tt>,<.705*tt,1,.705*tt]}
Sx(1,1,0) 8 droites en paramétriques
{[-1,.705*tt,-.705*tt>,<-1,.705*tt,.705*tt>,<1,.705*tt,-.705*tt>,<1,.705*tt,.705*tt>,<.705*tt,-1,-.705*tt>,<.705*tt,-1,.705*tt>,<.705*tt,1,-.705*tt>,<.705*tt,1,.705*tt]}