Sunday, August 23, 2009

Discrete Geometry 3D Viewer

I thought I'd write list of features of my Discrete Geometry Viewer (DGV) program. I wrote this as a request from the New Projects section of the Linux Journal. The goal of DGV is to make visualisation of data as simple as possible (not something VTK is renowned for) while being intuitive and responsive.

In DGV, the image is placed into a 3D scene using OpenGL (via the VTK library), so it uses your graphics card to render the image. U can pan and zoom, adjust the gamma and rotate it. U can save what you're viewing or just export the data/image. U can also view the raw data in table form (may not be as useful to non-scientific users). From the table u can do surface and line plots. U can also add, subtract etc. images using the Operate feature. Finally, one can see the histogram of the image, which tells u statistical info on the image (output into console also).

The main feature of DGV is Filtering and Convolutions via Fast Fourier Transforms. This allows one to see the frequencies present within the image and edit them via the table. One can do crude Low-pass (smoothing), High-pass (edge detection) or band-pass filtering. DGV also features surface and line animations.

Future advancements will include:
- Pixel values within viewer
- Saving animations
- Python Shell rather than simple console output. See my project called QPythonShell which allows one to embed a Python shell into Qt applications.
- More file formats
- More transforms, like the Number Theoretic Transforms (via my new Number Theoretic Transform C library).

Links:
Homepage, Sourceforge, Google Code and Qt Apps.org.

Cheers
Shakes - L3mming

Saturday, August 15, 2009

NTTW - The Number Theoretic Transform Library

I have just released my Number Theoretic Transforms (NTT) C library under GPL v3. I've called it NTTW to match FFTW, a well known Discrete Fourier Transform library. It's functions compute the NTTs using Cooley-Tukey's Fast algorithm. The current release only has dyadic length functions. Prime length functions will be released after I submit a journal paper I've been working on.

NTTW is to be part of a larger library called Finite Transform Library (FTL). You can call it Faster Than Light too. :P This new library will feature other transforms I've been working on in my Ph.D, as well as incorporating FFTW. More news later as I complete papers and libraries.

Cheers
Shakes - L3mming

Thursday, August 6, 2009

XeLaTeX 1,2,3...

I thought I'd explain how to get started with Xelatex as a three step process.

Firstly though..... why Xelatex?
  1. For arbitrary text and maths fonts in your document.
  2. Correct ligatures, kerning and other font features. This is only achieved in Latex using the microtype package, it is the default in Xelatex. See Beauty of Latex article.
  3. Easier to use arbitrary fonts.
  4. Unicode (UTF-8) encoding for special characters like international accents etc.
Step 1: Installing and Using Xelatex
Windows
: Xelatex can be found in Miktex 2.7 or above. Simply download and install Miktex Basic and install the xelatex package from the package manager. If any package is needed later on, Miktex will download and install it for you.
Linux: Install Texlive 2008 or above. Note that all versions of Ubuntu 9.04 and earlier have Texlive 2007. Download the Installer or the ISO file, burn the disc and run the install script ("install-tl"). See Texlive site for more detailed instructions. Go here to use Kile with Ubuntu after installing Texlive 2008.

Step 2: Using Xelatex
Using Xelatex is the same as using Latex. New to Latex? See this all you need guide. Create a new file and insert the following text into it.
%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode
\documentclass[a4paper]{article}

%XeLaTeX packages
\usepackage{xltxtra}
\usepackage{fontspec} %Font package
\usepackage{xunicode}

\title{Your Title}
\author{Your Name}
\date{\today}

\begin{document}

\maketitle

\section{Section Title}
Your text

\subsection{Subsection Title}
Your Text
\end{document}
Save the file with any name. Then using the command line type "xelatex [FileName].tex" where you file is, or in a text editor like SciTE or Texmaker click on the build button. Open and view the PDF file to see the result.

Step 3: Installing and Changing the Font
Changing the font is easy in Xelatex, just add the line "\setmainfont[Mapping=tex-text]{Fontname}" in your preamble (the space before the begin document line) with "Fontname" being the name of the Font. Any font installed on your system is applicable. See my post on Xelatex Thesis Choices for example of using Minion Pro fonts. For instance "Times New Roman" is comon on most systems. Use can see the fonts installed on your system using OpenOffice or any other font application.
Installing a font is easy too. Find and download a font you like (the hard part), see my font survey post to get some free and open ones, and extract if in archive.
Windows Vista: Right click on the TrueType (ttf) file(s) or OpenType (otf) file(s). Then select install. Thats it! To determine the name of the font, either look for it in OpenOffice, Wordpad or MS Office. Or double click to preview and the name is given in the preview.
Ubuntu Linux: Copy the TrueType (ttf) file(s) or OpenType (otf) file(s) to "/usr/share/fonts/opentype". If there is no opentype directory, create it.

That's it... you're good to go. Post any questions below.

Cheers
Shakes - L3mming

Saturday, August 1, 2009

Thesis Font: Baskerville

Having asked the opinions of some of my colleagues and my family (who are now quite sure I'm obsessed about fonts :D ) about the font choices, I have finally made the font choice for my thesis - Baskerville (or its open equivalent, see a sample).

The font has a great history starting from its inception in 1757, which makes it perfect for the type of I'm going for - a Classic font. Wikipedia says:

Baskerville is a transitional serif typeface designed in 1757 by John Baskerville (1706-1775) in Birmingham, England. Baskerville is classified as a transitional typeface, positioned between the old style typefaces of William Caslon, and the modern styles of Giambattista Bodoni and Firmin Didot.

The Baskerville typeface is the result of John Baskerville's intent to improve upon the types of William Caslon. He increased the contrast between thick and thin strokes, making the serifs sharper and more tapered, and shifted the axis of rounded letters to a more vertical position. The curved strokes are more circular in shape, and the characters became more regular. These changes created a greater consistency in size and form.

Baskerville's typeface was the culmination of a larger series of experiments to improve legibility which also included paper making and ink manufacturing. The result was a typeface that reflected Baskerville's ideals of perfection, where he chose simplicity and quiet refinement. His background as a writing master is evident in the distinctive swash tail on the uppercase Q and in the cursive serifs in the Baskerville Italic. The refined feeling of the typeface makes it an excellent choice to convey dignity and tradition.

The open alternatives include Baskervald from ADF Fonts, GFS Baskerville from Greek Font Society (which is Greek only, still good from Physicists/Mathematicians though. Map it to the XeLaTeX Greek fonts), Open Baskerville (UFO Font only.... don't know how to get to Opentype yet) and Boisk Font which is inspired by Baskerville. I will add more as I find them.

Cheers
Shakes - L3mming