20% off all products!   Sale ends tonight at midnight EST.

Return to Main Discussion Page
Discussion Quote Icon

Discussion

Main Menu | Search Discussions

Search Discussions
 
 

GuoJun Pan

9 Years Ago

Goldfish Generated By Math

I have three images generated by math program:

Photography Prints
Now.

Photography Prints
Spring work.

Sell Art Online
Last year work.


I think I'm making progress,but no feed back yet, what do you think?

Reply Order

Post Reply
 

Gabriele Pomykaj

9 Years Ago

I think these are awesome, and, yes, you are making progress! - I am fascinated by this method of creating such images. (But I could not do it by myself, I can't do the math :)

 

GuoJun Pan

9 Years Ago

Thank you Gabriele !

But so few views and comments on this year's work, i suspect i may fall into self-enclosed.

I am trying to abstract image of goldfish ...

 

Val Arie

9 Years Ago

GuoJun I think your work is amazing! I have no idea how you do this and probably never will as my math skills are limited :) But you obviously know what you are doing!!!

 

Susan Sadoury

9 Years Ago

They are wonderful.

 

GuoJun Pan

9 Years Ago

@Val Arie Val, Thank you for your support all the time! I think everyone has his/her own language of art. Digging deep of the right one may gain success.

@Susan Sadoury, Thank you very much! I wish i could create a better one, something good for the market !

 

John Wills

9 Years Ago

I really like them a lot. I think I'll follow you to see how you progress with this interesting technique. I like the Pisces the best even though it is your oldest one, it has an elegance to it.

 

GuoJun Pan

9 Years Ago

Thank you John!
It seems that i am losing my skill.
But in my opinion although what i am doing now looks no better than old one but absolutely originality! I can say you could not see anything like this! This one is even beyond my imagination, it is really a new creation although still not good enough.

 

Dan Richards

9 Years Ago

I agree the Pisces is the best, then the Spiral Goldfish is the next.
Love the work on these.

 

GuoJun Pan

9 Years Ago

Thank you Dan Richards!
I can feel the power here, the power of free market is much greater than any philosophy, since there is no theory for art. Diversity is the basic before i can trust the market, and this place should be great for me.

 

Roy Erickson

9 Years Ago

I don't know anything about math or creating stuff from math - but I have created shrimp http://fineartamerica.com/featured/shrimp-roy-erickson.html

 

GuoJun Pan

9 Years Ago

@nice to see you!
I should say something about my method.
l am a programmer in game industry for many years.I create tools for other people to use.But i am tied of that complex and industry things.I would like to create my owner piece of art to let the custerms see my design and thinking.
What i really find is that a beautiful program is a beautiful image if you draw it out. i believe a self complete program is abstract art.
The key word for this art is variety.

 

GuoJun Pan

9 Years Ago

These days I think a lot about my style,
And i find a "new one" : abstract, colorful, 3d and rhythm:
Art Prints

Art Prints

Sell Art Online

What do you think? Any better?

 

Drew

9 Years Ago

One of these days I would like to take a look at your coding GuoJun.

 

GuoJun Pan

9 Years Ago

@Drew OK, my stuff looks like these for example drawing a fish :

void fish(vec3 p1, vec3 v, int len, int wid)
{
vec3 lgtdir(0.5, -0.5, 1); lgtdir.normalise();
v.normalise();
vec3 pt0 = p1;
vec3 lstiipp1;
vec3 lstipp1[2000];
real ang = 0;

std::vector pixlist;

for(int i = 0; i < len; i ++)
{
real alpha1 = i / real(len);
ang += rrnd(-0.0001, 0.0001) * PI;
v.rot(ang, vec3(0, 1, 0));
pt0 = pt0 + v * (0.004*0.125);

vec3 pt = pt0 + vec3(0, 1, 0) * blend2(0, 0.05, alpha1, 2);

if(i < len * 0.2)
{
for(int ii = 0; ii < wid; ii ++)
{
real alpha2 = ii / real(wid);
vec3 pb = pt - vec3(0, 1, 0) * blend2(0, 0.1, alpha1, 2);
vec3 pp = blend(pt, pb, alpha2);

real dl = blend2(0, 1, alpha1, 2) * blend2(0, 0.04, alpha2, 2);
vec3 dp = vec3(0, 1, 0).crossproduct(v) * dl;
int cor = blendcor(0xFF0000FF, 0xFFFFFFFF, alpha2);
int color = blendcor(
blendcor(rndcormap[int(50 * alpha2 / PI)%10][12], rndcormap[int(alpha1 * 100 / PI)%10][10], 0.5 + 0.5 * sin(alpha1 * 100)),
1, 0.5 + 0.5 * sin(50 * alpha2), 4);


{
vec2 o = vec2(len * 0.2 / 2, wid / 2);
real ll = (vec2(i, ii) - o).len();
if(ll < 16)
cor = blendcor(0xFF100000, cor, ll / 16.0);
else if(ll < 32)
cor = blendcor(0xFFFFFFFF, cor, ll / 32.0);
}
cor = blendcor(cor, 1, alpha2);

pixel(pp + dp, cor, 1, (pp + dp).z);
pixel(pp - dp, cor, 1, (pp - dp).z);

}
}
else
{
//PRINT("-------------")
for(int ii = 0; ii < wid; ii ++)
{
real alpha2 = ii / real(wid);
vec3 pb = pt - vec3(0, 1, 0) * blend2(0, 0.1, alpha1, 2);
vec3 pp = blend(pt, pb, alpha2);

real dl = blend2(0, 1, alpha1, 2) * blend2(0, 0.02, alpha2, 2);
vec3 dp = vec3(0, 1, 0).crossproduct(v) * dl;

int cor = blendcor(0xFF8080FF, 0xFFFFFFFF, alpha2);
int color = blendcor(
blendcor(rndcormap[int(50 * alpha2 / PI)%10][18], rndcormap[int(alpha1 * 100 / PI)%10][19], 0.5 + 0.5 * sin(alpha1 * 100)),
cor, 0.5 + 0.5 * sin(50 * alpha2), 4);


{
const int csize = 24;
vec2 pp1 = vec2((i / csize) * csize, (ii / csize) * csize);
//pp1.y += blend2d(0.8, 1.2, alpha1, alpha2);

vec2 o = pp1 + vec2(csize / 2, csize / 2);
real ll = (vec2(i, ii) - o).len();
if(ll < csize / 2)
cor = blendcor(0xFF0000FF, cor, ll / (csize / 2));
}
cor = blendcor(cor, 1, alpha2);
pp = pp + dp;
{// lum
vec3 norm1 = (lstipp1[ii] - pp).crossproduct(lstiipp1 - pp);norm1.normalise();

real lum = -lgtdir.dotproduct(norm1);

lstipp1[ii] = lstiipp1 = pp;
real alpha2d1 = blend2d(0, 1, alpha1, alpha2);
int glasscor = blendcor(0xFFFFFFFF, 0xFFFCFCFC, alpha2d1);
cor = blendcor(color, glasscor, lum, 28);
}
pp = pp - dp;
if(ii > 0)
{
pixel(pp + dp, cor, 1, (pp + dp).z);
pixel(pp - dp, cor, 1, (pp - dp).z);
}
pp = pp + dp;

// yi
if(i == int(len * .35) && ii > int(wid * 0.35) && ii < int(wid * 0.60))
{
vec3 tv = v * .1 + dp * 10.1;
tv.normalise();
int cor0 = blendcor(RGB(255, 255, 255), RGB(253, 0, 79), 0.5 + 0.5 * sin(alpha2 * 200));
real aalpha = blend(0, 1, 0.5 + 0.5 * sin(alpha2 * 210));
vec3 ppp = pp;
for(int j = 0; j < wid * 1.5; j ++)
{
real alphaj = j / (wid * 1.5);

tv.x += blend2d(-1, 1, ppp.x, ppp.y) * 0.01;
tv.y += blend2d(-1, 1, ppp.y, ppp.x) * 0.01;

tv.normalise();
real aaalphh = (ii - wid * 0.35) / (wid * 0.25);
real sl = 0.001 * blend2(0, 0.25, aaalphh , 2);
{
ppp = ppp + tv * sl;

pixeldrawdata_t pd;
pd.pp = ppp + dp * 0.2;
pd.cor = cor0;
pd.alpha = aalpha * 0.1;
pixlist.push_back(pd);

}
}

tv = v * .1 - dp * 10.1;
tv.normalise();
ppp = pp - dp * 2;
for(int j = 0; j < wid * 1.5; j ++)
{
real alphaj = j / (wid * 1.5);

tv.x += blend2d(-1, 1, ppp.x, ppp.y) * 0.01;
tv.y += blend2d(-1, 1, ppp.y, ppp.x) * 0.01;

tv.normalise();
real aaalphh = (ii - wid * 0.35) / (wid * 0.3);
real sl = 0.001 * blend2(0, 0.25, aaalphh , 2);
{
ppp = ppp + tv * sl;

pixeldrawdata_t pd;
pd.pp = ppp - dp * 0.2;
pd.cor = cor0;
pd.alpha = aalpha * 0.1;
pixlist.push_back(pd);

}
}
}
// back
if(ii == 0)
{
vec3 tv = v.crossproduct(vec3::UY);
tv = v.crossproduct(tv);
tv = v * 2.2 - tv;
tv.normalise();

int cor0 = blendcor(RGB(255, 255, 255), RGB(253, 0, 79), 0.5 + 0.5 * sin(alpha1 * 850));
real aalpha = blend(0, 1, 0.5 + 0.5 * sin(alpha1 * 560));
for(int j = 0; j < wid * 0.35; j ++)
{
real alphaj = j / (wid * 0.35);

tv.x += blend2d(-1, 1, pp.x, pp.y) * 0.1;
tv.y += blend2d(-1, 1, pp.y, pp.x) * 0.1;

tv.normalise();
real sl = 0.002 * blend(1, 0, alpha1 + 0.25, 0.2);
if(alpha1 < 0.75)
{
pp = pp + tv * sl;
pixeldrawdata_t pd;
pd.pp = pp;
pd.cor = cor0;
pd.alpha = aalpha * 0.35;
pixlist.push_back(pd);
}
//pixel(pp, cor0, aalpha * 0.1);
}
}
// tail
if(i + 8 >= len)
{
vec3 tv = v;
tv.rot(blend(-0.5, 0.5, rndmap[0][ii % 512]), vec3(0, 1, 0));
tv.rot(0.5 * blend2d(-1, 1, alpha2, 0) * PI, vec3(0, 1, 0));
int cor0 = blendcor(RGB(255, 255, 255), RGB(253, 0, 79), 0.5 + 0.5 * sin(alpha2 * 50));
real aalpha = blend(0, 1, 0.5 + 0.5 * sin(alpha2 * 60));

for(int j = 0; j < len * 2.5; j ++)
{
real alphaj = j / (len * 2.5);

tv.x += blend2d(-1, 1, pp.x, pp.y) * 0.01;
tv.y += blend2d(-1, 1, pp.y, pp.x) * 0.01;

tv.normalise();
pp = pp + tv * 0.001;

//int cor = blendcor(cor0, 0xFFFFFFFF, blend2d(0, 1, pp.x, pp.y));
int color = blendcor(
rndcormap[int(250 * alpha2 / PI)%10][18],
rndcormap[int(alpha2 * 250 / PI)%10][19],
0.5 + 0.5 * sin(alpha2 * 250));
pixel(pp, color, aalpha * 0.5);
}
}
}
}
}


for(int i = 0; i < pixlist.size(); i ++)
{
pixeldrawdata_t& pd = pixlist[i];
pixel(pd.pp, pd.cor, pd.alpha, pd.pp.z);
}
}



 

GuoJun Pan

9 Years Ago

I know these looks horrible i have very beautiful codes for my game but for my art just write what i get in my mind.

 

Drew

9 Years Ago

Looks like C: any specific library files needed to compile? Been a long time since I written any code but c and basic as well as the visual versions I am familiar with.

BTW: your art is a fantastic representation of true abstraction. It would take someone skilled with programming hours maybe even days to reverse engineer your work even with the code.

I also noticed that you declare your variables as you need them instead of an initial declaration. Creating on the fly. Very impressive.

 

GuoJun Pan

9 Years Ago

up!

 

GuoJun Pan

9 Years Ago

@Drew I am using C++.
there is no specific library or i will not call these "art", in my mind simple is the best way.
It is very hard for me to do this because nobody else i can get and exchange ideas.Just along for me, and in my place, people will not buy any artwork unless that is made of valuable materials or by famous artist.
But still i think there is "art" in this simple code, in this way of creation.Math or program is not just a tool, they art form systems just like modern art! They are beautiful not just because of any special shapes or equations!

 

Drew

9 Years Ago

I have an old Borland C ++ compiler. I may try to see if it will compile your code. Thanks for sharing.

 

GuoJun Pan

9 Years Ago

@Drew this code is part of my work, there is a header. For vec3 or blend() or pixel() ....

If you want my codes tell me your email i will send you tomorrow!

 

This discussion is closed.