.

Dr. Arno Formella, Computer Science Department

Open Source Code



C/C++

Point Set Alignment

Implementation of the Kabsch algorithm (based on the library GSL) as published in: W. Kabsch, A solution for the best rotation to relate two sets of vectors, Acta Cryst. (1976), A32, 922-923 and W. Kabsch, A discussion of the solution for the best rotation to relate two sets of vectors, Acta Cryst. (1978), A34, 827-828. , which computes the optimal rigid-body transformation to align two three-dimensional point sets. The algorithm is an extension of the work of Kabsch, because besides the translation and rotation the optimal scaling is computed as well.

kabsch.h
kabsch.cpp

The following files contain a version of the algorithm for bidimensional points.

kabsch2d.h
kabsch2d.cpp

There is another iterative algorithm available which computes the (locally) optimal rigid motion transformation (including scaling) allowing arbitrary functions for the distance measure, e.g., average distance, or maximum distance (note Kabsch only works with RMS).

The algorithm implements a new derivative-free minimization algorithm for non-smooth functions based on the work Ubaldo García-Palomares and José Rodríguez, New sequential and parallel derivative-free algorithms for constrained optimization, SIAM Journal on Optimization, 13(1):79-96, April, 2002 :

the base class: optimize.h
the algorithm class: dfmpr.h
the template implementations: dfmpr.cc
example application: opt.cpp
compile with

g++ opt.cpp


Area of intersection between a circle (disk) and a rectangle

cir_rect.h
cir_rect.cpp


Java

JabRef 2.1.1

The jar-file [3.4MB] implements an extension of the JabRef reference manager (version 2.1, August 9th, 2006). This new version (source code [2.6MB]) permits the inclusion of names of directories as items in the BibTeX-file; their content can be inspected conveniently with appropriate applications. (This in an unofficial version extension of JabRef.)

Implementation of a Concurrent List

The package [38k] implements a concurrent list where several threads can manipulate the list simultaneously. Almost all operations of a normal linked list are available.







© Arno Formella, last update: October 13, 2006

e-mail: formella@uvigo.es