Problem with the Monitor size

Hi !
I am trying to set up an eye-tracker and get the position of the eye on the screen and draw targets.
As I work in degrees, in order to do that, I use a Monitor object.

My issue : I don’t understand why this class have a parameter “width” but not “height” !

After some code research, I have understand that we use the screen resolution/physycal width as ratio in function as pix2deg(). But this suppose that all pixels are square, which is not the case sometimes.

Have I wrong in my understanding ?


The purpose of screen width is to figure out the ratio between a pixel and a cm, we don’t currently account for non-square pixels (so far as I know) but we may be able to add this in future! At present though we assume a constant, single-value ratio between cm and pix (and therefore between deg and pix).

Using the new eyetracker components in Builder, you should be able to get eyetracker output in PsychoPy units thanks to ioHub - what units are you getting them in currently?

The units get by the eyetracker is in pixel. The units I used in order to draw stimulus and target on my windows are degree.

But I have 2 problems :
1 - when I convert using psychopy function pix2deg. The deg (0,0) is for the position (0,0) on the screen (top-left) …which is not really good to me, because when I draw something in coord (0,0) on the windows, this matchs the center of the screen.
Anyways, I have creating my own function in order to correctly convert my pixels in deg. ( - , - ) at the top-left , (+ , + ) at the bottom-right.

2 - For a reason I don’t know. When I record with the eyetracker gaze at the 4 corners, this is not linear (something link rotated). For exemple, the center is good, but the x coord beetween top-left corner and bottom-left corner is different (same for top-right , bottom-right, ect…)
It is my currently problem.