GeometricOptic 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 geometricoptical illusions.
The following display types are currently available:

areal figures of different forms (arf),

the Baldwin figure either for midpoint selection (bal) or for pair
comparisons (bal2),

Delboeuf's concentric circles (dbf),

the divided line figure, a less well known creation of MüllerLyer
(dli),

the horizontalvertical illusion (hvi) due to Fick,

the MüllerLyer figure (mly),

the Poggendorff figure (pdf),

the Ponzo figure (pnz),

the perspective projection of a wire cube (pro).
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.
Figures
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
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 stopkey, 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 xcoordinate and centery1 is the ycoordinate. 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
 AREAS (3)
 Areal figures with various forms.
 BALDWIN (6)
 BALDWIN2 (9)
 DELBOEUF (7)
 DIVIDED (4)\_LINE (4)
 MUELLER (1)\_LYER (1)
 MUELLER (2)\_LYER2 (2)
 POGGENDORFF (5)
 PONZO (8)
 PROJECTION (10)
 This is a perspective projection of a wire cube.
 T (0)\_FIGURE (0)
 flags (string)
 A
 Use an adjustment method instead of a binary response method.
 O
 Use a circular (elliptical) background field instead of a
rectangular field.
 S
 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 stopkey
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:
 ELLIPTICAL (1)
 RECTANGULAR (0)
 TRIANGULAR (2)
 UPTRIANGLE (2)
 DOWNTRIANGLE (3)
 DIAMOND (4)
 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 DividedLine Figure
The DividedLine 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 HorizontalVertical Figure
The Horizontalverical 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üllerLyer Figure
Also implemented is a pair of MüllerLyer
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 horizontalvertical 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
irtel@psychologie.unimannheim.de