I sort of stopped liking The Oatmeal after his pro-Tesla/anti-Edison campaign, which was full of disinformation. When a moderating reaction was published in Forbes, oatmeal’s artist responded with an expletive-filled tirade. I gave a big chunk of money to the Tesla Museum, because his Shoreham site needed to be preserved, but I hope it will not become a pseudo-science installation.

http://theoatmeal.com/comics/columbus_day

Now we see this heaping dish of Howard Zinn’s cynical history, in easy-to-consume cartoon form. Zinn’s work is an important response to classical history, but it is just as biased and problematic as the history it criticizes, depicting the story of America as “relentless exploitation and deceit” as one critic said. Zinn himself made it clear that he viewed historical writing as a political tool, one he used to promote his fervent belief in Marxism.

Certainly Columbus was no saint, and a lot of his sailers were thugs. But many of the horrible stories about Columbus were written or fabricated by an even more dubious character, Francisco de Babadilla, who overthrew Columbus in a coup d’ etat and declared himself the new governor of the lucrative Spanish colony. The truth is unclear, but there is plenty of material to be used by anyone who views history as a propaganda tool.

Zinn’s historical views are biased, his portrayal of successful and innovative people are villainous caricatures of human beings. He has to be read with skepticism and in combination with other views, because history is fuzzy, uncertain, and open to interpretation. A People’s History of the United States is an important book, but it can be read by young folks who get swept away by it before they have the knowledge and experience to look at it critically and understand the ambition and agenda of intellectuals like Zinn. At least read Eric Hoffer’s The True Believer before wading into the media-saturated world of religious and political propaganda that surrounds us.

It’s good to know the myths about Columbus. People didn’t believe the Earth was flat. Some Vikings (maybe even the Chinese) landed on North America first. But ultimately the Viking discovery had little historical impact, because it failed to trigger the flood of colonization and the formation of America, which Columbus’s discovery did.

As for Bartolome, he sounds like a nice guy at first glance. Maybe he was, maybe not. It was nice of him to suggest that Indians should not be enslaved…considerably less nice that he advocated using Africans as slaves instead. If black slavery was his biggest impact on history, then replacing Columbus Day with Bartolome Day is certainly a bad idea.

Here is a critical look at Zinn: “Howard Zinn’s Influential Mutilations of American History”

http://www.newrepublic.com/article/112574/howard-zinns-influential-mutilations-american-history

There’s a common story in computer science that the term “bugs” in a program comes from Grace Hopper finding an insect stuck in a relay computer.  But to “get the bugs out” of a device is a very old phrase.  I found a reference of Edison using it in 1896, making a joke that was based on the fact that it was a well known phrase even at that time.  I think the origin of this saying is still unknown, and it greatly predates computer software.

Metal Lunch

Don P. Mitchell (1985, Whole Earth Review)

[Robots work at an assembly line viewed through transparent gears and works.
Toaster ovens roll by on the belt.  One robot sparks and stops working, but
the others do not notice.  Robot heads are blank metal ellipsoids.]

Narrator: (speaking rather tonelessly)

	How do you measure value?  By the price tag?  By the need?
	By the blood and sweat that goes into making something?  Robots
	do not produce labor value, though.  They are not part of the
	social contract.  There is no mechanical Karl Marx to save them.

[Robot leans against a lamp post smoking a cigarette.  Another robot
walks by and stops.  They walk off together into the black background.]

Narrator:

	Robots don't reproduce sexually.  They can't even come.  Even so,
	many of them engage in copulation.  No one knows why, but everyone
	agrees it is very unwholesome.  Perhaps it is done as satire.

[Robot sitting in an alley against a brick wall.  It pushes a metal probe
into an open access panel in its arm.  Camera switches to shot looking down
from directly overhead.]

Narrator:

	Robots have primitive concepts of reward and punishment to allow
	easy programming.  Some robots become junkies by searching for wires
	leading to their pleasure center and applying high voltage to
	them.  This is called "back planing" and eventually destroys the
	robot's electronic control system.

[Robot rivoted to a cross made of steel "I" beams.  Above it is a Latin
enscription: "Sic Biscuitus Disintegratum".  Camera is in front and above
the robot as in Dali's painting of the Crucifixion.]

Narrator:

	Robots have a cold, metallic religion that offers no sympathy.  They
	worship primitive mechanical Archetypes: The Screw, The Lever,
	The Incline Plane.

[Back to original scene of robots at assembly line.  One suddenly shoots
itself in the head.  Immediately, its head is replaced with a new one and
the robot goes back to work.]

Narrator:

	Occasionally, a robot is overcome by hopelessness and
	existential ennui, but there is no escape.

In 1971, the Soviet landing capsule of Mars-3 became the first spacecraft to land on the red planet. Two cycloramic cameras were installed, mechanically scanning vertically with a resolution of 500 pixels, a complete sweep would transmit a 6000 line panorama and 4 lines per second.  The signal was to be relayed to Earth by the main spacecraft, which went into orbit around Mars.

Unfortunately, contact with the lander was lost about 20 seconds, and only 79 lines of data were received.  As on the Venera landers, the video signal would have been periodically interrupted by bursts of digital science telemetry.  In the portion of the signal that was received, the beginning portion is this digital telemetry, followed by about 15 seconds of video with the characteristic sync pattern sent during the retrace interval.

The images above are derived from a photo of the signal as it was printed on a paper plotter, and a glimpse of the signal was also shown in a Soviet documentary film.  Only one camera transmitted initially.  If the lander had functioned, the second camera was to be activated a day later.  With an orange filter in one, and a green filter on the other, the two cameras would have provided stereoscopic views and color information.

The image has sometimes been turned on it side, and the pattern of data in the initial telemetry burst has been misinterpreted by amateur enthusiasts as an image of the horizon of Mars.  The actual video signal starts a few seconds later.  It was gray and featureless, despite intense analysis by Soviet experts hoping to find some hint of the Martian terrain.

At the time, Soviet scientists proposed that the probe was damaged by a sand storm on Mars.  It is more likely that the telemetry signal was broken off because the orbiter was not well positioned.  Privately, one of the camera builders told me that he fears the video was blank because the capsule had tipped over, or perhaps was covered up by its parachute (recent possible location of the Mars-3 lander by NASA’s Mars Reconnaissance Orbiter suggests the parachute landed far away from the capsule).

After some discussions with Arnold Selivanov about this, he became interested in the problem again and published a new highly processed view of the video signal.  Is it a view of the Martian surface, or video signal noise?  Difficult to be certain, but still an historically interesting image.

I was reading about the 10,000 Year Clock, which is an interesting and romantic idea.  But I can imagine a lot of things that could go wrong in 10,000 years, mostly involving changes in culture. The clock could be looted like the tombs of ancient Egypt, it could be take by a wealthy art collector like the Elgin Marbles, destroyed by religious fanatics like the Buddhist statues of Afghanistan, or dismantled and put on display in a museum by future people who don’t share or understand the philosophy of the project.

Geodetic Satellite

If I was going to build a long-lived machine, I would do something that specifically addresses the danger of future cultural failure.  Build a dense satellite, a sphere of tungsten perhaps, and put it into a 6000 km orbit, like a geodetic satellite that will stay in orbit for millions of years.  In the surface, embed solar batteries with thick quartz micrometeorite shields.  In the core, put robust solid state electronics that transmits a repeating radio signal containing a key scientific knowledge, like a summation of Feynman Lectures in Physics, text and diagrams preserving foundational ideas like the theory of atoms, mechanics, biological evolution, and so on.

This would act as a beacon and a guardian of scientific knowledge that could survive global disasters, both natural and man-made — a meteor strike that devastates our population, or a purge of science by some future religious or eco-political movement.  None of them could stop people from eventually finding a beacon in the sky that puts them back on the road to truth, progress and enlightenment.

Anthropologists have claimed that our minds are designed for small communities, where we know about 150 people. Now a billion people are on Facebook, each organized into a network where every individual is in contact with about 150 people they more or less know.  Information flows on this new topology happed onto the internet.  Yeah, it could have been done better, but this may be the most interesting thing that has happened in human history.

For the majority of practical people, it will be amazingly helpful, with wonders yet to unfold. If they keep control of things, the social network could make the world a better place, more democratic, more peaceful, more educated.


But there is that minority of people who are fundamentally political, millions of them all thinking about how they can exploit the social network to launch a wildly successful political mass movement.  Is there a fatal meme?  Will someone invent or modify a religion or reactionary political movement that will sweep across a billion people and cause a catastrophy?
 

In a recent paper, a highly respected and pioneering planetary scientist in Russia has suggested that images from the Venera-13 lander might show life forms on the surface of Venus. Dr. Leonid Ksanfomality did important work on the spectroscopy of Venus and Mars from spacecrafts in the 1970s and 1980s, and he was the first to discover that lightning was common in the atmosphere of Venus.
His latest paper has raised eyebrows throughout the planetary science community: “Venus as a Natural Laboratory to Find Life at High Temperature: Events on the Planet”. In it, he claims three particular examples of mysterious objects: a moving disk shaped form, a “scorpion” shaped object, and a moving black object. I would like to present an alternative theory for these objects, which I believe is more likely. First a quick review of the camera and telemetry system of Venera-13. A broader discussion of that mission can be found here: http://www.mentallandscape.com/V_Venera11.htm
Nearing Venus, on Feb 28, 1982, the massive Venera-13 separated into a landing vehicle and a large flyby spacecraft. These encountered the planet on March 1, where the lander set down at 03:57:21 UTC. It drilled into the surface to analyze the rocks, and several minutes later, a cycloramic camera began to scan the surface through a thick quartz window. A photomultipler tube, highly sensitive and very low-noise, detected light, which was converted into 9-bit digital video.
The digital video from each of two cameras was sent to the flyby spacecraft on a meter band channel at a data rate of 3072 bits/sec. This was then relayed to the Earth via a large parabolic antenna. In a typical style of redundant design, two entirely different radio systems were used for the interplanetary transmission. On a decimeter band, the digital video was passed unchanged, as a pulse-code modulated (PCM) signal. That is, pixel values were sent as a sequence of binary numbers (with convolution error-correction code). This is also how American spacecraft transmitted data.
On a centimeter band, an older Soviet radio system sent the data using a pulse magnetron to encode the data as variable spacing between powerful microwave impulses. 512 numbers per second were transmitted, each representing 6 bits of data and parity, encoded orthogonally into 128 possible pulse spacings. This scheme is usually called Pulse-position modulation (PPM), and in Russian VIM (Vremya Impulsnoi Modulyatsii).

Here are examples of two versions of transmitted video signal. The first is sent by PCM, generally a very clear signal, but single-bit errors create a familiar “salt & pepper” noise which gets more intense later in the transmission as the signal from the flyby spacecraft apparently weakens. The second image is sent by PPM and is rather strange. The noise takes the form of light speckles, but there is no sign of errors in low order bits. Even near the end of transmission, the noise characteristics remain unchanged. My own analysis found that I could systematically undo most of this noise, making these bad looking images actually a useful source of good data.
One of the objects Dr. Ksanfomality claims might be a lifeform is the “scorpion”, which is indicated by the orange arrow. But his object does not appear in the simultaneously transmitted PCM signal.
To better understand this phenomenon, let us plot the corresponding pixel values in PCM and PPM versions (with log intensity). Along the diagonal, we see the hoped-for case where both pixels have the same value. The horizontal smear around this diagonal is the result of the “salt & pepper” noise contained in the PCM signal. However, the noise in the PPM signal is far from random, resulting in a geometrically patterned constellation of points. We would expect errors in pulse-position modulation to take the form of small errors in the pulse spacing, creating low-order bit errors. But these are passed through an orthogonal code that is designed to separate those values and make error correction easier. It is quite possible that the geometrical pattern is the result of that coding.
Noise in the PPM images tends to occur along isophotes, curves of constant brightness. And this explains why it follows subtle countours and develops into interesting structures. The “scorpion” and “disk” are probably the result of this phenomenon. However, Dr. Ksanfomality also points out a third unusual feature that changes over time, a dark shape next to the Prop-V sensor, a scientific experiment that drilled into the surface to measure the physical consistency of the rock.
Here are my own processed versions of two images taken about 15 minutes apart, which show a change in the shadow on the near side of the drill (under the smaller disk at the end of the framework). In my own research, I calculated a new and more accurate camera response function, so it is fairly clear that a shadow appears in the early image and then seems to be gone in the second image. But in the Russian versions of this image, the shadow is almost black, and this appears to be the object Dr. Ksanfomality named the “black rag”.
While this is not an object that moved, it is still an interesting question to ask why the shadow disappeared. The illumination on the surface of Venus is thought to be a uniform glow from the perminantly cloudy sky. However, a few years ago, Grieger and Ignatiev analyzed spectral data from the Venera-13 lander, made during its descent, and they found evidence of a near-surface cloud layer. Could a passing low-altitude cloud have caused a change in the distribution of illumination?
I hope this controversy will kindle a rewnewed interest in the mysteries of the planet Venus and lead to new missions. The Soviet Union landed on Venus 10 times, and nobody has attempted it again since the twin landers of the 1985 Vega mission.

In 1962, Sergey Korolev, the head of the Soviet rocket program, wrote a report entitled “A Plan for the Mastery of Mars and Venus”. In the previous two years, his team had made several unsuccessful attempts to send “automatic stations” to Mars and Venus. Now he tasked Maksimov’s design team with the problem of sending men on orbital missions to the nearby planets.


Gleb Maksimov had designed Luna-3 and Venera-1. The Mars-1 spacecraft was an example of his modular spacecraft system, able to perform photographic fly-bys of Mars or Venus or to deliver a landing capsule. Although very young at the time, Maksimov had earned the respect of Korolev’s team and the academic scientists who designed experiments for planetary probes.


Maksimov’s manned spacecraft design became known as TMK, the heavy interplanetary ship (Tyazhely Mezhplanetny Korabl ). The 75 ton spacecraft would have to be assembled in space from pieces launched by the as yet unbuilt N-1 moon rocket.


A subsequent version would include crew quarters and a hydroponic greenhouse to supply food and oxygen and artificial gravety generated by the rotation of the spacecraft around the longitudinal axis. The ZBTK (Closed Biological-Technical Complex) was developed and ground tested, wth several Russian scientists spending a year inside a sealed environment — long before the infamous Biosphere experiments in the west.


The ship was to be propelled by the YaERD-2200, an 8.5 ton-thrust electro-plasma engine. With a specific impulse 20 times higher than chemical rocket engines, the craft would be able to travel to Mars or Venus, enter orbit, leave orbit and return to Earth. The thrust was relatively low, and the craft would begin by spirally out from low earth orbit, the crew flying up and getting onboard once the ship was safely above the Van Allen radiation belts.

Ion engines were an idea that appeared earlier than many people realize. Robert Goddard had built experimental ion engines as early as 1916, before the first flight of a liquid-fueled rocket. In 1964, the Soviet Mars probe Zond-2 had tested the first plasma engines in space. Russia developed the technology of Hall-effect acceleration of plasma, still used today for satellite orientation and on the European SMART-1 lunar probe.


The YaERD-2200 engine would have been powered by a 2200 kilowatt nuclear reactor, using thermionic emission to generate electricity directly from incandescent uranium oxide fuel elements. The Russians later did develop smaller thermionic reactors such as Topaz-1, which was orbited and tested in combination with ion engines. The program became controversial after a nuclear satellite reentered the atmosphere and crashed in Canada.


Today, the technology of building large, long-lasting structures in low earth orbit is much better understood. A perminent mobile laboratory, powered by nuclear fission and ion propulsion could be built and used to roam the solar system. But many technical problems remain, including the protection of the crew during solar radiation outbursts.

Recently, the American astronaut Buzz Aldrin has been calling for work to begin on an a modern version of the TMK concept, which he calls the Exploration Module or XM.

Ever notice that floating point numbers are plural? You say “I have 1 apple”, but “I have 1.0 apples” (i.e., “one point zero apples”).

(define Time 0.5)

;
; sky dome
;
(define SKY (surface BLEND_TURBULENCE SURF_CONSTANT BUMP_FLAT SURF_CONSTANT BUMP_FLAT 0 1))

(define (skyDome) (scale 30 30 30 (move 0 3985 0
(scale 20 20 20 (shade SKY (rgb 0.1 0.3 0.9) (rgb 0.9 0.9 0.9)
(scale 0.05 0.05 0.05 (diff
(scale 4100 4100 4100 (sphere))
(scale 4000 4000 4000 (sphere))
))
))
)))


;
; quadric robot with parameterized joins
;

(define (Robot L_SHOULDER L_ELBOW R_SHOULDER R_ELBOW L_HIP L_KNEE R_HIP R_KNEE)
(bound (union
(bound (union ; head and trunk
(move 0 210 0 (rotate 20 '(0 0 1) (scale 32 48 32 (sphere))))
(move 0 160 0 (scale 20 40 20 (sphere))) ; neck
(move 0 120 15 (scale 30 40 55 (sphere))) ; chest and shoulders
(move 0 120 -15 (scale 30 40 55 (sphere)))
(move 0 80 0 (scale 30 80 50 (sphere))) ; abdomen and hip
(move 0 -50 0 (scale 35 35 55 (sphere)))
(move 0 34 0 (scale 25 25 35 (sphere)))
(move 0 17 0 (scale 25 25 35 (sphere)))
(move 0 0 0 (scale 25 25 35 (sphere)))
(move 0 -17 0 (scale 25 25 35 (sphere)))
))

; left arm
(bound (move 0 130 70 (rotate L_SHOULDER '(0 0 1) (union
; forearm and hand
(move 0 -110 0 (rotate L_ELBOW '(0 0 1) (union
(move 0 0 0 (scale 13 20 13 (sphere)))
(move 0 -50 0 (scale 12 50 12 (sphere)))
(move 0 -100 0 (scale 10 10 10 (sphere)))
(move 0 -120 0 (scale 12 25 6 (sphere)))
)))
; upper arm
(move 0 -55 0 (scale 23 55 16 (sphere)))
(move 0 -10 -10 (rotate -35 '(1 0 0) (scale 22 33 22 (sphere))))
))))

; right arm
(bound (move 0 130 -70 (scale 1 1 -1 (rotate R_SHOULDER '(0 0 1) (union
; forearm and hand
(move 0 -110 0 (rotate R_ELBOW '(0 0 1) (union
(move 0 0 0 (scale 13 20 13 (sphere)))
(move 0 -50 0 (scale 12 50 12 (sphere)))
(move 0 -100 0 (scale 10 10 10 (sphere)))
(move 0 -120 0 (scale 12 25 6 (sphere)))
)))
; upper arm
(move 0 -55 0 (scale 23 55 16 (sphere)))
(move 0 -10 -10 (rotate -35 '(1 0 0) (scale 22 33 22 (sphere))))
)))))

; left leg
(bound (move 0 -50 30 (rotate L_HIP '(0 0 1) (union
(move 0 -160 0 (rotate L_KNEE '(0 0 1) (union ; calf and foot
(move 0 0 0 (scale 20 20 20 (sphere)))
(move 0 -75 0 (scale 20 75 20 (sphere)))
(move 0 -150 0 (scale 20 12 12 (sphere)))
(move 20 -160 0 (scale 45 10 20 (sphere)))
)))
(move 0 -80 0 (scale 30 80 27 (sphere))) ; thigh
))))

; right leg
(bound (move 0 -50 -30 (scale 1 1 -1 (rotate R_HIP '(0 0 1) (union
(move 0 -160 0 (rotate R_KNEE '(0 0 1) (union ; calf and foot
(move 0 0 0 (scale 20 20 20 (sphere)))
(move 0 -75 0 (scale 20 75 20 (sphere)))
(move 0 -150 0 (scale 20 12 12 (sphere)))
(move 20 -160 0 (scale 45 10 20 (sphere)))
)))
(move 0 -80 0 (scale 30 80 27 (sphere))) ; thigh
)))))
))
)

;
; robot riding a unicycle
;
(define PI 3.14159265358979323846)
(define RTD 57.29577951308232087721)
(define (S angle)
(sin (* angle RTD))
)
(define (C angle)
(cos (* angle RTD))
)
(define (A angle)
(/ (atan angle) RTD)
)
(define (sqr x)
(* x x)
)

(define (unicyclist time)
(let* (
(s (* PI (- 2 time))) ; pedal angle (0-2 PI)
(f (* 0.8 (S s))) ; foot(z)
(g (* 0.8 (C s))) ; foot(y)
(h (- 5.33333 1)) ; height of hip joint
(l 2.66667) ; length of thigh (and calf)
(d (sqrt (+ (sqr (- h g)) (sqr f)))); dist foot to hip
(v (sqrt (- (sqr l) (/ (sqr d) 4)))); knee-chord dist
(a (A (* 2 (/ v d)))) ; internal angle
(k (* -360 (/ a PI))) ; knee angle (with thigh)
(c (A (/ f (- g h)))) ; external angle
(j (* 180 (/ (+ a c) PI))) ; hip angle

(s (+ s PI)) ; pedal angle (1-3 PI)
(f (* 0.8 (S s))) ; foot(z)
(g (* 0.8 (C s))) ; foot(y)
(h (- 5.33333 1)) ; height of hip joint
(l 2.66667) ; length of thigh (and calf)
(d (sqrt (+ (sqr (- h g)) (sqr f)))); dist foot to hip
(v (sqrt (- (sqr l) (/ (sqr d) 4)))); knee-chord dist
(a (A (* 2 (/ v d)))) ; internal angle
(n (* -360 (/ a PI))) ; knee angle (with thigh)
(c (A (/ f (- g h)))) ; external angle
(m (* 180 (/ (+ a c) PI))) ; hip angle

(le (+ 15 (* 15 (C (* (+ time 1) PI))))) ; left elbow
(ls (* 20 (C (* (+ time 1) PI)))) ; left shoulder
(re (+ 15 (* 15 (C (* time PI))))) ; right elbow
(rs (* 20 (C (* time PI)))) ; right shoulder
)
(move 0 -0.13662 0 (scale 0.5 0.5 0.5 (union
(move 0 -6.1666667 0 (scale 0.016667 -0.016667 -0.016667
(rotate 90 '(0 1 0)
(shade SURF_PLASTIC (rgb 1.5 0.65 .1)
(Robot ls le rs re j k m n)
)
)
))
(move 0 -1 0 (rotate 90 '(0 1 0)
(scale 1.27324 1.27324 0.1
(move 0 0 1 (cylinder))
)
))
)))
)
)

(define figure (def-prim (unicyclist Time)))
;
; generate peano-curve maze with recursive instancing
; D. P. Mitchell 90/06/09.
;

;
; Unit cell of peano-curve maze is slab with origin at O
; and three figures beginning at R0, R1, and R2. There are
; three varieties, where R2 goes forward, turns left, or
; turns right. The final location of R2 will then be F, L,
; or R respectively. The cycle time is 2 seconds.
;
; -2 2 6 10 14
; -2 +---------------------------L---+
;
; 0 O R0 R1 R2 F ----> Z axis
;
; 2 +---------------------------R---+
;

(define eF (def-prim
(bound (union
(move 0 32 6 (scale 2 32 8 (cube)))
(move 0 0 2 (velocity 0 0 2 (figure)))
(move 0 0 6 (velocity 0 0 2 (figure)))
(move 0 0 10 (velocity 0 0 2 (figure)))
))
))

(define eR (def-prim
(bound (union
(move 0 32 6 (scale 2 32 8 (cube)))
(move 0 0 2 (velocity 0 0 2 (figure)))
(move 0 0 6 (velocity 0 0 2 (figure)))
(move 2 0 10 (spin 45 '(0 1 0) (move -2 0 0 (figure))))
))
))

(define eL (def-prim
(bound (union
(move 0 32 6 (scale 2 32 8 (cube)))
(move 0 0 2 (velocity 0 0 2 (figure)))
(move 0 0 6 (velocity 0 0 2 (figure)))
(move -2 0 10 (spin -45 '(0 1 0) (move 2 0 0 (figure))))
))
))

;
; first order peano curves are just made out of edges
;
(define (clock1 turn) (def-prim (bound (union
(eR)
(move 0 0 12 (rotate 90 '(0 1 0) (eR)))
(move 12 0 12 (rotate 180 '(0 1 0) (turn)))
))))

(define clock1R (clock1 eR))
(define clock1F (clock1 eF))
(define clock1L (clock1 eL))

(define (counter1 turn) (def-prim (bound (union
(move 12 0 0 (eL))
(move 12 0 12 (rotate -90 '(0 1 0) (eL)))
(move 0 0 12 (rotate -180 '(0 1 0) (turn)))
))))

(define counter1R (counter1 eR))
(define counter1F (counter1 eF))
(define counter1L (counter1 eL))

;
; higher order peano curves are build out of edges and
; lower order curves
;
; six curves are needed at each order, three going clockwise
; and three counterclockwise and the figures turning left, right
; or going straight as they leave the curve.
;
(define (clockWise size quad1 edge1 quad2 edge2 quad3 edge3 quad4)
(def-prim (bound (union
(move 0 0 size (rotate 90 '(0 1 0) (quad1)))
(move 0 0 size (edge1))
(move 0 0 (+ 12 size) (quad2))
(move size 0 (+ 12 size) (rotate 90 '(0 1 0) (edge2)))
(move (+ 12 size) 0 (+ 12 size) (quad3))
(move (+ 12 size size) 0 (+ 12 size) (rotate 180 '(0 1 0) (edge3)))
(move (+ 12 size size) 0 0 (rotate -90 '(0 1 0) (quad4)))
)))
)

(define (counterWise size quad1 edge1 quad2 edge2 quad3 edge3 quad4)
(def-prim (bound (union
(move 0 0 size (rotate 90 '(0 1 0) (quad1)))
(move 0 0 (+ 12 size) (rotate 180 '(0 1 0) (edge1)))
(move 0 0 (+ 12 size) (quad2))
(move (+ 12 size) 0 (+ 12 size) (rotate -90 '(0 1 0) (edge2)))
(move (+ 12 size) 0 (+ 12 size) (quad3))
(move (+ 12 size size) 0 size (edge3))
(move (+ 12 size size) 0 0 (rotate -90 '(0 1 0) (quad4)))
)))
)

(define (oddPeanos size primitives) (let
(
(cR (car primitives))
(cF (car (cdr primitives)))
(cL (car (cdr (cdr primitives))))
(ccR (car (cdr (cdr (cdr primitives)))))
(ccF (car (cdr (cdr (cdr (cdr primitives))))))
(ccL (car (cdr (cdr (cdr (cdr (cdr primitives)))))))
)
(list
(clockWise size ccF eR cF eF cR eF ccR)
(clockWise size ccF eR cF eF cR eF ccF)
(clockWise size ccF eR cF eF cR eF ccL)
(counterWise size cR eF ccL eF ccF eL cF)
(counterWise size cF eF ccL eF ccF eL cF)
(counterWise size cL eF ccL eF ccF eL cF)
)
))

(define (evenPeanos size primitives) (let
(
(cR (car primitives))
(cF (car (cdr primitives)))
(cL (car (cdr (cdr primitives))))
(ccR (car (cdr (cdr (cdr primitives)))))
(ccF (car (cdr (cdr (cdr (cdr primitives))))))
(ccL (car (cdr (cdr (cdr (cdr (cdr primitives)))))))
)
(list
(clockWise size ccR eF cL eL cF eR ccR)
(clockWise size ccR eF cL eL cF eR ccF)
(clockWise size ccR eF cL eL cF eR ccL)
(counterWise size cR eL ccF eR ccR eF cL)
(counterWise size cF eL ccF eR ccR eF cL)
(counterWise size cL eL ccF eR ccR eF cL)
)
))

(define (peano n size odd even primitives)
(if (= n 1)
;
; return clockwise forward version
;
(let ((curve (car (cdr primitives)))) (curve))
(peano
(- n 1)
(+ 12 size size)
even odd ; swap even and odd
(even size primitives)
)
)
)

(define (peanoCurve n)
(peano n 12 oddPeanos evenPeanos
(list clock1R clock1F clock1L
counter1R counter1F counter1L
)
)
)

(define (peanoSize n)
(if (= n 0)
0
(+ 12 (* 2 (peanoSize (- n 1))))
)
)

(define CHECKER (surface MASK_CHECKER SURF_MATTE BUMP_FLAT SURF_MATTE BUMP_FLAT
0 0))

(globals (rgb 0 0 0) 0.05 0.0)

(render (cine 256 256 1) (union
(move -100 -4000 -1000 (light 4400))
; (move -4000 -1000 -1000 (light 250))
(move 6 -14 6 (rotate 45 '(0 1 0) (rotate -10 '(1 0 0) (move 0 0 -50
(scale 12 12 40 (camera))
))))

(scale 2 2 2
(move 0 0.125 0 (scale 0.5 0.5 0.5 (peanoCurve 5)))
)
))