kill(all);

maxima_tempdir: "/home/loro/defe/AA1617/taller1/cyr2";

definición parmétrica del conocide Xc, Yc=s, Zc=t. Definición para blender:     12/20 * (1-(u/14)**2)*v

Xc(s,t):=b/h * (1-(s/a)^2)*t;

geometría del ejercicio CyR2t

b:120; a:140; h:200; data: ['b=120, 'a=140, 'h=200];

plot3d( [ Xc(s,t), s, t ], [s,-a,a], [t, 0, h],
same_xyz,[xtics,50] ,[ytics,50],[ztics,50], [mesh_lines_color, gray] );

plot3d( [ Xc(s,t), s, t ], [s,-a,a], [t, 0, h],
same_xyz,[xtics,50] ,[ytics,50],[ztics,50], [
mesh_lines_color, false], [grid, 100,100] , 
[palette, [gradient, red, orange, yellow, green]], 
[pdf_file, "presaconoide-max1.pdf"], [png_file, "presaconoide-max1.png"]);

plot3d( [ Xc(s,t), s, t ], [s,-a,a], [t, 0, h],
same_xyz,[xtics,50] ,[ytics,50],[ztics,50], 
[mesh_lines_color, false], [grid, 100,100] , 
[palette,[gradient,"#1b1b4e", "#8c8cf8"]],
[png_file, "presaconoide-max2.png"] 
);

Una aproximación al desarrollo del conoide: se trata de determinar la forma de un "recortable"

kill( a,b,h);

assume( a>0,ap>0,b>0,h>0,hp>0);

derivada de Xc

DXDyath: diff( Xc(y,h), y );

cálculo del perimetro de la coronación 

LonC: integrate( sqrt( 1+DXDyath^2 ), y, -a, a); ev( LonC, data, float);

buscamos una curva plana con la misma longitud que la coronación, pero que pasa por los vértices de un cuadrilátero de ancho 2*ap
y alto sqrt(h^2+b^2). Usamos el plano de coordenadas (u,v)

V(u):= (sqrt( h^2+b^2)-hp)*(1-(u/ap)^2)+hp; 
[ is(V(0)=sqrt(h^2+b^2) ),  is( V(ap) = V(-ap) ), is( V(ap)=hp) ];

dV: diff( V(u), u);

LonCp: integrate( sqrt( 1+ dV^2), u, -ap, ap);

condiciones: la longitud de ambas curvas es la misma; las longitudes de los lados rectos del cuadrilátero plano son iguales
a las longitudes de los segmentos de apoyo del conoide

eq1: LonCp - LonC;

eq2: h^2=hp^2+(ap-a)^2;

expresiones de ap y hp en función de la otra

exphp: solve(eq2, hp)[2];

expap: solve(eq2, ap)[2];

inspeccionamos como queda la longitud de la curva plana al eliminar una de los parámetros, ap o hp

ev( LonCp, exphp, simp );

ev( LonCp, expap, simp );

eqparahp: ev( eq1, expap, eval, data, eval )$ 
hpsols: solve( eqparahp , hp )$ 
length( hpsols );

hpsols;

define( errhp(hp), ev( eqparahp, data )); listofvars( %);

plot2d( errhp(x), [x, 0, 200]);

la solución no es analítica, hay que resolver la ecuación numéricamente

hpsol: hp=find_root( errhp(x), x , 0 , ev( h, data ) );

apsol: ev( expap, hpsol, eval, data, float );

define( V2(u),  ev( V(u), hpsol, apsol, data ));

plot2d( V2(x), [x, -280, 280]);

ev(["ap"=ap,"hp"=hp, d=sqrt(h²+b²),"a"=a], data, eval, apsol, hpsol ,float);

expand( float ( V2(x) ) );