// Author: Ika, Date: 08/04/2015 -->
// The following code can be used to generate the SVG image of ordinals \omega^2.
// Anyone can copy and revise this code without any copyright concern.
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.PrintWriter;
public class Ordinal
{
public static void main(String[] args)
{
try{
File output = new File("ordinal_ww.svg");
FileWriter fw = new FileWriter(output);
PrintWriter pw = new PrintWriter(fw);
pw.println("<?xml version=\"1.0\" standalone=\"no\"?>");
pw.println("<!-- Author: Ika, Date: 08/04/2015 -->");
pw.println("<!-- Anyone can copy and revise this code without any copyright concern. -->");
pw.println("<svg width=\"512\" height=\"384\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">");
pw.println("\n\t<g style=\"stroke:black; stroke-width:1\" >");
// Draw the vertical lines...
double magic_frac = 0.875; // the length ratio between each pair of segments
double min_l = 0.1; // the least length of each segment
double x=1.0, y=0.0, l=384.0;
double L=l; // restored length after each loop
do{
do{
pw.println("\t\t<path d=\"m"+x+" "+y+" v"+l+"\" />");
x += l*(1-magic_frac)/6;
y += l*(1-magic_frac)/2;
l *= magic_frac;
}while(l>min_l);
l = L *= magic_frac;
y = (384-l)/2;
}while(L>min_l);
pw.println("\t</g>");
pw.println("\n</svg>");
fw.close();
}
catch (Exception e){}
}
}