Hi !
Hello, my name is Lode Hoste and I am a computer science student at the Vrije Universiteit Brussel (Belgium).
You can find out more about me here.
Feel free to check out some projects in which I was involved!
Master Thesis: Aligning Programming Paradigms with the Multi-Touch Revolution (work in progress)
(defrule Drag
(declare (salience 5))
?eventList[] <- (setof Cursor (same: tuioId) (tWithin: 500)
(min: 2) (retract: all_but_one))
?image <- (Image)
(test (inside ?eventList[0].x ?eventList[0].y
?image.x ?image.y ?image.width ?image.height))
(not
(and (Cursor (x ?x) (y ?y) {(tuioId <> ?eventList[0].tuioId)})
(test (inside ?x ?y ?image.x ?image.y ?image.width ?image.height))))
=>
(printout t "drag detected!")
(assert (Drag (events ?eventList[]) (image ?image))))
(defrule DoubleTap
(declare (salience 6))
?a1 <- (Tap (tuio_id ?aId) (objectFact ?cId))
?a2 <- (Tap (tuio_id ?aId) (objectFact ?cId) {on < (+ ?a1.time 1200)})
(test (approxEqualDistance ?a1.x ?a1.y ?a2.x ?a2.y))
=>
(printout t "DoubleTap" crlf)
(retract ?a1)
(retract ?a2)
(assert (DoubleTap (id ?a1.UID) (tuioId ?aId)
(x ?a1.x) (y ?a1.y) (on ?a2.time)
(objectFact ?cId))))
(defrule CircleMerge
(declare (salience 7))
?a1 <- (Gesture (type "CircleCW"))
?a2 <- (Gesture (type "CircleCCW"))
?c1 <- (Image)
?c2 <- (Image)
(test (approxEqualTime ?a1.time ?a2.time))
(test (< ?a1.xl ?a2.xl))
(test (inside ?a1.xl ?a1.yl ?c1.x ?c1.y ?c1.w ?c1.h))
(test (inside ?a2.xl ?a2.yl ?c2.x ?c2.y ?c2.w ?c2.h))
=>
(printout t "CircleMerge (" ?a1.xl ", "?a1.yl")
("?c1.x ","?c1.y ")" crlf)
(retract ?a1)
(retract ?a2)
(?c1.OBJECT merge ?c2.OBJECT))
Older engine and syntax:
(defrule myTap
(declare (salience 100))
(SetOf
(TUIO_Event ?fingerID,_,_,Within: 300),
?eventList),
?eventList[0].state == BIRTH,
(isListOf ?eventList[1..-2].state, MOVE),
?eventList[-1].state == DEATH,
(veryNearPosition ?eventList)
=>
(assert (Tap ?fingerID, ?eventList[0].position, ?eventList[-1].time)))
% Tap event with: fingerID, position and time
(defrule myDoubleTap
(declare (salience 110))
% Higher priority than Tap, which means the behaviour of
% http://msdn.microsoft.com/en-us/library/ms171543%28VS.80%29.aspx
% in 1 line
(Tap ?fingerID, ?position1, ?time1)
(Tap ?fingerID, ?position2, ?time2)
% one ?fingerID variable, which means it should be the same finger.
(< (- ?time2 ?time1) 550)
% 550 milliseconds as default double tap (or double click) timeout
(veryNearPosition ?position1 ?position2)
=>
(assert (DoubleTap ?fingerID, ?position1, ?time2)))
% DoubleTap event with: fingerID, position and time
(defrule myCircleDrag
(declare (salience 80))
(SetOf
(TUIO_Event ?fingerID,_,_,Within: 200),
?eventList),
(isListOf ?eventList[1..-2].state, MOVE),
% We ignore the state of event[0] and event[-1] as it is allowed to be
% a BIRTH (New Drag), MOVE (Drag was matched before) or
% DEATH (will be filtered out as event[1] will not a a move)
% This allows us to have multiple "drags" without the user notices it,
% as it will be observed as one smooth gesture.
(Circle ?circleID, ?circlePosition, ?circleRadius)
% Circle as a fact in the database. This provides a clean symbiosis
% between the GUI elements and the Gestures
(< (distance ?eventList[0].position ?circlePosition)
?circleRadius)
=>
(assert (Drag ?fingerID, ?circleID,
?eventList[0].position,
?eventList[-1].position)))
Finished projects page updated!
I was unable to keep up the website with the high pace of projects I started. But I finally managed to get everything up to date again. The new public projects are: IG3Tool, MpgX-Gnome-Applet, SunSpot Gesture Recognition, MpgX-G1, AmbientTalk for Android, Speech notifier for Android and the Stantum-TUIO-bridge.
New finished projects.
I've added some new finished projects: you can find a Publication Management System, IG-Airlines 2, Slot Racers, RapidRuby (RapidShare client) and more!
Current Projects updated.
I've updated the current projects I'm working on. The Airlines project will soon be finished and I'll release it under the GPLv3 license.
Downloads available.
Hello, today I added some projects that I made. I released them under GPLv3 and made a public git repository. Although I don't think I will update the 2 uploaded projects (The Traffic Simulation and the Gameboy Emulator) in the future. I just like to be consistent ;-) Have fun!
Added some extra's
I published a home-made version of pastebin on my website (it's useful when you want to put some text online, you can even password it!). There are also a lot of TFC movies available. I collected them when I was a passionate gamer, but that's some years ago now... oh well. I also added some other information about myself.