File:Pinna's illusory intertwining effect.gif
Size of this preview: 600 × 600 pixels. Other resolutions: 240 × 240 pixels | 480 × 480 pixels | 768 × 768 pixels | 1,024 × 1,024 pixels | 2,000 × 2,000 pixels.
Original file (2,000 × 2,000 pixels, file size: 64 KB, MIME type: image/gif)
File information
Structured data
Captions
Summary
editDescriptionPinna's illusory intertwining effect.gif |
English: Pinna's illusory intertwining effect, described in Pinna, B., Gregory, R.L. (2002). "Shifts of Edges and Deformations of Patterns". Perception 31: 1503-1508. and Pinna illusion (scholarpedia) Actually, the circles are concentric. |
Date | |
Source | Own work |
Author | Jochen Burghardt |
Source code
|
---|
typedef int xT; /* x coordinate */
typedef int yT; /* y coordinate */
#define pmWd ((xT)2000)
#define pmHg ((yT)2000)
#define pmX0 ((xT)pmWd/2)
#define pmY0 ((yT)pmHg/2)
static Pixmap pm;
static GC gcBlack;
static GC gcWhite;
static GC gcGrey;
static inline void rotatePoint(
xT *xd,
yT *yd,
double al,
xT xs,
yT ys)
{
double const s = sin(al);
double const c = cos(al);
*xd = (xT)(xs * c - ys * s);
*yd = (yT)(xs * s + ys * c);
}
static inline void doPinnaCircles(void)
{
/* circle radiuses */
double const rMin = 300.0;
double const rInc = 200.0;
double const rMax = 950;
double r;
/* square side length */
double const S = 100.0;
double const s = S * 0.7;
double alInc = 2 * M_PI * 15 / 360;
int i;
XFillRectangle(dpy,pm,gcGrey,0,0,pmWd,pmHg);
for (r=rMin; r <=rMax; r+=rInc) {
/* currect radius such that an integer multiple of squares fits */
double const p = 2.0 * M_PI * r;
int const cnt = floor(p/S/2.0) * 2;
double const pc = cnt * S;
xT const rc = (xT)(pc / 2.0 / M_PI);
alInc = - alInc;
for (i=0; i<cnt; i+=1) {
/* angle to midpoint of i.th square */
double const Al = 2.0 * M_PI * i / cnt;
/* mid point of i.th square */
xT const xx = pmX0 + (xT)(sin(Al) * rc);
yT const yy = pmY0 + (yT)(cos(Al) * rc);
/* edge angle of i.th square */
double const al = Al + alInc;
xT xa, xb, xc, xd;
yT ya, yb, yc, yd;
rotatePoint(&xa,&ya,-al,+s/2.0,+s/2.0);
rotatePoint(&xb,&yb,-al,-s/2.0,+s/2.0);
rotatePoint(&xc,&yc,-al,-s/2.0,-s/2.0);
rotatePoint(&xd,&yd,-al,+s/2.0,-s/2.0);
GC const gc = (i % 2 == 0 ? gcWhite : gcBlack);
XDrawLine(dpy,pm,gc,xx+xa,yy+ya,xx+xb,yy+yb);
XDrawLine(dpy,pm,gc,xx+xb,yy+yb,xx+xc,yy+yc);
XDrawLine(dpy,pm,gc,xx+xc,yy+yc,xx+xd,yy+yd);
XDrawLine(dpy,pm,gc,xx+xd,yy+yd,xx+xa,yy+ya);
}
}
XImage * const im = XGetImage(dpy,pm,0,0,pmWd,pmHg,-1,ZPixmap);
writePpmFile(stdout,"",im); /* library function to print XImage to FILE*, code not included here */
}
/* main() initializes Pixmap pm, and GC gcBlack, gcWhite, gcGrey using library functions, then calls doPinnaCircles(), code not included here */
|
Licensing
editI, the copyright holder of this work, hereby publish it under the following license:
This file is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported license.
- You are free:
- to share – to copy, distribute and transmit the work
- to remix – to adapt the work
- Under the following conditions:
- attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
- share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.
File history
Click on a date/time to view the file as it appeared at that time.
Date/Time | Thumbnail | Dimensions | User | Comment | |
---|---|---|---|---|---|
current | 20:00, 7 November 2013 | 2,000 × 2,000 (64 KB) | Jochen Burghardt (talk | contribs) | User created page with UploadWizard |
You cannot overwrite this file.
File usage on Commons
There are no pages that use this file.
File usage on other wikis
The following other wikis use this file:
- Usage on en.wikipedia.org
- Usage on fr.wikipedia.org
- Usage on hy.wikipedia.org
- Usage on my.wikipedia.org
- Usage on pt.wikipedia.org
Metadata
This file contains additional information such as Exif metadata which may have been added by the digital camera, scanner, or software program used to create or digitize it. If the file has been modified from its original state, some details such as the timestamp may not fully reflect those of the original file. The timestamp is only as accurate as the clock in the camera, and it may be completely wrong.
GIF file comment | generated by writePpmFile(0x402e84e0,0x804edb6,0x80ae818)
width height rgbMax |
---|