Wednesday, August 31, 2016


Just a few largely-unrelated comments/announcements:

I've figured out how to address the seam issue with the Globe program.  I was a bit under the weather and too busy with day job to finish it off, but expect an update within the next few days.

I recently finished reading The Russian Origins of the First World War by Sean McMeekin.  While I'm not sure I fully embrace every argument he makes, I think his general thesis that Russia bears at least as much blame for the outbreak of WWI as Germany is well supported.  I may post an in depth review next week.

At lunch I reread Ken Perlin's classic 1985 paper "An Image Synthesizer" and chapter 5 of F K Musgrave's dissertation, so I have a few more things I'm likely to try for planet generation, including non-Earth-like worlds.  I may have something along those lines available online in September. Incidentally, the "Pixel Stream Editor" Perlin described 31 years ago seems to bear a greats deal of functional resemblance to pixel/fragment shaders in modern 3D graphics architectures.

Now that I've finished the book I mentioned and refreshed my memory on the computer graphic topic, I resumed reading Mr. Kipling's Army: All the Queen's Men by Byron Farwell.  It covers the rather bizarre institution what was the British Army in the years between the end of the Napoleanic Wars and the start of WWI.  It reminds me of the (briefer) treatment of the Royal Navy found in Chapter 22: From Sail To Steam in Robert Massie's Dreadnought.  Maybe I'll write a review, maybe not.

And there will be more of Pandora's Gate soon.

And with that, I shall bid the world adieu for the night and seek a restful night's sleep.

Book Review: Shadow of Victory

On Monday afternoon, Baen Books released the eARC (electronic Advanced Reader Copy) of the Shadow of Victory, the latest installment in David Weber's Honor Harrington series.  Without getting into details that might serve as spoilers, I'll provide a very brief review.

First, let me start by saying that I enjoyed the book.  Most of the individual scenes were enjoyable, and there were few glaring typos or errors that distracted from the writing.  There were excellent action sequences, and there were scenes of old favorites we'd not spent time much time with in a while.  It was a lot of fun.

Alas, I have two complaints.  The first is that much of the book focused on various revolutionary/insurgent groups introduced in the previous book, Shadow of Freedom, rather than on Our Heroes.  The second is that by the end of the novel, the Honorverse has chronologically advanced perhaps a couple days at most from where things were left at the ends of Shadow of Freedom and Cauldron of Ghosts.

Would I recommend this book?  Absolutely.  Do I regret having spent $15 on the eARC?  No.  Would I recommend you buy an eARC just so you can find out early what happens next in the Honorverse? Not really.

Tuesday, August 30, 2016

Pandora's Gate - 4

Pandora’s Gate
Copyright © 2016 by The Other Sean

This is part four of my ongoing experiment in epistolary fiction. 

Dear Uncle Viggo,

Thank you for all the letters. John has been reading them to me. I love hearing your stories.

Yours truly,

My dear niece,

You’re welcome. It is great to hear from you. You’re writing has improved much. How is school going? Please write more.

Your uncle,

My dear nephew,

I hope this note finds you well. I have almost completed my tale of why I call the gate Pandora’s Gate. To explain that I have to explain some details that might be a bit rough – though it also explains why my dear sister never spoke much to you of Baltica. You’re not a young boy anymore, so you should be able to handle it, but please do not share the details with your sister. She’s far too young.

I told you about the animals and vegetation and the plague and colonial squabbles.skirmishes on land and sea. I did not tell you about the vegetation, though some of it was brutal enough. I have not written, though you may have heard, of some of the skirmishes and minor wars that have been fought over colonial claims her in Baltica. Those were all bad enough, but what happened in the 1892, eleven years after the gate appeared, was in many ways far worse.

I was eighteen then, newly hired onto the railroad, and your mother was a girl of thirteen. Mother had taken her on a trip to a seaside village where mother’s cousin had settled. Though the pseudo-crocs deter bathers, the strand was a popular place to stroll. That’s what they were doing when the lizard men came. When their longships approached the strand, our kin and the others fled toward the village. The lizard men hit the village only a minute or two later.

The lizards killed several of the villagers before our kin could get to relative safety inside our cousin’s cottage. As mother described it, there was screaming, and shouting, and chaos all about. They made it to shelter, but others weren’t so lucky. She said things were quite scary until the villagers figured out what was going on, got their guns out, and started shooting the lizards. It didn’t help that half the men were out in the fields. Eventually, they killed enough of the lizards that they fled back to their longships and went back to the sea that had brought them.

My dear sister wouldn’t speak for days, and she was withdrawn for weeks even once she did. She had terrible nightmares. In the end, your grandparents moved back to Earth with your mother, and she improved.

I stayed here. The attack your mother witnessed was among the first of their attacks. There had been no warning before those first attacks, but the news spread quickly. More attacks followed, but there was less panic.

Vigilance became our watchword on the railroad. When the lizards came ashore and raided, sometimes they’d attack the trains. Our trains in New Jutland had always carried a few guns to deal with the unruly wildlife, and we found ourselves using them to fight off the lizard men. Were it not for our guns I would be dead today. Several coastal and river villages that were unprepared were entirely wiped out.

It was years later before the main lizard settlements, and the gate that brought them to Baltica, were found. Thousands died in their bloody raids, and for years the Lizard Wars rages across Baltica and through the Lizard Gate. But ultimately Baltica was secure again.

So now you know the horrors that were unleashed by the gate, that none would have encountered but for the gate. But the tale of Pandora’s Box dealt not just with the horrors let loose from the box. There was also the hope that was left behind.

And that brings me to why the gate has brought hope. There hasn’t been a major war between human powers since the Baltic Gate opened. Settlement has been steady ever since the lizards were fought back. Any man seeking land to call his own can find it on Baltica, though many have chosen Pacifica or Columbia instead, I know. There’s a boundless vista of possibilities open before humanity.

That is why the Baltic Gate is Pandora’s Gate to me. Because it brought hope along with horror.

There’s more tales to tell, if I’ve not bored by favorite nephew and niece yet. I hope you are both well, and look forward to hearing from you.

Your uncle,

PS Please encourage Elizabeth to write more.

Monday, August 29, 2016

A simple digital globe - 2

I completed the basics of the simple digital globe I mentioned in a previous blog post.  Source code is available on GitHub.  You can select an image file and it will be wrapped around a sphere.  You can then treat the sphere like a globe.  Rotate it via left and right arrow keys, tilt it up or down with the up and down arrow keys, and zoom in and out with page up/page down or plus and minus.  Home restores it to default.  You can print or export, sans background.

Basic globe

Alas, that is about all it can do.  The purpose is more to demonstrate how to do the basics, and to serve as the basis for future development.  There are a few features that should be added and one anomaly that should be addressed before that.  The anomaly, as you can see below, is with the texture mapping of the final "slice" of the mesh.

Bug in texture mapping on the final "slice" of the globe.

That definitely represents a bug, and needs to get fixed.  The distortion below, though, is a combination of the intrinsic limitations of the distortions imposed by the representing an approximately spherical* planet on a flat surface (or image file) and the tendency of map makers to omit the extreme polar regions from many maps as a result.

Polar distortion

So what are the missing features?  Ideally the UV mapping process should support some additional projections, so if dealing with a Mercator project map it uses the correct math.  As it is now it simply interprets latitude linearly across the vertical aspect of the map.  For another, the lighting is always pointed in one direction, so even if you spin the globe the same area remains brightly lit and the remainder slightly dim.  Whether the background should be included when exporting and printing is currently not optional; it always prints/exports without the background.  The background should also be able to be selected, rather than fixed.  Lastly, there's no online help displaying the key information. Those are the features that are missing for the basic globe application.

Then there are the other things to build on top of this.  Cloud simulation, possibly animated, using Perlin noise and multiple textures.  A variety of the planetary terrain generation techniques described by Ken Musgrave.  Maybe some of the things I've experimented with in the past.  Possibly something along the lines of the plate tectonics-based techniques.  Maybe a modified version of Amit Patel's island generation technique.  Only time will tell.

* The Earth is actually a slightly irregular, slightly oblate ellipsoid.

Sunday, August 28, 2016

Pandora's Gate - 3

Pandora’s Gate
Copyright © 2016 by The Other Sean

This is part 3 in my ongoing experiment in epistolary fiction. 

My dear nephew,

I’m glad you and your sister are enjoying my letters. Things have settled back to normal, and I have had time to rest, so I shall continue. You asked about why I call the gate Pandora’s Gate, while every map you’ll ever see calls it the Baltic Gate.

I told you about the animals on land and sea. I did not tell you about the vegetation. Some of the plants discovered here on Baltica can be eaten by humans. Some even taste good. Some were edible, but had unforeseen consequences. And some deadly plants look much like other plants that are edible. I lost a friend who ate the poisonous berries, and another who became very ill. The family next door lost a young daughter when she rubbed up against a plant seldom encountered, but that secretes a deadly poison. That was only discovered when the plant nearly killed a doctor summoned to help her. I’ve met several people for whom speech was rendered difficult or impossible by the effects of eating a potato-like plant that had been considered a delicious treat – until somebody finally realized it was affecting speech.

So the plants and animals were brutal enough. The hideous plague that ran through the colonies for a few years was even worse. Over a thousand died here in New Jutland, but it was worse elsewhere. It was brutal, it killed three men for every woman, but eventually it disappeared almost as abruptly as it had set upon us.

Then there were the skirmishes and minor wars that have been fought over colonial claims here. Denmark has mostly escaped them, but not entirely, and the Germans and Russians have clashed several times. I hope we have seen the last of that. The latest news I’ve heard is that tensions are easing. I can but hope that continues. A war would be in nobody’s interest.

And on that note I shall take leave of this subject for now. I hope to tell you more in my next letter. For now, best wishes to you and your sister. Stay well.

Your uncle,


Saturday, August 27, 2016

A simple digital globe

I mentioned in an earlier post that I'd come back to the topic of image mapping, and how to use a small bit of spherical trigonometry to place a map or photo onto a sphere.  For that purpose, I've written a small C# / WPF application to demonstrate the concept and serve as a springboard for some additional investigation.

Alas, I've also clearly got a bug somewhere, as that is supposed to be a view of North and South America, but all the images are reversed horizontally.  It is neat looking.  I'm going to finish working out a few more kinks before I post the final code and have a more in depth treatment of the subject.

Background is a Hubble image from NASA, world map on the globe is from Wikipedia.

For now, here's that bit of spherical trigonometry for converting three-dimensional Cartesian coordinates for points on the sphere to latitude and longitude. Because the sphere isn't really a sphere, but a mesh of triangles approximating a sphere.  In order to map the image onto the triangle, texture (UV) coordinates indicating relative positions on the image are employed.  To get the UV coordinates, the latitude and longitude are normalized by dividing by pi and 2 pi respectively.  There's no guarantee this is quite right - my bug may in fact lie in this code - but clearly it mostly works, or the image you see above wouldn't look right.

        private Point GetSphereUV(Point3D center, double radius, Point3D point)
            Point3D effectivePoint = (Point3D)(point - center);
            double lat = Math.Acos(effectivePoint.Y / radius); //theta
            double lon = Math.Atan2(effectivePoint.Z, effectivePoint.X); //phi
            if (lon < 0)
                lon += twoPI;
            double v = lat / Math.PI;
            double u = lon / twoPI;
            return new Point(u, v);

Same NASA Hubble background as before, this time with the output from one of my terrain generation experiments

Friday, August 26, 2016

Where is Ruritania?

“Where is Ruritania?”

That’s the question that popped into my mind shortly after I decided to write a story set there. If you’re not familiar with Ruritania, don’t be too hard on yourself, because it is entirely fictional. English author Anthony Hope created the country of Ruritania in a trilogy of novels. The most well-known of the three books, the 1894 adventure novel The Prisoner of Zenda, has been the subject of many adaptations of the novel for stage and screen, and numerous works have paid homage to it.

So why do I care where Ruritania is? Because I decided to write a story set there. I blame Sarah Hoyt. The comments following her August 6,2016 post brought up, among other things, Ruritania romances, giant anime-style mecha, and the lack of enough works featuring Communists vomiting blood in the gutters. Somehow that all came together in my head, and now I’m (intermittently) working on The Warlord of Zenda.

In case you’re wondering what a “Ruritanian romance” is, Wikipedia says that works in the genre are “set in a fictional country, usually in Central or Eastern Europe” and “are typically swashbuckling adventure novels, tales of high romance and intrigue, centered on the ruling classes, almost always aristocracy and royalty." The name of the genre was taken from that of Hope’s fictional country, Ruritania.

But a question came to mind as I started work: “Where is Ruritania?” At first glance, it doesn’t seem of great importance, and it wasn’t in most traditional Ruritanian romances. But given the time period the novel is set in (aftermath of the Great War), and that it may touch some way upon grand politics, I thought it important to figure out a plausible location. Hope left a few clues that help point the way to plausible locations.

In chapter two of the The Prisoner of Zenda, Rudolf Rassendyll, travels from England to Ruritania by way of Paris and Dresden. This pretty much requires that Ruritania be in central or eastern Europe, as if it were in western Europe or along the Mediterranean travel from Paris by way of Dresden would be utterly nonsensical. Rudolf spends the night in Dresden before catching a train to Ruritania sometime the next day. It reaches Zenda, “a small town fifty miles short of the capital, and ten from the frontier” that evening. Those could be air line (straight) distances or along the railroad route; I have chosen to assume the latter. We have no evidence as to when the train left Dresden, its speed, or how many stops it makes. If it is a slow train, somewhere in Silesia, Bohemia, or Moravia would be a good fit.

Another fact also clearly emerges from the quote above. Ruritania may be small, but it isn’t tiny. It has to be larger than European microstates of Monaco, San Marino, Liechtenstein, and Andorra. How do we know? Because of the sixty miles (by whatever measure) from the frontier to the capital at Strelsau. So it has to be a bit larger, perhaps on the order of Luxembourg or Montenegro.

The borders of countries are often based upon defensible borders and recognizable terrain features, such as mountains and rivers. For smaller states, that has often meant the states consists of a valley or series of valleys. Several still-existing examples of this include Andorra, Switzerland, Bhutan, Nepal, Georgia, and Azerbaijan. So I considered that as I went searching.

After about an hour of looking at Google Earth and measuring, I came to the conclusion that part of lower Silesia in the Sudetes Mountains would make a good fit. An approximate rectangle twenty miles wide and sixty-five miles long, encompassing the Polish counties of Kamienna Góra, Walbrzych, and Klodzko, plus tiny bits of the Czech Republic. The upper Klodzko valley and those of several of the Nysa Klodzko’s tributaries are included. Most of the borders for Ruritania follow existing international borders along the ridge lines of mountain ranges in the Sudetes Mountains, or county borders within Poland.

Zenda fits nicely at the location of Witków, about ten rail miles inside the border. Fifty miles further along the rail lines sits Bystrzyca Klodzka, where I’ve placed Strelsau. Strelsau is described as being the great city of Ruritania, so it will have to be larger and grander than the town of Bystrzyca Klodzka.

The real city of Walbrzych will have to be downsized or a be new center of industrialization since the time of the Hope novels. Perhaps Ruritania’s nascent industrialization has helped give rise to the Communist insurgents who threaten?

About the only question left in my mind with regards to the location is how the House of Elphberg avoided having Ruritania gobbled up by one of the larger imperial states nearby, prior to the time of The Prisoner of Zenda. Perhaps I should go read that first novel in the trilogy?

And there we have it.

Thursday, August 25, 2016

Pandora’s Gate - 2

Pandora’s Gate
Copyright © 2016 by The Other Sean

This is the second part in an experiment in epistolary fiction. The first part is here.  We’ll see how it goes.

My dear nephew,

I’m sorry my last letter ended so abruptly. I shall explain why after I’ve finished what had been interrupted.

New Jutland is mostly flat, much like its namesake on Earth, but it is far larger and possesses hills and mountains at one end. Many people have moved from Earth to Baltica and the other worlds, but even with the children born here families must work for years to make the land home. Much of the land remains wild and uncultivated.

Nyhavn is largest city in New Jutland, and the site of a great natural harbor. It was founded when I was still a boy, but it was a difficult process. I mentioned the horned lizards, the great sea serpents, and the pseudo-crocs. All of them and more faced the first settlers and the work crews attempting to construct the docks and port facilities. Dozens of people died before the creatures in the area were thinned out enough for work to proceed in relative safety.

When my father got the job with the railroad here, and we moved from Earth to Baltica, Nyhavn was safe enough, but no man dared travel outside Nyhavn without rifle or shotgun. Our train crews always carry a few in case a situation arises.

Conditions have since improved, but in the outlying farms and some of the more far-flung settlements, a weapon is still a necessity. The settlements are somewhat spread out, and there is often wild land between them. It can take a man on foot a day to travel from one town to its neighbor.

That is where the railroad comes in. For land trips of any great distance, passengers and freight move by rail. The roads are too poor for long trips by automobile, though I hear rumors the Governor General is planning to pave the road from Nyhaven to Langtbro. As for airships, they are far too expensive – and too limited in freight capacity – to carry the bulk of what the railroads carry. For trips across the sea, though, they do have the advantage of not falling prey to sea serpents.

I mentioned earlier that New Jutland has mountains. Beyond them lay the German colony of New Prussia. Given the past experiences of Denmark and our family, a tight watch on that frontier is warranted. My father and his parents, your great-grandparents, were driven from Slesvig, and I do not wish to see a recurrence.

For the moment, though, our relations with our German neighbors across the mountains are little cause for alarm. The tension between Russia and the German Empire, however, has caused stress for some in our Army. Last night they demanded the railroad ship additional supplies and troops from the base here at the Nyhavn to the frontier in the mountains. That’s why the boss called me in.

I had more to say about the early days of New Jutland. However, the last few days have been quite long, and I must rest. Give my love to Elizabeth. I hope you are both doing well over there in America.

Your uncle,

My dear nephew,

I hope this letter finds you and Elizabeth well. Things remain hectic here. We’ve been more running extra trains for the Army. Yesterday involved moving a trainload of horses and soldiers. The cars we used for the horses stank by the time we got them back to the yard at Nyhavn. I am glad my job does not involve cleaning them. The evening newspaper says the Germany-Russia situation is settling down – perhaps this means the end to the extra trains. I shall write you more later. Until then, stay well.

Your uncle,

Dear Uncle Viggo,

Elizabeth and I are both well, and thank you for your letters. We like hearing about Baltica and New Jutland. Mom never told us very much about them, even though I know she lived there with you and our grandparents for a while. Please tell us more. You never finished explaining why you call it Pandora’s Gate.

Yours truly,

Interesting Failures

Today's post is going to show the results of a few different approaches I've tried to use for generating terrain.  None of these quite hit the mark, but I found them visually interesting.  The first two examples are for entire planets.

In the first one, I started out by creating a supercontinent using a probablistic fill algorithm.  Next I split it into continental chunks and shifted the chunks, then added mountains along the medial axis of the resulting chunks.  Interesting, and you can see how they once fit together (like South America and Africa once did), but not convincing.

The second one was a variation on the theme, but more colorful.  Here, I generated the supercontinent using an algorithm that combined a decay equation with Perlin noise.  The supercontinent was split into chunks ago, which where then randomly placed in cluster zones.  A dew smaller chunks were spread randomly, and island arcs were generated.  The puzzle-piece effect of the first one is missing, but the coast lines here are more interesting.  Still not a convincing map to me, though.

The third image results from a bug when porting Amit Patel's Polygonal Map Generator from Flash/ActionScript to Windows Forms/C#.  (I should clean that up and get it up on GitHub someday.)  That program is intended to generate not the terrain for a whole planet, but only for an island.  Alas, a bug while testing the port resulted in the image below, which reminds me of some type of four-legged animal leaning down to eat or drink something.

That's it for today.  I'll probably be posting more of Pandora's Gate tomorrow.

Wednesday, August 24, 2016

Pandora’s Gate - 1

Pandora’s Gate
Copyright © 2016 by The Other Sean

This is an experiment in epistolary fiction. We’ll see how it goes.

My dear nephew,

I call it Pandora’s Gate. The rest of Earth may call it the Baltic Gate if they wish, but they haven’t experienced it like I have, and it’s opening was like the opening of Pandora’s box. But I’m getting ahead of myself.

I was a child of seven when it happened, back in 1881. Mother had walked me down to the strand. The water was too cold for bathing but the strand was a good place to walk. I remember when it appeared. One minute I was seeing the sparkling blue waters of the Bay of Køge, glittering in the early spring sunlight, with a blue sky filled with white puffy clouds. The next a massive semicircle arced up from the water, blotting out the sky. It was colorful. It was new and exciting. It made mother worry. She dragged me back to the house, despite my protests.

It was in the newspaper the next day, of course. It was just a statement from the government asking for calm and promising to investigate. By the time the navy actually sent a ship some of the local fishermen from Køge had sailed out to investigate on their own, and the town was abuzz with the news before the newspapers. They’d discovered that the semicircle was a gateway to another world, and there were islands nearby. Denmark was first to claim one, but Sweden and Germany followed within days. Russia and the other countries were too late by the time they arrived; all the islands in the archipelago had been claimed!

I don’t know what negotiations or threats were made, but Russia managed to to acquire one of the islands, and France another. That still left everybody else out, at least as far as the archipelago went. But the archipelago wasn’t one of the real prizes, as everybody learned soon enough. There were other islands, and entire continents, on which no man lived, and no nation yet held claim. There was more than enough other creatures inhabiting those alien lands, and the seas.

On land, the worst were the horned lizards. They are swift, ferocious, and have teeth that can tear a man to shreds. They’re nearly extinct here in New Jutland, but you’ll still find one now and again. That first year the gate opened, one of them devoured the Crown Prince of Germany when he visited the little German island. I imagine that’s not something those of you in America have to worry about!

In the seas, the question of what is the deadliest creature is another story, and open to debate. Some say the giant sea serpents are the worst. They usually avoid larger steamships, but they regard sailing ships and smaller steamboats as prey. Worse, they can swim through the gate. I was ten when I saw one in the Bay of Køge. It took a bit out of one of the fishing boats, sinking it, but somehow the crew made it to safety. Bad as they are, though, there are also the pseudo-crocs. I’ve heard it said they’re not really crocodiles, but that doesn’t matter, what does is that they’re just as deadly. They can swim at sea for miles and miles, then crawl ashore and cause chaos. That’s why the strand near Køge has been abandoned, and why so much effort has gone into works to stop their spread.

Anyhow, despite the deadly creatures that had been encountered, no country was content with just their little island in the archipelago by the gate, not when so much additional land had been discovered. That’s how the New Jutland came about.

The King and the Rigsdag may have organized the colonization, but if they hadn’t a lot of Danes would have simply--

I’m sorry, I have to stop here for now. I know you wanted to know more about our family’s experiences with and beyond the gate, more than what your mother told you, but I have received a phone call from my boss. They need me to put in another shift. Give my love to your sister.

Your uncle,

Monday, August 22, 2016

Book Review: Kosciuszko, We Are Here!

I recently finished reading Kosciuszko, We Are Here! American Pilots of the Kosciuszko Squadron in Defense of Poland, 1919-1921 by Janusz Cisek.  It is the fascinating tale of over a dozen American pilots who volunteered to help the Polish in their war with the Bolshevik armies of Russia.  Few of the pilots had personal or professional ties to Poland, which raises the question of why they volunteered.

As explained in the book, two main motivations existed.  One was anti-Bolshevism, be it from second-hand exposure or general principle.  The other motivation was to pay Poland back for the contributions of several Polish figures during the American War of Independence.  Tadeusz Kosciuszko and Casimir Pulaski were Polish men were heroes to 18th century Americans and Poles; Pulaski gave his life leading a cavalry charge against the British at the Battle of Savannah.  Merian Cooper, the American pilot who helped organize the squadron and served as its second command, was the direct descendant of one of the American soldiers who'd served with Pulaski at Savannah.  (All three of the gentlemen mentioned above are interesting in their own right, and a quick perusal of their Wikipedia entries is impressive - particularly Kosciuszko and Cooper, whose life was... diverse.)

The author explains the general (bad) situation the newly-independent Polish republic found itself in during the aftermath of World War I.  This helped me to understand why the Polish were so desperate for every trained soldier and airman they could find, and why they were so glad to add a (mostly) American squadron to their air force.  It covers the operations of the 7th Kosciuszko Squadron during the Russo-Polish War (also known as the Polish-Soviet War), and attempts to place them in the context of the overall campaigns of the war.  Alas, those without knowledge of that war may find themselves without adequate context.  I sought out such context, and found that the final chapter in The Eastern Front, 1914-1920 by Michael S. Neiberg and David Jordan, helped add to the context.

As his name suggests, author Cisek is Polish, and his first language was clearly not English.  Despite the occasional strange turn of phrase, the prose is decent and serves to convey the tale well enough.  He delves into the Polish perspective quite well from Polish sources as well as reports from foreign diplomatic personnel (particularly the US Military Attache) in Poland.  It features a decent number of photographs of the pilots and their aircraft, which help convey the primitive-but-improving state of aviation in the period.

The title is inspired by the famous quote "Lafayette, we are here."  Those words were uttered by an American Army officer during WWI at the French grave of the Marquis de Lafayette.  Like Lafayette, Kosciuszko was a European who served in the American War of Independence, and was a hero to his own countrymen as well.

NOTE: Amazon offers a much better price than I paid when I happened across this when perusing the book shelves at the gift shop of the National Museum of the United States Air Force in Dayton. 

Sunday, August 21, 2016

Planets via Image Mapping

In my previous post on Classic Fractal Landscapes I posted some simple full-planet fractals I had created, but as plate carrée projections.  I thought a brief mention of how to make them look like proper planets might be in order.  Most rendering packages include a capability for texture mapping, in which an image is placed onto a model.  Here's an example of what happens when I mapped the fractal images from that post onto spheres using POV-Ray:

Full code can be found in my GitHub repository.  The image above is generated by MappedPlanets.pov, from which the following is excerpted:

#declare Fractal1=
object {
    sphere {
    texture {
        pigment {  
            image_map {
              png "Fractal1.png" // image to map
              map_type 1        // 1=spherical
              interpolate 2     // 2=bilinear
            } // image_map                                                                            
        finish {
            ambient rgb <.35,.35,.35>

 I used my fractal images above, but the image could just as easily have been a map created with a digital art program (even Microsoft Paint), a scan, or a map.  A couple examples are below, generated by the PaintMap.pov file.

Most 3D modeling programs contain a feature to perform similar mappings.  For programmers seeking to display a planet (or globe) in an application, this can be done via some simple UV mapping between a sphere and the map by applying some spherical trigonometry.  I'll cover that at some point in the future - perhaps I'll create a simple application to let you select an image file and manipulate the resulting globe.  In any case, that's it for now.

The next post is likely to be on another topic, however.

Tuesday, August 16, 2016

Classic Fractal Landscapes

Fractal landscapes have been with us since the 1980's.  A couple examples of fractal landscape images, courtesy of Wikipedia, can be seen below.

Many of the fractal landscapes that drew attention through the early 1990's were the work of Benoit Mandelbrot and his various students and collaborators.  Perhaps one of the most prolific of those who worked with Mandelbrot is F. Kenton Mugrave, who in addition to his academic work was creator or consultant on a large number of terrain generation and visual effects projects. His dissertation offers offers a theoretical discussion of techniques for generating terrestrial landscapes and a wide variety of planetscapes, along with various visual effects.  Large numbers of code examples are also presented, but alas no images, as the color plates included with his dissertation have been lost.

much shorter extract and variant from one of the courses Musgrave taught can be found online, and is much more to the point.  He was also coauthor of a reasonably accessible (for programmers, computer scientists, etc.) book that has become a classic the on topic, Texturing & Modeling: A Procedural Approach.

The approaches Musgrave outlines for terrestrial scene generation work well on a relatively small scale, but there are downsides to using those approaches to model the entire surface of an Earth-like planet.  You get something like these:

I've "flattened" these four down to display as only blue green, for land and water, rather than elevation detail, but even with elevation-based detailing added, they still don't look very realistic. See the two images below for an example of what I mean.


They lack the long, parallel, relatively-narrow systems of mountain like the North American Cordillera.  Missing too are mountains like the Himalayas and Alps, wider bands of mountains resulting from different plate interactions.

There are ways to try to improve upon these methods, but the fractal methods simply have some inherent flaws.  In future posts I'll address some of those improvements (e.g. statistics-based, example-based, etc.), and non-fractal approaches (e.g. crude plate tectonics simulations).  For now, adieu.

Friday, August 12, 2016

A few words on the logo

The logo/header for this blog was generated using POV-Ray, the Persistence of Vision Raytracer. POV-Ray is a free, multi-platform program that renders a 2D image based upon a 3D model generated from a program-like text file.  I wouldn't recommend it for most purposes, as it is only a renderer - there is no export that produces a 3D model that can be used to transfer the design into another program, like an animation or gaming package.

In other words, it turns something like this:

into something like that:

A different bit generates this ringed gas giant.

But I've had experience with it in the past, and it was a useful in exercise in seeing if I could quickly generate a few planets.  There are other ways this could have been done; even if I'd used POV-Ray to generate the planets, I could have composited the planets, the text, and the background in a traditional 2D image editing program.  There's a lot more that can be done to make planets look more realistic, like add noise, use multiple rings with small gaps for the gas giant, etc. but they'd largely be lost in the logo-sized image.  Feel free to play around with the examples below if you want to try it out yourself.

The image used for the background is a public domain image from NASA JPL, and is an amazing image in its own right.  Hurrah, our tax money does provide some very pretty pictures.  If you download it and place it in same directory as the source code POV-Ray should automatically find it when rendering and use it as the background.

Complete source code for the planets and the background can be found on GitHub under an MIT license.  Knock yourself out if you wish.  The file in question is LogoPlanets.pov.


This blog is about awesome worlds.  Those worlds could be the world of the past, or the imaginary worlds of science fiction or fantasy.  They can be worlds literary, cinematic, or in model form (physical or virtual).  They can be complete worlds, or only fragments.  I will be discussing fact and fiction, representing digital terrain, interesting aspects of the past and of possible futures or alternate realities.  Procedural content generation, creating worlds through code, is one of the major aspects I will cover.  This blog can and will cover a lot.

I shall also discuss, not just the worlds, but something about reading science fiction, fantasy, history, and other works.  As I progress with attempting to write a novel, I may share some snippets of that, as well, or thoughts on the creative process.