As of this writing (see date below), I made the following image exactly ten years ago:
The next spring it would be featured in the short story Second Contact, which makes it sound more plausible than it is.
Anyway, here's the source code:
// Persistence of Vision Ray Tracer Scene Description File
// File: flying-fish.pov
// Vers: 1
// Desc: A cartoonish airship.
// Date: 2011-12-04
// Auth: Claude LeChat <https://nosycat.neocities.org/>
#version 3.6;
#include "colors.inc"
#include "textures.inc"
#include "skies.inc"
#include "metals.inc"
// global_settings { assumed_gamma 1.0 }
sky_sphere {
pigment {
gradient y
color_map {
[0.50 color Orange]
[0.525 color White]
[0.75 color NewMidnightBlue]
}
scale 2
translate -1
}
}
light_source {
//<0, 100, 10000> color Orange
<0, 100, -10000> color White
looks_like {
sphere {
<0, 0, 0>, 50
pigment { color Yellow }
finish { ambient 1 diffuse 1 }
}
}
}
camera {
location <0, 1.65, 0>
look_at <0, 15, 15>
angle 45
//right x * 1.5
}
/*camera {
location <-15, 15, 0>
look_at <0, 15, 15>
angle 45
//right x * 1.5
}*/
// The clouds.
object { O_Cloud1 scale <3, 1, 3> }
// The sea
disc {
<0, 0, 0>, <0, 1, 0>, 10000
texture {
pigment { Turquoise filter 0.3 }
finish {
//ambient 0.25
diffuse 0
reflection {0.1, 0.3}
specular 0.4
roughness 0.1
}
}
interior { ior 1.333 }
normal { ripples scale 5 warp { turbulence 0.3 } translate -3 }
}
#declare Fish_Wing =
union {
polygon {
4,
<0, 0, 1>, <5.5, 0, 1.5>, <7, 0, 1>
<0, 0, 1>
translate y * 0.02
}
polygon {
5,
<0, 0, 1>, <7, 0, 1>, <6.5, 0, 0>, <0, 0, 0.5>,
<0, 0, 1>
translate y * 0.01
}
polygon {
5,
<0, 0, 0.5>, <6.5, 0, 0>, <6, 0, -0.5>, <0, 0, 0>,
<0, 0, 0.5>
}
polygon {
5,
<0, 0, 0>, <6, 0, -0.5>, <5, 0, -1>, <0, 0, -0.5>,
<0, 0, 0>
translate y * -0.01
}
polygon {
5,
<0, 0, -0.5>, <5, 0, -1>, <3.5, 0, -1.5>, <0, 0, -1>,
<0, 0, -0.5>
translate y * -0.02
}
rotate x * -5
}
// The propeller
#declare Propeller =
union {
cylinder { <0, 0, -0.05>, <0, 0, 0.05>, 0.1 }
sphere {
<0, 0, 0>, 0.05
scale <2, 10, 0.1>
rotate y * 45
translate y * 0.5
}
sphere {
<0, 0, 0>, 0.05
scale <2, 10, 0.1>
rotate y * 45
translate y * 0.5
rotate z * 90
}
sphere {
<0, 0, 0>, 0.05
scale <2, 10, 0.1>
rotate y * 45
translate y * 0.5
rotate z * -90
}
sphere {
<0, 0, 0>, 0.05
scale <2, 10, 0.1>
rotate y * 45
translate y * 0.5
rotate z * 180
}
}
// The airship
union {
// Balloon
sphere {
<0, 0, 0>, 0.5
scale <4, 4, 12>
translate y * 2
pigment { White }
normal { uv_mapping bumps scale 0.1 }
}
// Nacelle
difference {
union {
sphere {
<0, 0, 0>, 0.5
scale <3, 3, 10>
translate y * -1.5
}
//Eye rim
intersection {
sphere {
<0, 0, 0>, 0.5
scale <3, 3, 10>
translate y * -1.5
}
cylinder {
<-2, -1.5, -4>, <2, -1.5, -4>, 0.5
}
scale 1.01
}
}
// Eye hole
cylinder {
<-2, -1.5, -4>, <2, -1.5, -4>, 0.4
scale 1.01
}
// Mouth
box {
<-1, -0.02, -5>, <1, 0.02, -4.5>
translate y * -2
}
pigment { color Yellow }
finish { F_MetalA }
}
// Front windows
sphere {
<0, 0, 0>, 1
scale <1.1, 0.7, 0.7>
translate <0, -1.5, -3.9>
material { M_Glass }
}
// Cables
union {
cylinder { <0, 2, -6>, <0, -1.5, -5>, 0.01 }
cylinder { <0, 2, 5>, <0, -1.5, 4>, 0.01 }
cylinder { <-2, 2, 0>, <-1.5, -1.5, 0>, 0.01 }
cylinder { <2, 2, 0>, <1.5, -1.5, 0>, 0.01 }
cylinder { <-1.65, 2, -3>, <-1.3, -1.5, -2.5>, 0.01 }
cylinder { <1.65, 2, -3>, <1.3, -1.5, -2.5>, 0.01 }
cylinder { <-1.65, 2, 3>, <-1.3, -1.5, 2.5>, 0.01 }
cylinder { <1.65, 2, 3>, <1.3, -1.5, 2.5>, 0.01 }
texture { Brass_Metal }
}
// Wings
object {
Fish_Wing
texture { Brass_Metal }
rotate y * 180
translate <-1, -2, -2>
}
object {
Fish_Wing
texture { Brass_Metal }
rotate y * 180
translate <-1, -2, -2>
scale <-1, 1, 1> // Flip sideways
}
// Tailfins
sphere {
<0, 0, 0>, 0.1
scale <10, 0.1, 6>
texture { Brass_Metal }
rotate y * 45
translate <-2, -2, 2>
}
sphere {
<0, 0, 0>, 0.1
scale <10, 0.1, 6>
texture { Brass_Metal }
rotate y * -45
translate <2, -2, 2>
}
difference {
sphere {
<0, 0, 0>, 0.1
scale <0.1, 16, 20>
texture { Brass_Metal }
}
cylinder {
<-0.1, 0, 0>, <0.1, 0, 0>, 0.1
scale <1, 16, 20>
translate z * 1.6
}
translate <0, -1.5, 5>
}
object {
Propeller
texture { Brass_Metal }
rotate z * -15
translate <0, -1.5, 5.1>
}
rotate y * -45
translate <0, 15, 15>
}