Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com), Millisecond
Created: January 26, 2024
Last Modified: January 10, 2025 by K. Borchert (katjab@millisecond.com), Millisecond
Script Copyright © Millisecond Software, LLC
This script implements Millisecond's version of a computerized Visual Illusion Simulator (VIS) inspired by Bednarek et al (2024).
The script provides the functionality to run several visual illusion tasks: - Ebbinghaus Visual Illusion (opticalillusion_ebbinghaus.iqjs) - Delboeuf Visual Illusion (opticalillusion_delboeuf.iqjs) - Mueller-Lyer Visual Illusion (opticalillusion_muellerlyer.iqjs) - Ponzo Visual Illusion (opticalillusion_ponzos.iqjs) - Poggendorff Visual Illusion (opticalillusion_poggendorff.iqjs) - T-Illusion (opticalillusion_tillusion.iqjs) - Horizontal-Vertical Illusion (opticalillusion_horizontalvertical.iqjs) - Zoellner Visual Illusion (opticalillusion_zoellner.iqjs) (the individual tasks can be fine-tuned via changes in their respective scripts)
Due to the fact that screens vary wildly in absolute sizes and pixel sizes, this script provides the functionality to run the illusion tasks with absolute sizing. The default setup uses proportional sizing. See section default for more info.
Bednarek, H., Przedniczek, M., Wujcik, R., Olszewska, J. M., & Orzechowski, J. (2024). Cognitive training based on human-computer interaction and susceptibility to visual illusions. Reduction of the Ponzo effect through working memory training. International Journal of Human-Computer Studies, 184, 103226-. https://doi.org/10.1016/j.ijhcs.2024.103226
1 minutes
-> code to fine-tune this task can be found here: opticalillusion_ebbinghaus.iqjs
-> code to fine-tune this task can be found here: opticalillusion_delboeuf.iqjs
-> code to fine-tune this task can be found here: opticalillusion_muellerlyer.iqjs
-> code to fine-tune this task can be found here: opticalillusion_ponzo.iqjs
-> code for this task can be found here: opticalillusion_poggendorff.iqjs
-> code for this task can be found here: opticalillusion_tillusion.iqjs
-> code for this task can be found here: opticalillusion_horizontalvertical.iqjs
In between and on top and bottom of the two baselines, there are three TARGET lines. The Target lines are crossed with short, repeating lines that are orthogonal to the crossing lines of the baselines. The target lines are parallel to each other BUT are NOT parallel to the baselines. The task is to match the rotation of the TARGET lines to the rotation of the BASELINE lines (aka make all lines parallel) via "RIGHT arrow key" and "Left arrow key" buttons. Once the rotation angles are matched, participants are asked to press the [ENTER] key.
By default, the script runs the following illusion in random order:
- Ebbinghaus Visual Illusion
- Delboeuf Visual Illusion
- Mueller-Lyer Visual Illusion
- Ponzo Visual Illusion
- Poggendorff Visual Illusion
- T-Illusion
- Horizontal-Vertical Visual Illusion
- Zoellner Visual Illusion
IMPORTANT each illusion task can be skipped via Editable Parameters settings.
provided by Millisecond - can be edited under section 'Editable Stimuli'
provided by Millisecond - can be edited under section 'Editable Instructions'
File Name: opticalillusion_summary*.iqdat
| Name | Description |
|---|---|
| inquisit.version | Inquisit version number |
| computer.platform | Device platform: win | mac |ios | android |
| computer.touch | 0 = device has no touchscreen capabilities; 1 = device has touchscreen capabilities |
| computer.hasKeyboard | 0 = no external keyboard detected; 1 = external keyboard detected |
| startDate | Date the session was run |
| startTime | Time the session was run |
| subjectId | Participant ID |
| groupId | Group number |
| sessionId | Session number |
| elapsedTime | Session duration in ms |
| completed | 0 = Test was not completed 1 = Test was completed |
Summary Data For Individual Visual Illusions (Example: Ebbinghaus Illusion) |
|
| runEbbinghausIllusion | Parameter setting true (1) = The script ran the Ebbinghaus Illusion Task false (0) = The script skipped the Ebbinghaus Illusion Task |
| roundCounterEbbinghausIllusion | The rounds run for the Ebbinghaus Illusion Task |
| meanEbbinghausError | The mean error across all trials run |
| stdEbbinghausError | The standard deviation of the propErrors across all trials run |
File Name: opticalillusion_raw*.iqdat
| Name | Description |
|---|---|
| build | Inquisit version number |
| computer.platform | Device platform: win | mac |ios | android |
| computer.touch | 0 = device has no touchscreen capabilities; 1 = device has touchscreen capabilities |
| computer.hasKeyboard | 0 = no external keyboard detected; 1 = external keyboard detected |
| date | Date the session was run |
| time | Time the session was run |
| subject | Participant ID |
| group | Group number |
| session | Session number |
| blockcode | The name the current block (built-in Inquisit variable) |
| blocknum | The number of the current block (built-in Inquisit variable) |
| trialcode | The name of the currently recorded trial (built-in Inquisit variable) |
| trialnum | The number of the currently recorded trial (built-in Inquisit variable) trialnum is a built-in Inquisit variable; it counts all trials run even those that do not store data to the data file. |
| response | The response of participant during current trial |
| correct | Correctness of response (1 = correct, 0 = error) |
| latency | Response latency (in ms) |
Custom Variables |
|
| illusion | The name of the current illusion task |
| stepSizeInPX | The step size adjustment in screen pixels |
| roundCounter | Tracks the rounds run for the current illusion task |
| baselineSizeInMM | The BASELINE size (radius, length etc) in canvas mm (nature of baseline depends on task run) |
| baselineSizeInPX | The BASELINE size (radius, length etc) in canvas pixels (nature of baseline depends on task run) for Zoellner Illusion Zoellner "Sizes" are rotation angles of the baselines |
| targetStartSizeInMM | The start TARGET size (radius, length etc) in canvas mm at beginning of round (nature of target depends on task run) |
| targetStartSizeInPX | The start TARGET size (radius, length etc) in canvas pixels at beginning of round (nature of target depends on task run) |
| targetSizeInPX | The current TARGET size (radius, length etc) in canvas pixels for Zoellner Illusion Zoellner "Sizes" are rotation angles of the target lines |
| error | Sets the TARGET size (in px) relative to BASELINE size (in px) - error Prop < 1 the size was underestimated - error Prop > 1 the size overestimated for Zoellner Illusion error is the simple absolute DIFFERENCE in rotation angles of the Baselines and the Target lines |
The procedure can be adjusted by setting the following parameters.
| Name | Description | Default |
|---|---|---|
Color Parameter |
||
| canvasColor | Display color of the actively used portion of the screen (the 'canvas') if set to a color other than the screenColor, the active canvas appears 'anchored' on the screen regardless of monitor size | white |
| screenColor | Color of the screen not used by the canvas ('inactive screen') | white |
| defaultTextColor | Default color of text items presented on active canvas | black |
Design |
||
| stepSizeInPX | Sets the adjusting stepsize in pixels all baseline/target sizes and values are calculated in rounded screen pixels | 1 |
| runFixedStartSizesOfTargets | True = start sizes of targets will be fixed you have to set the start sizes within the individual illusion scripts false = start sizes are determined randomly using the boundary parameters specified in each illusion script | true |
| numberOfRoundsPerIllusion | Number of rounds to run per Illusion task You can set the specific values for each trial in each of the individual illusion scripts | 2 |
| runEbbinghausIllusion | True = The script runs the Ebbinghaus Illusion task individual settings for this task can be changed in script file "opticalillusion_ebbinghaus_inc.iqjs" false = The script skips the Ebbinghaus Illusion task | true |
| runDelboeufIllusion | True = The script runs the Delboeuf Illusion task individual settings for this task can be changed in script file "opticalillusion_delboeuf_inc.iqjs" false = The script skips the Delboeuf Illusion task | true |
| runMuellerlyerIllusion | True = The script runs the Muellerlyer Illusion task individual settings for this task can be changed in script file "opticalillusion_muellerlyer_inc.iqjs" false = The script skips the Muellerlyer Illusion task | true |
| runPonzoIllusion | True = The script runs the Ponzo Illusion task individual settings for this task can be changed in script file "opticalillusion_ponzo_inc.iqjs" false = The script skips the Ponzo Illusion task | true |
| runPoggendorffIllusion | True = The script runs the Poggendorff Illusion task individual settings for this task can be changed in script file "opticalillusion_poggendorff_inc.iqjs" false = The script skips the Poggendorff Illusion task | true |
| runTilIllusion | True = The script runs the T-Illusion task individual settings for this task can be changed in script file "opticalillusion_tillusion_inc.iqjs" false = The script skips the T-Illusion task | true |
| runHorizontalVerticalIllusion | True = The script runs the HorizontalVertical-Illusion task individual settings for this task can be changed in script file "opticalillusion_horizontalvertical_inc.iqjs" false = The script skips the HorizontalVertical-Illusion task | true |
| runZoellnerIllusion | True = The script runs the Zoellner Illusion task individual settings for this task can be changed in script file "opticalillusion_zoellner_inc.iqjs" false = The script skips the Zoellner Illusion task | true |
Timing Parameters |
||
| itiMS | The intertrial interval in ms (= duration of blank canvas in between rounds) | 500 |
| automaticAdjustmentIntervalMS | The duration (in ms) of the automatic adjustment interval if a finger does not lift off the arrow keys | 150 |
| responseKeyReminderDelayMS | The delay which which the responseKeyReminder is provided if no response is detected | 10000 |