coglabuzh / online-exps

Unleash the full potential of JavaScript and supercharge your web experiments with this library for experimental programming - based on jsPsych - work in progress! 🎯
2 stars 0 forks source link

Functions used to randomly assign stimuli within a circular or rectangular area #25

Open chenyu-psy opened 7 months ago

chenyu-psy commented 7 months ago

Hi Ajit,

This function serves the general functions displayStimuli and displayButtons #21 . It arranges all stimuli randomly in a location without overlapping.

Parameters

For the circle area

  1. stimuli: an array of objects, including all necessary information for displaying, except for location.
  2. centre: an array([x, y]), the centre position of the circle, the default value is the centre of the screen.
  3. radius: a number, the radius of the area
  4. miniDist: a number, the minimum distance between two objects
  5. border: an object, an array of objects, or null. If it is an object, it draws a border for each object according to the properties we have set. If it is an array of objects, it draws a border for each object according to the properties we have set for each one.

For the rectangle area

  1. stimuli: an array of objects, including all necessary information for displaying, except for location.
  2. centre: an array([x, y]), the centre position of the circle, the default value is the centre of the screen.
  3. width: a number, the width of the area
  4. height: a number, the height of the area
  5. miniDist: a number, the minimum distance between two objects
  6. border: an object, an array of objects, or null. If it is an object, it draws a border for each object according to the properties we have set. If it is an array of objects, it draws a border for each object according to the properties we have set for each one.

Details of the parameters and output can be found in the issue https://github.com/coglabuzh/online-exps/issues/22

PS: In this function, we only use the same type of stimuli, and 99% of them are rectangles. It is fine if this function only works for rectangular stimuli.