# Tabulamaps

hey folks,

is anybody abled to tell me how naturalinteraction.org made theire tabulamaps? i mad a blobtracking myslf and tryed to integrate some quads to move em around and transform. but nothing works!! every blob results in an own quad wich causes hundrets of quads… i ran out of ideas, pleas help!!!

You can use intersect (3D quad line) to figure out if your finger is on the quad. Than, you need to figure out how much the finger moves, relative, in X-Y space, and hook that to the relative value off X and Y from the transform. Read this about relative

The trick offcours, is to use intersect to decide what quad we are working with, and only change the slice off the spread we are working with… than again… should this also aply for zooming?

Saw moving the map is one finger, scaling it was two finger?

So the scale is the relative distance between 2 vingers, moving 2 fingers closer will be zooming-out, and moving 2 fingers further away results in zooming out. (again, relative, and use the Scal-X and Scale-Y pins…)

Youre entire patch is prety hard to make, for a beginner that is ;), but just try and ask.

thanks a lot…

oh my gosh - sounds like a weekend without sleep ;-)
my first intention was to make something like moving, zooming AND rotating quads with two fingers at the same time (like if the quad got sticky ;-) ) but i think i will limit my patch to zooming (two finers) and moving (one finger)…

I am by far an expert on the subject ;)

But you need to first set your plans in plain english (or where ever you are from), you know, the steps it needs to do , that makes patching it a whole lot easier.

Also, please, register here, so we can relate other q’s you might have.

edit: I think Rotating with the same two fingers as scaling can work, yeh, prety positive about that, when I am thinking about it.

scaling and rotating: theres a node that does everything for you - points2vector. check the attached patch.

points2vector.v4p (5.1 kB)

allrighty then…

im registered by now. thanks for the points2vector example. so the combination of my path and the points to vector thing has to pass an ID check like: “well, you both points are over one quad so bloody hell get together and make a chanche” ore something like that… well i will lock myself to the closet and think about it…

yeeeha

well, i dont get it.
the intersect modul is driving me mad because th combination with the quad, transform and now the points2vector module is a little bit confusing. and how the BEEP do i get the x and y´s dumpt to keep the status of the quad when no finger is on it. it still generates an quad for every xy i got from the contour module (Freeframe by the way)

Im not sure if intersect is able to detect multiple intersections. i mean like in your example having a few buttons and more than one mousepointer. anyone who knows intersect better can explain?

to detect multiple intersections you have to cross the inputs. for example with 4 quads and two lines the slices would be:

1 | 1|
2 | 1|
3 | 1|
4 | 1|
1 | 2|
2 | 2|
3 | 2|
4 | 2||

hm ok… is there a way to cross transforms? or better go with the select (node.v4p)?

this is my testpatch…

intersect experiment.v4p (22.8 kB)

i would do it like this:

intersect experiment getslice.v4p (25.0 kB)

intersect is completely cool especially for 3d spaces. if you are talking about something like moving square objects on a 2d-plane (like in all these nice multitouch photo-sorting youtube videos), it might be easier to use the Inverse node and ApplyTransform to map your touch coordinates back into quad-local coordinates.

connect the Transform leading to the Quad to the right input of the Inverse
connect the output of the Inverse into ApplyTransform
connect your touch coordinates to ApplyTransform
get the final coordinates from ApplyTransform
if they are within ±0.5 from 0, you are in the quad, otherwise you are outside the quad and can ignore it.

the coordinates you will get can be fed into a feedback loop modifying the coordinates of the quad. i agree this can be tricky.

@emeier: iirc a Cross (Transform) is still on the wishlist, but you can do a Module with SetMatrix GetMatrix doing the same

@All, The method Oschatz mentioned is used in Woei’s GUI_Elements.

Thanx for eplaining that part Tonfilm, very helpfull. Now a way to S+H the fingers… hehe… need to build a TFIR screen first ;)

heres a patch demonstrating oschatzs method with inverse…
this is just for one mousepointer, you have to repeat the spreacounts here as well to detect multiple collisions…

intersect experiment_Inverse.v4p (11.7 kB)

thats just a repatch of the code of the Intersect (Quad Line) node. the Intersect node should be faster, because all math is done at once.

intersect experiment_Inverse_2.v4p (15.0 kB)

yeeha,

back again, ande no solution at all… i ran out of ideas! So maybe my project gonna dies… Adios and keep 4v going!

Basti