the “=” node need a cyclic pin, to check if rotations are (almost) equal. otherwise a rotation of 0.9999 can not be compared to a rotation of 0.0001 and be declared equal.
eno.
the “=” node need a cyclic pin, to check if rotations are (almost) equal. otherwise a rotation of 0.9999 can not be compared to a rotation of 0.0001 and be declared equal.
eno.
hi eno, to do this with current version, you have to transform the values into a cyclic space with circular spread or another sine or cosine function, then compare the ouput of the function with = …
CyclicCompare.v4p (5.1 kB)
sorrily there is an error in this patch: e.g. 0.5 = 0.
and i believe the circularspread is not the right metaphor for this problem, because it translates one real number into a point in two dimensional space.
however we don’t need to compare the positions of two points on a circle, we just need to compare the two angles (with 360°=0°).
since in vvvv angles go from 0 to 1, i would rather use two frac nodes and compare the real parts of the two rotations.
if you want to bring values into cyclic spaces other than [0…1[ , you might use mod nodes instead of the frac. then you can enter the modulus or size of one cycle…
maybe we just need another operator node like ≡, where ≡ means congruent with respect to the modulus.
(or this cyclic pin could be invisible at first. hm. possible)
have fun!
gregsn
math:
http://mathworld.wolfram.com/Congruence.html
http://en.wikipedia.org/wiki/Modular_arithmetic
http://de.wikipedia.org/wiki/Kongruenz_%28Zahlentheorie%29
http://de.wikipedia.org/wiki/Modulo_%28Rest%29
ok, i c…
but modular arithmetic cant help here because its not a continous function…
so you have to compare both outputs of the CircularSpread:
CyclicCompareFixed.v4p (9.5 kB)
tank you tonfilm,
this kind of works … although its still not a very elegant way of detecting, if a point comes close to a second one on a sphere surface.
and some points can be reached with different combinations of rotations. but it limits the collissions a bit.
and gregor, i didnt get your ide comparing angles. you just transfer the problem to a different spot …
thanks anyways, guys,
eno.
in 3d case, replace CircularSpread with Cartesian(3d)…
jetzt hab ichs schon zweimal geschrieben. so ein schmarrn. irgendwie funktioniert das posten nicht. arggh
hi! soooorry, yes i missed this epsilon issue.
posted two other solutions for initial problem. (cyclic =)
however if you want to compare distances of 2 points on a sphere it is better to measure distance in 3d, because longitude degrees are appoaching at hte poles and because of this a comparison of longitude angles will always behave different depending on their latidude.
however making use of quaternions could be another solution.
cyclicEQ.v4p (15.0 kB)