Created
December 13, 2016 09:24
Star
You must be signed in to star a gist
Sourcecode for: Deconstruction of Optical Illusions
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int main (int argc, const char * argv[]) | |
{ | |
@autoreleasepool { | |
YAVector2i *res = [[YAVector2i alloc] initVals: 800 : 800]; | |
YAVector4f *backColor = [[YAVector4f alloc] initVals: 0.99 : 0.99 : 0.99 : 1]; | |
YACanvas *canvas = [[YACanvas alloc] initResolution: res Color: backColor]; | |
float lineW = 9; | |
float lineSP = res.x / 25; | |
YAVector2i *startPos = [YAVector2i new]; | |
YAVector2i *endPos = [YAVector2i new]; | |
YAVector3f *gridCol = [[YAVector3f alloc] initVal: 0.5]; | |
startPos.y = 0; | |
endPos.y = res.y - 1; | |
for(int x = lineSP / 2; x < res.x; x += lineSP ) { | |
startPos.x = x; endPos.x = x; [canvas plotLine: startPos To: endPos Color: gridCol Width: lineW]; | |
} | |
startPos.x = 0; | |
endPos.x = res.x - 1; | |
for(int y = lineSP / 2; y < res.y; y += lineSP ) { | |
startPos.y = y; endPos.y = y; [canvas plotLine: startPos To: endPos Color: gridCol Width: lineW]; | |
} | |
startPos.y = 0; | |
endPos.y = res.y - 1; | |
for(int x = - res.x + lineSP; x < res.x; x += lineSP * 2) { | |
startPos.x = x; endPos.x = x + res.x; [canvas plotLine: startPos To: endPos Color: gridCol Width: lineW / 2.0f]; | |
} | |
for(int x = lineSP - floorf(lineW / 2.) ; x < res.x * 2; x += lineSP * 2) { | |
startPos.x = x; endPos.x = x - res.x; [canvas plotLine: startPos To: endPos Color: gridCol Width: lineW / 2.0f]; | |
} | |
YAVector2i *blobRes = [[YAVector2i alloc] initVal: 13]; | |
YAVector2i *origin = [[YAVector2i alloc] initVal: (lineSP / 2) - 2]; | |
YABlob* blobB = [[YABlob alloc] initCanvas: canvas]; | |
[blobB.color setValue: 1.0]; | |
blobB.radius = 6.0f; | |
YABlob* blobA = [[YABlob alloc] initCanvas: canvas]; | |
[blobA.color setValue: 0.03]; | |
blobA.radius = 5.0f; | |
YAVector2i *blobPos = [YAVector2i new]; | |
[blobRes sweep: ^(YAVector2i *pos) { | |
if(pos.x % 2 == 0 && pos.y % 2 == 0) { | |
blobPos.x = pos.x * 2 * lineSP + origin.x; | |
blobPos.y = pos.y * 2 * lineSP + origin.y; | |
[blobB drawAt: blobPos]; | |
[blobA drawAt: blobPos]; | |
} | |
}]; | |
[canvas writeJPGTo: @"Opti_A.jpg"]; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment