Difference between revisions of "User talk:Piphi"

(Eclipse Logo: new section)
(Replaced content with "I also answer questions about the GMAAS. == shutdown == The AoPS wiki is about to be shut down. --piphi (talk) 13:52, 4 February 2020...")
(Tag: Replaced)
Line 6: Line 6:
  
 
--[[User:Piphi|piphi]] ([[User talk:Piphi|talk]]) 13:52, 4 February 2020 (EST)
 
--[[User:Piphi|piphi]] ([[User talk:Piphi|talk]]) 13:52, 4 February 2020 (EST)
 
== Firefox Logo ==
 
 
Recently I've been working on drawing the Firefox logo using [[Asymptote]], and just recently with a lot of help from [https://artofproblemsolving.com/community/user/sonone sonone] we finished it!
 
 
===More info===
 
 
====Inspiration====
 
I decided to draw the Firefox logo after seeing sonone's [https://artofproblemsolving.com/community/c68h2059229p14822284 submission] for the [https://aops.com/community/h2059229 Asymptote Design Comptetion].  Two of their submissions were Asymptote drawings of the browsers Safari and Chrome and since Firefox wasn't there I decided to draw it. :)
 
 
====Beginnings====
 
I drew the logo by copying a 128x128 Firefox logo into MS paint and finding the coordinates of each intersection to make the curves.  [[Image:Firefox128.png|thumb|right|Firefox]]  This resulted in the below image.
 
<asy>
 
//firefox
 
fill(Circle((64,64),30), purple);
 
 
//fox belly
 
draw((76,82)..(66,38)..(35,66));
 
path a = (76,82)..(66,38)..(35,66);
 
 
//fox lower mouth
 
draw((35,66)..(27,69)..(23,75));
 
path b = (35,66)..(27,69)..(23,75);
 
 
//fox upper mouth
 
draw((23,75)..(32,79)..(44,76));
 
path c = (23,75)..(32,79)..(44,76);
 
 
//fox middle nose
 
draw((44,76)..(54,74)..(63,75));
 
path d = (44,76)..(54,74)..(63,75);
 
 
//fill(a--b--c--d--cycle);
 
 
//fox upper nose
 
draw((63,75)..(53,79.5)..(46,84)..(41,89)..(32,92));
 
path e = (63,75)..(53,79.5)..(46,84)..(41,89)..(32,92);
 
 
//fox left ear
 
draw((32,92)..(29,99)..(29,106));
 
path f = (32,92)..(29,99)..(29,106);
 
 
//fox left back
 
draw((29,106)..(14,38)..(64,9));
 
path g = (29,106)..(14,38)..(64,9);
 
 
//fox right back
 
draw((64,9)..(113,35)..(105,100));
 
path h = (64,9)..(113,35)..(105,100);
 
 
// fox outer part of inner tail
 
draw((76,82)..(96,70)..(96,49));
 
path i = (76,82)..(96,70)..(96,49);
 
 
// fox upper belly
 
draw((39,59)..(63,38)..(96,49)..(111,81));
 
path j = (39,59)..(63,38)..(96,49)..(111,81);
 
 
// fox middle belly
 
draw((111,81)..(108,92)..(105,100));
 
path k = (111,81)..(108,92)..(105,100);
 
 
// fox lower chin
 
draw((39,59)..(45,67)..(58,70));
 
path l = (39,59)..(45,67)..(58,70);
 
 
// fox snout
 
draw((58,70)..(60,71)..(63,75));
 
path m = (58,70)..(60,71)..(63,75);
 
 
//fox outer right ear
 
draw((32,92)..(37,98)..(45,102));
 
path n = (32,92)..(37,98)..(45,102);
 
 
//fox inner right ear
 
draw((45,102)..(44,95)..(46,84));
 
path o = (45,102)..(44,95)..(46,84);
 
 
// fox middle belly
 
draw((8,64)..(39,17)..(111,81)..(102,98)..(95,106)..(87,115)..(81,124));
 
path p = (8,64)..(39,17)..(111,81)..(102,98)..(95,106)..(87,115)..(81,124);
 
 
// fox upper left tail
 
draw((81,124)..(68,112)..(62,94));
 
path q = (81,124)..(68,112)..(62,94);
 
 
 
//fill(c--d--e--f--g--cycle, orange);
 
 
shipout(bbox(lightgrey+3mm,FillDraw(lightgrey)));
 
</asy>
 
 
But then I encountered a small problem, I had no idea how to paint it!
 
 
====Continuation====
 
So that's when I asked sonone to help me color it.  I found a nice function from [https://artofproblemsolving.com/community/c68h564416p3303712 here] (which I later used to draw in inner circle).  But sonone found a better function to help us and they also fixed the curves up a bit.  They then drew a part of the fox using that function.
 
 
<asy>
 
//firefox
 
fill(Circle((64,64),30), purple);
 
 
//fox belly
 
//draw((76,82)..(66,38)..(35,66),red);
 
path a = (76,82)..(66,38)..(35,66);
 
 
//fox lower mouth
 
draw((35,66)..(27,69)..(23,75));
 
path b = (35,66)..(27,69)..(23,75);
 
 
//fox upper mouth
 
draw((23,75)..(32,79)..(44,76));
 
path c = (23,75)..(32,79)..(44,76);
 
 
//fox middle nose
 
draw((44,76)..(54,74)..(63,75));
 
path d = (44,76)..(54,74)..(63,75);
 
 
//fox upper nose
 
draw((63,75)..(53,79.5)..(46,84)..(41,89)..(32,92));
 
path e = (63,75)..(53,79.5)..(46,84)..(41,89)..(32,92);
 
 
//fox left ear
 
draw((32,92)..(29,99)..(29,106));
 
path f = (32,92)..(29,99)..(29,106);
 
 
//fox left back
 
draw((29,106)..(14,38)..(64,9));
 
path g = (29,106)..(14,38)..(64,9);
 
 
//fox right back
 
draw((64,9)..(113,35)..(105,100));
 
path h = (64,9)..(113,35)..(105,100);
 
 
// fox outer part of inner tail
 
draw((76,82)..(96,70)..(96,49));
 
path i = (76,82)..(96,70)..(96,49);
 
 
// fox upper belly
 
//draw((39,59)..(63,38)..(96,49)..(111,81),orange);
 
path j = (39,59)..(63,38)..(96,49)..(111,81);
 
 
// fox middle belly
 
draw((111,81)..(108,92)..(105,100));
 
path k = (111,81)..(108,92)..(105,100);
 
 
// fox lower chin
 
draw((39,59)..(45,67)..(58,70));
 
path l = (58,70)..(45,67)..(39,59);
 
 
// fox snout
 
draw((58,70)..(60,71)..(63,75));
 
path m = (63,75)..(60,71)..(58,70);
 
 
//fox outer right ear
 
draw((32,92)..(37,98)..(45,102));
 
path n = (32,92)..(37,98)..(45,102);
 
 
//fox inner right ear
 
draw((45,102)..(44,95)..(46,84));
 
path o = (45,102)..(44,95)..(46,84);
 
 
// fox middle belly
 
draw((8,64)..(39,17)..(111,81)..(102,98)..(95,106)..(87,115)..(81,124));
 
path p = (8,64)..(39,17)..(111,81)..(102,98)..(95,106)..(87,115)..(81,124);
 
 
// fox upper left tail
 
draw((81,124)..(68,112)..(62,94));
 
path q = (81,124)..(68,112)..(62,94);
 
 
// updated belly
 
draw((76,82)..(65,40)..(39,59));
 
path aA=(39,59)..(65,40)..(76,82);
 
 
//updated fox upper belly
 
draw((111,81)..(96,49)..(47,43)..(35,66));
 
path jJ=(111,81)..(96,49)..(47,43)..(35,66);
 
 
// updated fox upper belly extra
 
draw((96,49)..(47,43)..(35,66),red);
 
path jJ1=(96,49)..(46.5,43.5)..(35,66);
 
 
picture middle_shade;
 
path one=aA--i--jJ1--b--c--d--m--l--cycle;
 
pen[][] firefox1={{yellow+.3*orange,yellow+orange,orange}};
 
latticeshade(middle_shade,rotate(90)*one,firefox1);
 
add(rotate(-90)*middle_shade);
 
 
shipout(bbox(lightgrey+3mm,FillDraw(lightgrey)));
 
</asy>
 
 
They then also drew more of the fox.
 
 
<asy>
 
//firefox
 
fill(Circle((64,64),30), purple);
 
 
//fox belly
 
//draw((76,82)..(66,38)..(35,66),red);
 
path a = (76,82)..(66,38)..(35,66);
 
 
//fox lower mouth
 
draw((35,66)..(27,69)..(23,75));
 
path b = (35,66)..(27,69)..(23,75);
 
 
//fox upper mouth
 
draw((23,75)..(32,79)..(44,76));
 
path c = (23,75)..(32,79)..(44,76);
 
 
//fox middle nose
 
draw((44,76)..(54,74)..(63,75));
 
path d = (44,76)..(54,74)..(63,75);
 
 
//fox upper nose
 
draw((63,75)..(53,79.5)..(46,84)..(41,89)..(32,92));
 
path e = (63,75)..(53,79.5)..(46,84)..(41,89)..(32,92);
 
 
//fox left ear
 
draw((32,92)..(29,99)..(29,106));
 
path f = (32,92)..(29,99)..(29,106);
 
 
//fox left back
 
draw((29,106)..(14,38)..(64,9));
 
path g = (29,106)..(14,38)..(64,9);
 
 
//fox right back
 
draw((64,9)..(113,35)..(105,100));
 
path h = (64,9)..(113,35)..(105,100);
 
 
// fox outer part of inner tail
 
draw((76,82)..(96,70)..(96,49));
 
path i = (76,82)..(96,70)..(96,49);
 
 
// fox upper belly
 
//draw((39,59)..(63,38)..(96,49)..(111,81),orange);
 
path j = (39,59)..(63,38)..(96,49)..(111,81);
 
 
// fox middle belly
 
draw((111,81)..(108,92)..(105,100));
 
path k = (105,100)..(108,92)..(111,81);
 
 
// fox lower chin
 
draw((39,59)..(45,67)..(58,70));
 
path l = (58,70)..(45,67)..(39,59);
 
 
// fox snout
 
draw((58,70)..(60,71)..(63,75));
 
path m = (63,75)..(60,71)..(58,70);
 
 
//fox outer right ear
 
draw((32,92)..(37,98)..(45,102));
 
path n = (32,92)..(37,98)..(45,102);
 
 
//fox inner right ear
 
draw((45,102)..(44,95)..(46,84));
 
path o = (45,102)..(44,95)..(46,84);
 
 
// fox middle belly
 
draw((8,64)..(39,17)..(111,81)..(102,98)..(95,106)..(87,115)..(81,124));
 
path p = (8,64)..(39,17)..(111,81)..(102,98)..(95,106)..(87,115)..(81,124);
 
 
// fox upper left tail
 
draw((81,124)..(68,112)..(62,94));
 
path q = (81,124)..(68,112)..(62,94);
 
 
// updated belly
 
draw((76,82)..(65,40)..(39,59));
 
path aA=(39,59)..(65,40)..(76,82);
 
 
//updated fox upper belly
 
draw((111,81)..(96,49)..(47,43)..(35,66));
 
path jJ=(111,81)..(96,49)..(47,43)..(35,66);
 
 
// updated fox upper belly extra
 
draw((96,49)..(47,43)..(35,66),red);
 
path jJ1=(96,49)..(46.5,43.5)..(35,66);
 
 
draw((29,106)..(9.3,72)..(14,38));
 
path g1=(29,106)..(9.3,72)..(14,38);
 
 
draw((8,64)..(39,17)..(111,81));
 
path p1=(8,64)..(39,17)..(111,81);
 
 
picture ms;
 
path one=aA--i--jJ1--b--c--d--m--l--cycle;
 
pen[][] firefox1={{yellow+.3*orange,yellow+orange,orange+.5*red}};
 
latticeshade(ms,rotate(90)*one,firefox1);
 
add(rotate(-90)*ms);
 
 
picture bs;
 
path two=jJ--b--c--d--e--f--g1--p1--cycle;
 
pen[][] firefox1={{yellow+.3*orange,yellow+orange,red}};
 
latticeshade(bs,rotate(120)*two,firefox1);
 
add(rotate(-120)*bs);
 
 
picture right_ear_shade;
 
path two=n--o--(46,84)..(41,89)..(32,92)--cycle;
 
pen[][] firefox2={{yellow+.5*orange,orange+yellow,orange}};
 
latticeshade(right_ear_shade,rotate(90)*two,firefox2);
 
add(rotate(-90)*right_ear_shade);
 
 
shipout(bbox(lightgrey+3mm,FillDraw(lightgrey)));
 
</asy>
 
 
Then I learned how to use this function, I fixed the colors of the image above and colored the rest of the image!
 
 
Here is the final drawing:
 
<asy>
 
/**
 
* Firefox
 
*
 
* Made by piphi and sonone
 
*
 
* For more information go to the link below.
 
* https://artofproblemsolving.com/wiki/index.php/User_talk:Piphi#Firefox_Logo
 
*/
 
path circ = Circle((64,64),30)--cycle;
 
 
path upper = (111,81)..(102,98)..(95,106)..(87,115)..(81,124);
 
path q = (81,124)..(68,112)..(62,94);
 
path i = (76,82)..(96,70)..(96,49);
 
path ll = (111,81)..(106,61)..(96,49);
 
 
picture highest_tail_shade;
 
path two=upper--q--i--ll--cycle;
 
pen[][] firefox2={{rgb(255,242,77),rgb(255,219,63),rgb(251,122,83)}};
 
latticeshade(highest_tail_shade,rotate(110)*two,firefox2);
 
add(rotate(-110)*highest_tail_shade);
 
 
void fillmyway(picture pic=currentpicture,pair C,path P,real[] r,pen[] p,int n=100)
 
{
 
int m=r.length;
 
for(int k=n;k>0;--k)
 
{
 
real[] g(real rr)
 
{
 
real qq=70,ss=0; real[] col={0,0,0};
 
for(int kk=0;kk<r.length-1;++kk)
 
{
 
real h=r[kk+1]-r[kk];
 
for (real t=0.05;t<1;t+=0.1)
 
{
 
real rt=r[kk]+t*h;
 
col+=exp(-qq*(rr-rt)^2)*h*((1-t)*colors(rgb(p[kk]))+t*colors(rgb(p[kk+1])));
 
ss+=exp(-qq*(rr-rt)^2)*h;
 
}
 
}
 
return col/ss;
 
}
 
real[] col=g(k/n);
 
unfill(shift(C)*scale(k/n)*shift(-C)*P);
 
fill(shift(C)*scale(k/n)*shift(-C)*P,rgb(col[0],col[1],col[2]));
 
}
 
}
 
 
pen[] p={rgb(109,93,228),rgb(104,88,218),rgb(167,66,233),rgb(188,59,231),rgb(170,51,216)};
 
real[] r={0,0.45,0.8,0.9,1};
 
 
fillmyway((50,45),circ,r,p);
 
 
//fox belly
 
path a = (76,82)..(66,38)..(35,66);
 
 
//fox lower mouth
 
path b = (35,66)..(27,69)..(23,75);
 
 
//fox upper mouth
 
path c = (23,75)..(32,79)..(44,76);
 
 
//fox middle nose
 
path d = (44,76)..(54,74)..(63,75);
 
 
//fox upper nose
 
path e = (63,75)..(53,79.5)..(46,84)..(41,89)..(32,92);
 
 
//fox left ear
 
path f = (32,92)..(29,99)..(29,106);
 
 
//fox left back
 
path g = (29,106)..(14,38)..(64,9);
 
 
//fox right back
 
path h = (64,9)..(113,35)..(105,100);
 
path hh = (105,100)..(113,35)..(64,9);
 
 
// fox outer part of inner tail
 
path i = (76,82)..(96,70)..(96,49);
 
 
// fox upper belly
 
path j = (39,59)..(63,38)..(96,49)..(111,81);
 
 
// fox middle belly extra
 
path k = (105,100)..(108,92)..(111,81);
 
 
path kk = (111,81)..(108,92)..(105,100);
 
 
// fox lower chin
 
path l = (58,70)..(45,67)..(39,59);
 
 
// fox snout
 
path m = (63,75)..(60,71)..(58,70);
 
 
//fox outer right ear
 
path n = (32,92)..(37,98)..(45,102);
 
 
//fox inner right ear
 
path o = (45,102)..(44,95)..(46,84);
 
 
// fox middle belly
 
path p = (8,64)..(39,17)..(111,81)..(102,98)..(95,106)..(87,115)..(81,124);
 
path upper = (111,81)..(102,98)..(95,106)..(87,115)..(81,124);
 
 
// fox upper left tail
 
path q = (81,124)..(68,112)..(62,94);
 
 
// updated belly
 
path aA=(39,59)..(65,40)..(76,82);
 
 
//updated fox upper belly
 
path jJ=(111,81)..(96,49)..(47,43)..(35,66);
 
 
path ll = (111,81)..(106,61)..(96,49);
 
 
// updated fox upper belly extra
 
path jJ1=(96,49)..(46.5,43.5)..(35,66);
 
 
path g1=(29,106)..(9.3,72)..(14,38);
 
 
path p1=(8,64)..(39,17)..(111,81);
 
 
picture ms;
 
path one=aA--i--jJ1--b--c--d--m--l--cycle;
 
pen[][] firefox1={{yellow+orange,rgb(255,172,28),orange+.5*red}};
 
latticeshade(ms,rotate(90)*one,firefox1);
 
add(rotate(-90)*ms);
 
 
picture bs;
 
path two=jJ--b--c--d--e--f--g1--p1--cycle;
 
pen[][] firefox1={{rgb(255,227,67),rgb(255,149,19),rgb(255,92,50),rgb(255,48,82)}};
 
latticeshade(bs,rotate(130)*two,firefox1);
 
add(rotate(-130)*bs);
 
 
picture right_ear_shade;
 
path two=n--o--(46,84)..(41,89)..(32,92)--cycle;
 
pen[][] firefox2={{rgb(255,189,70),rgb(255,155,59),rgb(255,80,56)}};
 
latticeshade(right_ear_shade,rotate(130)*two,firefox2);
 
add(rotate(-130)*right_ear_shade);
 
 
 
picture lowest_tail_shade;
 
path two=p1--kk--hh--(64,9)..(25,24)..(8,64)--cycle;
 
pen[][] firefox2={{rgb(254,228,78),rgb(250,129,85),rgb(229,11,113)}};
 
latticeshade(lowest_tail_shade,rotate(110)*two,firefox2);
 
add(rotate(-110)*lowest_tail_shade);
 
 
clip(currentpicture, g--h--(81,124)--cycle);
 
 
shipout(bbox(lightgrey+3mm,FillDraw(lightgrey)));
 
</asy>
 
 
== Eclipse Logo ==
 
 
After making the Firefox logo I decided to make a series of logos out of Asymptote.  The logo that I chose to do next was the Eclipse logo. [[Image:Logo-eclipse.png|thumb|right|Eclipse]]
 
 
In case you don't know [https://www.eclipse.org/downloads/ Eclipse] is an IDE for the Java programming language.
 
 
Anyway, here is my drawing!
 
 
<asy>
 
/**
 
* Eclipse
 
*
 
* Made by piphi
 
*
 
* For more information go to the link below.
 
* https://artofproblemsolving.com/wiki/index.php/User_talk:Piphi#Eclipse
 
*/
 
 
fill(circle((55,50),45),darkblue+white*0.2+purple*0.05);
 
 
picture ic;
 
path two=circle((55,50),30)--cycle;
 
pen[][] firefox2={{darkblue+white*0.2+purple*0.05,darkblue+white*0.2+purple*0.05,darkblue+white*0.25+purple*0.2}};
 
latticeshade(ic,rotate(90)*two,firefox2);
 
add(rotate(-90)*ic);
 
 
fill((100,57)--(100,62)--(9,62)--(9,57)--cycle,white);
 
fill((100,47)--(100,52)--(9,52)--(9,47)--cycle,white);
 
fill((100,37)--(100,42)--(9,42)--(9,37)--cycle,white);
 
 
clip(currentpicture, circle((55,50),45)--cycle);
 
 
path a = (48,3)..(0,50)..(48,96);
 
path b = (48,96)..(7,50)..(48,3);
 
 
fill(a--b--cycle,rgb(247,148,30));
 
</asy>
 

Revision as of 20:59, 29 April 2020

I also answer questions about the GMAAS.

shutdown

The AoPS wiki is about to be shut down.

--piphi (talk) 13:52, 4 February 2020 (EST)