Changing visual angle on Pavlovia for many different monitors

Hi all,

I’ve seen some posts relating to this but can’t find a super clear answer. I’m trying to change the size of my stimuli on Pavlovia using the visual angle option of ImageStim, specifically the ‘deg’ units. I notice that it requires a monitor to be set up in the Monitor Centre in order to use this option. However, on Pavlovia, I will be having participants running the experiment from their own computers and thus the monitor will be changing. Is there a way to get their monitor size and change the visual angle from browser for each participant?

Thanks

You can’t use deg units online.

The only way (I believe) to get the size of the users monitor is to ask them, for example by resizing a credit card. You can use my experiment if you like.

Haven’t done this with PsychoPy/PsychoJS, but we have a few experiments written in jsPsych that implement a user calibration process to get visual angle when screen size is unknown. The basic process is the credit card trick mentioned by another commenter:

  1. User is sitting in front of their monitor.
  2. User holds a credit card 11" away in front of their face.
  3. A resizable rectangle is presented on screen.
  4. User resizes the rectangle to ‘wrap’ (perceptually) around the credit card. Press key to lock in.
  5. Repeat 1-4 a handful of times. Check to make sure no attempts deviate wildly from others.
  6. A credit card 11" away is ~17.5º (can’t remember exact number). Take the mean size of the resized rectangle in pixels, divide that by 17.5 to get pixels per degree.

With jsPsych we found the simplest way to implement this was to define an initial (arbitrary) value for pixels per deg. Once the actual value is known, divide that by the initial value and rescale using CSS.
i.e.,
scale_factor = resized / initial;
head {transform: scale(scale_factor);}

What I like most about this process is that it doesn’t require you to know users’ display size, or their viewing distance. All that matters is that the card is held some known distance away. 11" is convenient because users’ can roll up a sheet of standard paper as a ‘ruler’, which hopefully everyone has access too. We haven’t collected enough pilot data to sufficiently convince us that user error isn’t an issue, but so far the numbers we do have are pretty fracking accurate if you ask me (+/-7% margin of error so far, which works out to be ~5px).

Sorry for the rant. Still developing this process so I like talking about it.

I think you could use my code to do this simply by changing the instructions.

In the USA maybe, but most of the rest of the world uses A4 paper, which is about 7% longer than this “standard” US letter size.

What link are you trying? Please could you show a screenshot of the error?