Geometric-Optic Displays

The application geo is a program that shows geometric displays. Each display contains one or two geometric figures and the subject's task is to select one of them, to give a binary judgement about a single figure according to a certain criterion, or to adjust one component of the figure. This application may be used to investigate geometric-optical illusions. The following display types are currently available:

Program Features

The general schema for geo is to put a display on the screen and then collect a response. If there are two figures in a single display the response will usually refer to one of the two figures as being selected by the subject. Most displays contain two figures, one on the left and one on the right or one on the top and one on the bottom. The subject's task is to select one of the two figures by pressing either the left/down arrow or the right/up arrow. Adaptive procedures are possible and any part of a figure may be the adaptive variable. There also is an adjustment method where the target variable is adjusted on line by the subject.

There is one important detail in the implementation of geo. This concerns the experimental variables. The parameters that describe the figures have different meanings for different figure types. Thus the program itself does not use meaningful names for the experimental variables. The names of the variables are defined in the file geo.h by using PXL's macro facility. The following section describes the experimental variables and uses the names defined in geo.h not those in the programs's source code. Note that the data files do not contain macro names such that the variable names in the data files are different from those in the parameter files. The corresponding names may be found by looking at the header sections of the parameter files where the local names are defined.


The available figure types are listed in the previous section. They are selected by setting the parameter figuretype accordingly. Figures are drawn as lines, some implementations of PXL allow variable line thicknesses for the figures. The figures are shown within a background field which is either an elliptic or a rectangular field of width fieldwidth and height fieldheight with its color defined by bgcolx, bgcoly, and bglum. The figure color coordinates are given by color1x, color1y, color1L, color2x, color2y, and color2L. The figures may be rotated and their exact screen position may be randomized.


Responses usually are binary responses of a left/right type. On a keyboard the response keys are the left and right arrow keys. The left and right buttons are used on a mouse or any other switch device. For adjustment procedures the response keys are defined by the integer array keys. It contains up to 5 entries: The stop-key, slow down and up keys, and fast down and up keys.

Program Parameters

General Parameters

For pair comparisons we have two figures in a single display. Each figure needs its own parameters. If there are two parameters that have the same meaning but relate to the first and second part of a display, then their names are indexed by 1 and 2 to indicate what part of the display they belong to.

addelay (int)
Delay parameter for adjustment procedures. Increasing the value of addelay slows down the adjustment speed.

advarindex (int)
geo by default assumes that the first display variable is the independent variable that has to be modified by adaptive designs. If this should be changed then one has to set advarindex to the index of the trial variable that is used as an independent variable. Note that trial variable indices start with 0.

bgcolx , bgcoly , bglum (float)
Color coordinates of the screen background color.

centerx1 , centery1 , centerx2 , centery2 (int)
These define the screen coordinates of a figure's center. centerx1 is the x-coordinate and centery1 is the y-coordinate. The center of a figure is defined as the arithmetic mean of its extreme points.

color1x , color1y , color1L , color2x , color2y , color2L (float)
Color coordinates of figure lines.

fieldheight , fieldwidth (int)
Height and width of the background filed.

figuretype (int)
Type of figure to be used. Currently figuretype may be given the following values

Areal figures with various forms.






MUELLER (2)\_LYER2 (2)



This is a perspective projection of a wire cube.

T (0)\_FIGURE (0)

flags (string)

Use an adjustment method instead of a binary response method.

Use a circular (elliptical) background field instead of a rectangular field.

If this flag is set then no real data are collected, but a simulation is run. In this case the responses are collected from a random generator that simulates a logistic psychometric functions with the parameters pse and jnd.

jnd , pse (float)
Parameters of a logistic psychometric functions for response simulation runs. jnd is the just noticeable difference and pse is the point of subjective equality. Simulations are initiated by setting the flag S.

keys (int)
Response key array for adjustment procedures. keys contains up to 5 entries: The first one is the stop-key indicating that adjustment is done. The 2nd and 3rd entry are keys to respectively reduce or increase the variable parameter value. The 4th and 5th keys, if present, also respectively reduce or increase the parameter but do that by larger steps as the 2nd and 3rd key. The entries of keys are the key numbers of the respective keys. Thus for the keyboard this are the respective ASCII codes.

posxrange , posyrange (int)
Range of x and y coordinates that is available for random positioning of the figures. If these values are nonzero then the positions of the figures are randomized. The coordinates are distributed even within the given range around the given center position.

result (float)
Result of an adaptive procedure.

stddev (float)
Estimated standard deviation of result.

rotation1 , rotation2 (int)
The rotation of a figure. The base position corresponds to a rotation of 0. Note that the rotation has to be specified in 1/10 degree counterclockwise and that some figures only allow rotation values of 0, 900, 1800, and 2700.
thickness (int)
Thickness of the lines used to draw the figures. Note, however, that not all implementations of PXL support lines of variable thickness (currently only the 256 color modes allow thickness control).

vstep (int)
Step size for adjustment procedures.

Insert Figure arf here.

Shape and Area Comparisons

The parameter file arf.x defines an experiment for pair comparisons of areal figures. Three types of shapes are available: rectangles, ellipses, and triangles. Each figure may either be outlined or filled. Each figure has two size parameters: the first parameter is the figure's area, the second parameter is the ratio of vertical to horizontal extent. Thus for rectangular shapes the two parameters of a single figure are the figure's area and the ratio of the vertical to the horizontal side. The same is true for elliptical figures, where the form parameter is the ratio of the vertical and the horizontal axis. For triangular shapes the ratio is given by the triangle's height and its base line. The area comparison version of geo may be used to rerun the experiment published by Tversky (1969).

area1 , area2 (int)
Area of figure given in square millimeter (program parameter names: a and e).

fill1 , fill2 (int)
Filling status of the figure. If ON then the figure is filled with the respective figure color. If the status is OFFthen the figure is only outlined (program parameter names: d and h).

form1 , form2 (int)
Form of figure (program parameter names: b and f). These values are available:







ratio1 , ratio2 (float)
Ratio of horizontal to vertical extent of figure (program parameter names: r and s).

Insert Figure bal here.

Insert Figure bal2 here.

The Baldwin Figure

There are two possible displays of the Baldwin figure. One is a single figure and the second one are two figures simultanously. The parameters for the latter case have the respective number suffix. The single figure display may have squares of different size while the squares on each single figure of the double figure version are equal. The two figures, however, may have different squares. In the single figure there may be a mark dividing the center line.

baseline , baseline1 , baseline2 (int)
Length of center line (program parameter names: a, a, and c).

fill1 , fill2 (int)
If nonzero then the respective square is filled otherwise it is only an outline square (program parameter names: e and f).

markratio (int)
This is the ratio by which the mark on the center line of the single figure version divides the center line (program parameter name: r).

marksize (int)
Size of the mark for dividing the center line of the single figure version (program parameter name: d).

noline (int)
If this parameter is nonzero then no center line is drawn (program parameter name: g).

square1 , square2 (int)
Size of the squares (program parameter names: b and c in the single figure version and b and d in the double figure version).

The Delboeuf Figure

inner1 , inner2 (int)
Radius values of inner rings (program parameter names: a and b).

outer1 , outer2 (int)
Radius values of outer rings (program parameter names: c and d).

Insert Figure dli here.

The Divided-Line Figure

The Divided-Line figure shows two lines where each is divided into 3 sections by two small marks. The apparent length of the center part strongly depends on the lengths of the outer segments.

left1 , left2 (int)
Left outer segment lengths of each line (program parameter names: a and e).

middle1 , middle2 (int)
Length of middle segment of each line (program parameter names: b and f).

right1 , right2 (int)
Right outer segment lengths of each line (program parameter names: c and g).

vertical1 , vertical2 (int)
Length of vertical marks which divide the lines (program parameter names: d and h).

Insert Figure hvi here.

The Horizontal-Vertical Figure

The Horizontal-verical figure may be used to replicate an experiment by Künnapas (1955). The display contains two orthogonal, straight lines that do not cross, but may meet at a certain point. One of the lines is horizontal, the other one is vertical. The basic position is such that the horizontal line acts as a base line and the vertical line as a cutting line like an inverted "T". Parameters are the lengths of the lines and the ratio of the distance between the point where the cutting line meets the base line and the base line's left end to the total base line length. Other parameters are the distance of the cutting line from the base line, and the rotational angle of the whole figure. The angle of figure rotation may be 0, 90, 180, and 270 degree (angles are given in 1/10 degree in PXL such that 90 degree requires setting the angle variable rotation to 900).

baseline (int)
Length of base line (program parameter name: b).

cutline (int)
Length of cutting line (program parameter name: a).

cutlinedist (int)
Distance between cut line and base line. This is the gap between the two lines, if they do not meet (program parameter name: c).

cutratio (float)
This is the ratio of the distance between the point where the cut line meets the base line and the base line's left end to the full base line length (program parameter name: r). If the cut line does not meet the base line, then we take the point where a line longer than the cut line would meet the base line. A symmetric figure has cutratio = 0.5 while a figure similar to the letter "L" has cutratio = 0.0.

Insert Figure mly here.

The Müller-Lyer Figure

Also implemented is a pair of Müller-Lyer figures. The two figures are displayed horizontally and the basic parameters are the base line length, the length of the wings and the angle between a wing and the base line continuation.

angle1 , angle2 (int)
The angle between a line through the base line and a single wing (program parameter names: c and f).

base1 , base2 (int)
Length of the base line (program parameter names: a and d).

wing1 , wing2 (int)
Length of a wing (program parameter names: b and e).

Insert Figure pdf here.

The Poggendorff Figure

The Poggendorff figure is a single figure display. It has two parallel lines and an oblique transversal where only the left and right parts are visible.

connect (int)
If this parameter is nonzero then the two parallels are connected to form a closed rectangle (program parameter name: d).

cutratio (float)
This is the dividing ratio of the left parallel created by that point where the left part of the transversal meets the left parallel line (program parameter name: r).

deviation (int)
This is the distance between the points where the geometric continuation of the left part of the transversal meets the right parallel and the point where the right part of the transversal actually does meet the right parallel (program parameter name: h).

distance (int)
Distance between the two parallel lines (program parameter name: g).

leftangle , rightangle (int)
Angle between the parallels and the left and right part of the transversal (program parameter names: c and f).

transleft , transright (int)
Length of left and right part of the transversal (program parameter names: b and e).

vertical (int)
Length of parallel lines (program parameter name: a).

Insert Figure pnz here.

The Ponzo Figure

The Ponzo figure contains two horizontal parallel lines that are covered by an angle of two other lines. The angle may be closed or open. The subjects task is to compare the two parallel lines and judge whether the line at the open end of the angle is longer than the line at the closed end of the angle.

topline (int)
Length of parallel line nearer to the (imaginary) intersection point of the angle (program parameter name: a).

bottomline (int)
Length of parallel line at the open end of the angle (program parameter name: b).

linedist (int)
Distance between the two parallel lines (program parameter name: c).

angle (int)
Angle between a line that is orthogonal to the parallels and one wing of the angle. This is equivalent to half the angle between the wings (program parameter name: d).

wingtop (int)
This is the distance between the topline of the two parallels and the (imaginary) intersection point of the angle wings (program parameter name: e).

wingstart (int)
The distance between the angle intersection point and the endpoint of each wing. Thus there may be a gap between the angle wings. If wingstart is 0 then the angle wings actually meet (program parameter name: f).

winglength (int)
This is the distance between the wing starting end and the endpoint of the wing lines. It corresponds to the length of a line that is orthogonal to the parallels and covers the same range as the angle wings (program parameter name: g). Note that both wingstart and winglength are measured in a direction that is orthogonal to the parallels, not in the direction of the wings.

Projected Cubes

cubesize (int)
Cube size (program parameter name: a).

viewelevation (int)
Elevation angle of viewpoint (program parameter name: b).

viewdistance (int)
Distance between viewpoint and center of cube (program parameter name: c).

eydistance (int)
If this parameter is positive then ist gives the distance between eyes for anaglyphic projections of stereo images. color1 and color2 have to be set to match the glasses used for viewing (program parameter name: d).

Example Experiments

Here is an example parameter file for the horizontal-vertical illusion. It contains two blocks each one having a different angle of rotation. Each block contains three different cut ratios which are randomly mixed. We use an adjustment procedure. Before variable values are assigned we include the file geo.h to set some defaults. See page \pagerefhvadExample for an example of the same experiment using an adaptive procedure.

Parameter file hvhe.x from directory \pxl\app\geo

Back to table of contents

Author: Hans Irtel