(es) Sexo oral
(eo) Buŝa seksumado
http://dx.doi.org/10.13140/RG.2.2.34092.90243
Descripción artística:
Una vista de cunnilingus.
Motivación:
Ver el nombre.
Descripción técnica:
Una serie segmentos de rectas tangentes a la elipse que pasan por la circunferencia , más el dibujo de la elipse.
Archivos
Archivos
Código (CFDG):
# Copyright 2015 Eduardo Adam Navas López # Este archivo es Software Libre liberado bajo la licencia GNU GPLv3 o su versión más reciente: # http://www.gnu.org/licenses/gpl.html #Para generar la imagen: #$ cfdg -b 0 -s 8000 sexo.cfdg sexo.png startshape sexo4[h 14 sat 0.61 b 0.81] pi = 3.14159265 #Número de rectas tangentes MAXPASOS = 500 R = 7.0 aelipse = 1.0 belipse = 2.0 shape sexo4 { elipse[] loop i = MAXPASOS [] { th = 90 - i*180/(MAXPASOS-1) # 90 a -90 Px = R*cos(th) Py = R*sin(th) ang_elipse = raiz1(Px,Py,-pi,pi)*180/pi elipsex = aelipse*cos(ang_elipse) elipsey = belipse*sin(ang_elipse) linea2(Px,Py,elipsex,elipsey, 0.01)[] #0.05)[] linea2(-Px,Py,-elipsex,elipsey, 0.01)[] #0.05)[] } } #Esta función localiza la primera raíz de la función 'funcion' en [-pi,pi] raiz1(Px,Py,ini,fin) = if(funcion(ini,Px,Py)*funcion(fin,Px,Py)>0.0, raiz1(Px,Py,ini,fin-0.12345), raiz(Px,Py,ini, (ini+fin)/2,fin) ) raiz(Px,Py,ini,med,fin) = if(abs(funcion(med,Px,Py))<0.001, med, if(funcion(ini,Px,Py)*funcion(med,Px,Py)<0.0, raiz(Px,Py,ini,(ini+med)/2,med), raiz(Px,Py,med,(med+fin)/2,fin) ) ) #Esta función sólo tiene dos raíces en [-pi,pi] #Ambos ángulos son los ángulos de los puntos de tangencia sobre la elipse funcion(xx,Px,Py) = -aelipse * Py * sin(xx*180/pi) - belipse * Px * cos(xx*180/pi) + aelipse * belipse #funcion(xx,Px,Py) = aelipse * belipse * sin(xx*180/pi)^2 - Py * aelipse * sin(xx*180/pi) + belipse * cos(xx*180/pi) * (aelipse * cos(xx*180/pi) - Px) #Esta función devuelve la segunda raíz de la función 'funcion' en [-pi,pi] raiz2(Px,Py,ini,fin) = if(funcion(ini,Px,Py)*funcion(fin,Px,Py)>0.0, raiz1(Px,Py,ini+0.12345,fin), raiz(Px,Py,ini,(ini+fin)/2,fin) ) path linea(x1,y1,x2,y2){ MOVETO(x1,y1) LINETO(x2,y2) STROKE(CF::RoundCap)[] } path linea2(x1,y1,x2,y2,tam){ MOVETO(x1,y1) LINETO(x2,y2) STROKE(tam,CF::RoundCap)[] } shape sexo3 { elipse[] loop i = MAXPASOS [] { #th = i*360/(MAXPASOS-1) # 0 a 360 #th = 90 - i*180/(MAXPASOS-1) # 90 a -90 th = 90 - i*120/(MAXPASOS-1) #90 a -30 #th = 90 - i*90/(MAXPASOS-1) #90 a 0 Px = R*cos(th) Py = R*sin(th) ang_elipse = raiz1(Px,Py,-pi,pi)*180/pi elipsex = aelipse*cos(ang_elipse) elipsey = belipse*sin(ang_elipse) yx = (belipse*belipse*elipsex)/(aelipse*aelipse*elipsey) y2 = elipsey + yx * elipsex #linea(Px,Py,elipsex,elipsey)[] if (yx>0){ xint1 = (yx*y2+sqrt(R*R*(yx*yx+1)-y2*y2))/(yx*yx+1) yint1 = -sqrt(R*R-xint1*xint1) linea(Px,Py,xint1,yint1)[] linea(-Px,Py,-xint1,yint1)[] } if (yx<0){ xint2 = (yx*y2-sqrt(R*R*(yx*yx+1)-y2*y2))/(yx*yx+1) yint2 = -sqrt(R*R-xint2*xint2) linea(Px,Py,xint2,yint2)[] linea(-Px,Py,-xint2,yint2)[] } } } shape sexo2 { elipse[] loop i = MAXPASOS [] { th = i*90/(MAXPASOS-1) elipsex = aelipse*cos(th) elipsey = belipse*sin(th) yx = (belipse*belipse*elipsex)/(aelipse*aelipse*elipsey) y2 = elipsey + yx*elipsex xint1 = (yx*y2+sqrt(R*R*(yx*yx+1)-y2*y2))/(yx*yx+1) yint1 = sqrt(R*R-xint1*xint1) xint2 = (yx*y2-sqrt(R*R*(yx*yx+1)-y2*y2))/(yx*yx+1) yint2 = sqrt(R*R-xint2*xint2) linea(xint1,yint1,xint2,yint2)[] } } shape sexo1 { elipse[] loop i = MAXPASOS [] { #th = i*360/(MAXPASOS-1) # 0 a 360 #th = 90 - i*180/(MAXPASOS-1) # 90 a -90 th = 90 - i*120/(MAXPASOS-1) #90 a -30 #th = 90 - i*90/(MAXPASOS-1) #90 a 0 Px = R * cos(th) Py = R * sin(th) angulo = raiz1(Px,Py,-pi,pi)*180/pi elipsex = aelipse * cos(angulo) elipsey = belipse * sin(angulo) linea(Px,Py,elipsex,elipsey)[] } } shape elipse { loop i = MAXPASOS [] { th1 = i*360/(MAXPASOS-1) th2 = (i+1)*360/(MAXPASOS-1) xth1 = aelipse*cos(th1) yth1 = belipse*sin(th1) xth2 = aelipse*cos(th2) yth2 = belipse*sin(th2) linea2(xth1,yth1,xth2,yth2,0.05)[] } }
No hay comentarios:
Publicar un comentario