Friday, 28 September 2007

Convex Hull

Here is an easy way to compute a convex hull, being given a set of points in Java.
(Check out Graham Scan)

Let's say that we have the set of points defined as follows:


List _pointsList = new LinkedList();


A P2D being:

public class P2D {
private Point2D point2d = new Point2D.Double();
private String id = null;

public P2D(String id, double x, double y) {
this.id = id;
this.point2d.setLocation(x, y);
}
...


The first step is to find the pivot:

private P2D findPivot(List myPointsList) {
P2D pivot = myPointsList.get(0);

for(final P2D p2d : myPointsList) {
if (p2d.getY() < pivot.getY()) {
pivot = p2d;
}
}

return pivot;
}


Then we do the sort:

private void sort(P2D pivot, List myPointsList) {
final GrahamComparator grahamComparator = new GrahamComparator(pivot);
Collections.sort(myPointsList, grahamComparator);
}


The comparator being defined as:

public class GrahamComparator implements Comparator {
private final P2D pivot;

public GrahamComparator(P2D pivot) {
this.pivot = pivot;
}

public int compare(P2D p2d1, P2D p2d2) {
Double tan1 = (p2d1.getX() - pivot.getX()) / (p2d1.getY() - pivot.getY());
Double tan2 = (p2d2.getX() - pivot.getX()) / (p2d2.getY() - pivot.getY());
return tan2.compareTo(tan1);
}
}


And finally, the main algorithm that returns a list of points, the convex hull:

private List graham(List myPointsList) {
if (myPointsList.size() < 2) {
return myPointsList;
}

final LinkedList p2ds = new LinkedList();

p2ds.add(0, myPointsList.get(0)); // Pivot
p2ds.add(1, myPointsList.get(1)); // Second sorted element

for(int i=2; i < myPointsList.size(); i++) {
while(p2ds.size() >= 2 && crossProduct(p2ds.get(p2ds.size()-1), p2ds.get(p2ds.size()-2), myPointsList.get(i)) > 0) {
p2ds.removeLast();
}
p2ds.addLast(myPointsList.get(i));
}
return p2ds;
}


with the cross product defined as:

private double crossProduct(P2D p1, P2D p2, P2D p3) {
final double cp = (p2.getX() - p1.getX())*(p3.getY() - p1.getY()) - (p3.getX() - p1.getX())*(p2.getY() - p1.getY());
return cp;
}


Et voilà!

Friday, 21 September 2007

France-Ireland

Superbe match!
J'etais stresse... mais bon, ca va mieux.

Dimanche prochain, allez l'Irlande! Toute la France sera en vert!

Friday, 7 September 2007

Et merde!

On a perdu le match contre l'Argentine...
Trop de stress les gars... allez... c'est pas fini!

Les cris des animaux

L'abeille bourdonne
L'agneau bêle
L'aigle glatit, trompette
L'alouette grisolle, tirelire, turlutte
L'âne brait
La bécasse croule
La belette belotte
Le bélier blatère
La biche brame, rait, rée
Le bœuf beugle, meugle, mugit
Le bouc chevrote, béguète
La brebis bêle
Le buffle souffle, meugle, mugit
La buse piaule
La caille caquette, carcaille, margote, margaude
Le canard cancane, caquette, nasille
Le cerf brame, rait, rée
Le chacal jappe, aboie
Le chameau blatère
Le chat miaule, feule, ronronne
Le chat-huant hue, chuinte, hulule, ulule
Le cheval hennit, s'ébroue
La chèvre béguète, bêle, chevrote,
Le chevreuil brame, rait, rée
Le chien aboie, jappe, hurle, donne de la voix
La chouette hue, hulule, ulule, chuinte
La cigale craquette, stridule,
La cigogne claquette, craquette, craque
Le cochon grogne, grouine, couine
La colombe roucoule, émit
Le coq chante, coquerique
Le corbeau croasse
La corneille croasse, craille, criaille, graille, babille, corbine
Le crapaud coasse, siffle,
Le crocodile vagit, lamente, pleure
Le cygne trompette... trompette, siffle
Le dindon glougloute, glousse
L'effraie hue, hulule, ulule, chuinte
L'éléphant barrit, barète
L'épervier glapit, piaille
L'étourneau pisote
Le faisan criaille,
Le faon râle
Le faucon réclame
La fauvette zinzinule, fredonne
Le geai cajole, jase, cacarde
Le goéland pleure
La grenouille coasse
Le grillon grésille, crisse, craquette
La grive gingotte
La grue claquette, craquette, glapit, trompette
La guêpe bourdonne
Le hibou hue, hulule, ulule, bouboule, froue, miaule
L'hirondelle gazouille, trisse, stridule
La huppe pupule, pupute,
La hyène hurle
Le jars jargonne, criaille
Le lapin glapit, clapit, couine
Le lièvre vagit, couine
La linotte gazouille
Le lion rugit, grogne
Le loriot siffle
Le loup hurle,
Le merle appelle, flûte, siffle, babille
La mésange zinzinule
Le milan huit
Le moineau piaille, pépie
Le mouton bêle
L'oie cacarde, criaille, siffle
L'orfraie hurle
L'ours grogne, gronde,
La panthère rugit
Le paon criaille, braille,
La perdrix cacabe, glousse, rappelle
Le perroquet jase, cause, parle, piaille, siffle
Le phoque bêle, rugit, grogne
La pintade criaille
Le pivert picasse, peupleute, pleupleute
La pie jacasse, jase, babille
Le pigeon roucoule, caracoule
Le pingouin brait
Le pinson ramage, siffle
La pintade criaille, cacabe
Le porc grogne, couine
La poule caquette, claquette, glousse
Le poussin pépie, piaule, piaille
Le ramier roucoule, caracoule, gémit
Le rat couine
Le renard glapit, jappe, glousse, crie
Le rhinocéros barrit, barète
Le rossignol chante
Le sanglier grommelle, grumelle, nasille, grogne
La sauterelle stridule
Le serpent siffle, souffle
Le singe crie, hurle
La souris chicote, couine
Le taureau meugle, beugle
Le tigre feule, rauque, râle, ronronne, miaule
La tourterelle gémit, roucoule, caracoule
La vache meugle, beugle, mugit
Le zèbre hennit

Tuesday, 4 September 2007

I hate Spring

Spring is like going backward in time… I do not get why people are so excited about writing XML code (instead of writing Java code using Google Guice for example)...
I mean, how fuckin’ readable is a spring config? How insane it can become? How unusable or un-maintainable it can be? All of that because you can change implementation without changing the code? I have got news for you.. this is also a code change, and you will have to go through all your acceptance tests anyway...

I hate Spring.

Blog Archive