adjacent objects

Roger Guay irog at mac.com
Sun Dec 6 21:27:55 EST 2015


Coincidently, I am facing the same problem as I too am trying to recreate Boids in LC. However, I’m confining myself to 2D, thinking I need to learn to walk before I can fly like the Boids!

How about this: create a graphic “Region” that corresponds to your desired size/region of adjacency, and set it’s blend level to 100. Then simply set the loc of grc 
 region to loc of grc “A” and check for Intersection(grc “region”, theOtherGraphics).

That should work!! 

BTW Walt, what is the muckingabout stack? Is that something I should know about?

Roger





> On Dec 6, 2015, at 10:44 AM, Walt Brown <walter.h.brown at gmail.com> wrote:
> 
> Richmond,
> I was trying to recreate "Boids" (but got distracted playing with the
> muckingabout stack at the same time, more on that later :-).
> 
> I had each object post their position to a global list of objects when they
> stopped moving (or when a new recalculation cycle is declared). Then each
> object had it's own script to look at that list during next-move planning
> and determine nearest neighbors. I compared the shortcut of just averaging
> the XYZ differences but found getting the actual XYZ distance (the root of
> the sum of the squares) took close to the same time for the number of
> objects I was estimating. I used layer difference (multiplied by a suitable
> factor to get in the same scale as the screen XY) as the Z distance to
> emulate 3D. I created a parameter called MinDistance, and if the distance
> was less than that, declared a collision (In boids, MinDistance is
> variable, depending on if the collision was inter or intra species or
> static objects). Each object then incorporated that fact in it's next plan
> - typically going in a vector somewhat opposite of the collision point,
> after disassembling the 3D diagonal vector into XY screen coordinates and
> speed, and a Z emulation using layer changes.
> 
> If you wanted orthogonal adjacency (as in the muckingabout stack), you
> could compare the position difference against the objects' sizes on each
> axis. If they are equal, the objects are adjacent. Adjacency would have XY
> differences of either 0,object height or object width,0.
> 
> Or you could fill a global XY array (ie a set of lines of lists, which is
> what I am adding to muckingabout) which stores what (ie a tile) is at each
> location (square) in the grid (along with rotational data) and each object
> can query and update that list. In muckingabout, I am thinking of naming
> each square their XY location, so a tile can query specific squares without
> loops.
> Walter
> 
> 
> On Sun, Dec 6, 2015 at 10:12 AM, Richmond <richmondmathewson at gmail.com>
> wrote:
> 
>> I am aware that objects/controls are on different layers on a LiveCode
>> card,
>> but the end-users looking at a 2-dimensional screen they are all,
>> apparently,
>> on a flat surface.
>> 
>> Has anyone any idea how a script within the mouseUp of one control could
>> detect the presence of "adjacent" controls on the same card, and,
>> subsequently,
>> read properties from those adjacent controls?
>> 
>> This would seem to be mission-critical for games.
>> 
>> The 'problem' is that adjacent controls cannot be detected by INTERSECT
>> because they don't . . . intersect.
>> 
>> Richmond.
>> 
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode




More information about the Use-livecode mailing list