Skeda:GreatStellatedDodecahedron.jpg
Madhësia e këtij shikimi: 644 × 599 pixel. Rezolucione të tjera: 258 × 240 pixel | 516 × 480 pixel | 853 × 794 pixel.
Dokument origjinal ((përmasa 853 × 794 px, madhësia skedës: 231 KB, lloji MIME: image/jpeg))
Kjo skedë është prej Wikimedia Commons dhe mund të përdoret nga projekte të tjera. Përshkrimi në këtë skedë në këtë faqe nuk është treguar më poshtë. | Shko tek faqja përshkruese në Commons |
Përmbledhje
PërshkrimiGreatStellatedDodecahedron.jpg |
English: Great stellated dodecahedron, rendered with POVRay This image was created with POV-Ray. |
Burimi | Punë e juaja |
Autori | User Cyp |
This image was uploaded in the JPEG format even though it consists of non-photographic data. This information could be stored more efficiently or accurately in the PNG or SVG format. If possible, please upload a PNG or SVG version of this image without compression artifacts, derived from a non-JPEG source (or with existing artifacts removed). After doing so, please tag the JPEG version with {{Superseded|NewImage.ext}} and remove this tag. This tag should not be applied to photographs or scans. If this image is a diagram or other image suitable for vectorisation, please tag this image with {{Convert to SVG}} instead of {{BadJPEG}}. If not suitable for vectorisation, use {{Convert to PNG}}. For more information, see {{BadJPEG}}. |
Licencim
Unë, krijuesi i kësaj pune, e publikoj këtu në bazë të licensës në vijim:
Ju jepet leje për ta kopjuar, shpërndarë dhe/ose ndryshuar këtë dokument sipas kushteve të Licencës GNU për Dokumentim të Lirë, versioni 1.2 ose çfarëdo versioni të mëpasshëm të botuar nga Free Software Foundation; pa Seksione të Pandryshueshme, pa Tekste Kapakësh të Përparmë, dhe pa Tekste Kapakësh të Pasmë. Një kopje e kësaj licence është përfshirë në seksionin e titulluar GNU Free Documentation License.http://www.gnu.org/copyleft/fdl.htmlGFDLGNU Free Documentation Licensetruetrue |
Kjo skedë licencohet sipas Creative Commons Attribution-Share Alike 3.0 Unported. | ||
| ||
Kjo etiketë licencimi u shtua te kjo skedë si pjesë e përditësimit të lincecimit. GFDL.http://creativecommons.org/licenses/by-sa/3.0/CC BY-SA 3.0Creative Commons Attribution-Share Alike 3.0truetrue |
Kjo skedë është dhënë për përdorim sipas licensës Creative Commons Attribution-Share Alike 2.5 Generic, 2.0 Generic dhe 1.0 Generic.
- Je i lirë të:
- ta shpërndani – ta kopjoni, rishpërndani dhe përcillni punën
- t’i bëni “remix” – të përshtatni punën
- Sipas kushteve të mëposhtme:
- atribuim – Duhet t’i jepni meritat e duhura, të siguroni një lidhje për tek licenca dhe të tregoni nëse janë bërë ndryshime. Këtë mund ta bëni në ndonjë mënyrë të arsyeshme, por jo në ndonjë mënyrë që sugjeron se licencuesi ju del zot juve apo përdorimit tuaj.
- share alike – Nëse bëni një “remix”, e shndërroni, ose ndërtoni duke u bazuar te materiali, duhet t’i shpërndani kontributet tuaja sipas të njëjtës licencë ose një të tille të përputhshme me origjinalen.
Mundeni të përzgjidhni licencën që doni.
Source
//GPL #include <stdio.h> #include <math.h> #include <vector> using std::vector; const char *theader = "//Picture *** Use flashiness=1 !!! ***\n//\n// +w1024 +h1024 +a0.3 +am2\n// +w512 +h512 +a0.3 +am2\n//\n//Movie *** Use flashiness=0.25 !!! ***\n//\n// +kc +kff120 +w256 +h256 +a0.3 +am2\n// +kc +kff60 +w256 +h256 +a0.3 +am2\n//\"Fast\" preview\n// +w128 +h128\n#declare notwireframe=1;\n#declare withreflection=0;\n#declare flashiness=1; //Still pictures use 1, animated should probably be about 0.25.\n\n#declare rotation=seed(%d);\n\n#declare rot1=rand(rotation)*pi*2;\n#declare rot2=acos(1-2*rand(rotation));\n#declare rot3=(rand(rotation)+clock)*pi*2;\n#macro dorot()\n rotate rot1*180/pi*y\n rotate rot2*180/pi*x\n rotate rot3*180/pi*y\n#end\n\n"; const char *tline = "object {\n cylinder { <%lf,%lf,%lf>, <%lf,%lf,%lf>, .01 dorot() }\n pigment { colour <.3,.3,.3> }\n finish { ambient 0 diffuse 1 phong 1 }\n}\n\n"; const char *tvertex = "object {\n sphere { <%lf,%lf,%lf>, .01 dorot() }\n pigment { colour <.3,.3,.3> }\n finish { ambient 0 diffuse 1 phong 1 }\n}\n\n"; const char *tstartmesh = "object {\n mesh {\n"; const char *ttriangle = " triangle {\n <%lf,%lf,%lf>, <%lf,%lf,%lf>, <%lf,%lf,%lf>\n }\n"; const char *tendmesh = " //sphere { <0,0,0>, 1 }\n //sphere { <0,0,0>, ld+.01 inverse }\n dorot()\n }\n pigment { colour rgbt <.8,.8,.8,.4> }\n finish { ambient 0 diffuse 1 phong flashiness #if(withreflection) reflection { .2 } #end }\n //interior { ior 1.5 }\n photons {\n target on\n refraction on\n reflection on\n collect on\n }\n}\n\n"; const char *tfooter = "// CCC Y Y PP\n// C Y Y P P\n// C Y PP\n// C Y P\n// CCC Y P\n\n#local a=0;\n#while(a<11.0001)\n light_source { <4*sin(a*pi*2/11), 5*cos(a*pi*6/11), -4*cos(a*pi*2/11)> colour (1+<sin(a*pi*2/11),sin(a*pi*2/11+pi*2/3),sin(a*pi*2/11+pi*4/3)>)*2/11 }\n #local a=a+1;\n#end\n\nbackground { color <1,1,1> }\n\ncamera {\n perspective\n location <0,0,0>\n direction <0,0,1>\n right x/2\n up y/2\n sky <0,1,0>\n location <0,0,-4.8>\n look_at <0,0,0>\n}\n\nglobal_settings {\n max_trace_level 40\n photons {\n count 200000\n autostop 0\n }\n}\n"; #define PHI ((1+sqrt(5))/2) #define PI (3.14159265358979323846264338327) #define SQ2 (sqrt(2)) #define SQ3 (sqrt(3)) bool eq(double a, double b) { return a+0.00001>=b&&b+0.00001>=a; } bool eqt(double a1, double a2, double a3, double b1, double b2, double b3) { //printf("Tri: {%lf, %lf, %lf}, {%lf, %lf, %lf}\n", a1, a2, a3, b1, b2, b3); return eq(a1, b1)? eq(a2, b2)? eq(a3, b3):eq(a2, b3)&&eq(a3, b2):eq(a1, b2)? eq(a2, b3)? eq(a3, b1):eq(a2, b1)&&eq(a3, b3):eq(a1, b3)&&(eq(a2, b1)? eq(a3, b2):eq(a2, b3)&&eq(a3, b2)); } class vec { public: double x, y, z; vec() : x(0), y(0), z(0) {} vec(double nx, double ny, double nz) : x(nx), y(ny), z(nz) {} vec operator + (vec o) { return vec(x+o.x, y+o.y, z+o.z); } vec operator - (vec o) { return vec(x-o.x, y-o.y, z-o.z); } double operator * (vec o) { return x*o.x+y*o.y+z*o.z; } vec operator * (double o) { return vec(x*o, y*o, z*o); } vec operator ^ (vec o) { return vec(y*o.z-z*o.y, z*o.x-x*o.z, x*o.y-y*o.x); } double norm() { return sqrt(x*x+y*y+z*z); } }; class vec2 { public: double x, y; vec2() {} vec2(double nx, double ny) : x(nx), y(ny) {} vec2 operator + (vec2 o) { return vec2(x+o.x, y+o.y); } vec2 operator - (vec2 o) { return vec2(x-o.x, y-o.y); } double operator * (vec2 o) { return x*o.x+y*o.y; } vec2 operator * (double o) { return vec2(x*o, y*o); } vec2 operator ~ () { return vec2(y, -x); } double norm() { return sqrt(x*x+y*y); } }; vector<vec> cyclicperm(vector<vec> v) { vector<vec> r; vector<vec>::iterator i; for(i = v.begin(); i!=v.end(); ++i) { r.push_back(*i); r.push_back(vec(i->y, i->z, i->x)); r.push_back(vec(i->z, i->x, i->y)); } return r; } vector<vec> altperm(vector<vec> v) { vector<vec> r; vector<vec>::iterator i; for(i = v.begin(); i!=v.end(); ++i) { r.push_back(*i); r.push_back(vec(i->x, i->z, i->y)); } return r; } vector<vec> signperm(vector<vec> v) { vector<vec> r; vector<vec>::iterator i; for( i = v.begin(); i!=v.end(); ++i ) { int j; for(j = 0; j<8; ++j) if(((j&1)||i->x)&&((j&2)||i->y)&&((j&4)||i->z)) r.push_back(vec(j&1? i->x:-i->x, j&2? i->y:-i->y, j&4? i->z:-i->z)); } return r; } vector<vec> mvvec(double x, double y, double z) { vector<vec> v; v.push_back(vec(x, y, z)); return v; } vector<vec> mvvec(vec q) { vector<vec> v; v.push_back(q); return v; } vector<vec> concat(const vector<vec> a, const vector<vec> b) { vector<vec> r; r = a; r.insert(r.end(), b.begin(), b.end()); return r; } void printvvec(FILE *f, vector<vec> v) { vector<vec>::iterator i; for(i = v.begin(); i!=v.end(); ++i) fprintf(f, tvertex, i->x, i->y, i->z); } void printvveclines(FILE *f, vector<vec> v, double len) { vector<vec>::iterator i, j; len *= len; for(i = v.begin(); i!=v.end(); ++i) for(j = i+1; j!=v.end(); ++j) if(eq((*i-*j)*(*i-*j), len)) fprintf(f, tline, i->x, i->y, i->z, j->x, j->y, j->z); } void printvveclines(FILE *f, vector<vec> v) { vector<vec>::iterator i; for(i = v.begin(); i!=v.end(); i += 2) fprintf(f, tline, i->x, i->y, i->z, (i+1)->x, (i+1)->y, (i+1)->z); } void printvvecdottedlines(FILE *f, vector<vec> v) { vector<vec>::iterator i; int n, m; double s; for(i = v.begin(); i!=v.end(); i += 2) // for(i = v.begin(); i!=v.begin()+12; i += 2) { s = (*i-*(i+1)).norm(); m = (int)(s/0.04+.5); s = 1./(double)m; for(n = 1; n<m; ++n) { vec c = *i+(*(i+1)-*i)*(s*n); fprintf(f, tvertex, c.x, c.y, c.z); } } } void printvvectriangles(FILE *f, vector<vec> v, double len1, double len2, double len3) { vector<vec>::iterator i, j, k; len1 *= len1; len2 *= len2; len3 *= len3; for(i = v.begin(); i!=v.end(); ++i) for(j = i+1; j!=v.end(); ++j) for(k = j+1; k!=v.end(); ++k) if(eqt((*i-*j)*(*i-*j), (*j-*k)*(*j-*k), (*k-*i)*(*k-*i), len1, len2, len3)) fprintf(f, ttriangle, i->x, i->y, i->z, j->x, j->y, j->z, k->x, k->y, k->z); } void printvvectriangles(FILE *f, vector<vec> v) { vector<vec>::iterator i; for(i = v.begin(); i!=v.end(); i += 3) //i = v.begin(); fprintf(f, ttriangle, i->x, i->y, i->z, (i+1)->x, (i+1)->y, (i+1)->z, (i+2)->x, (i+2)->y, (i+2)->z); /*i += 3; fprintf(f, ttriangle, i->x, i->y, i->z, (i+1)->x, (i+1)->y, (i+1)->z, (i+2)->x, (i+2)->y, (i+2)->z); i += 3; fprintf(f, ttriangle, i->x, i->y, i->z, (i+1)->x, (i+1)->y, (i+1)->z, (i+2)->x, (i+2)->y, (i+2)->z); i += 3; fprintf(f, ttriangle, i->x, i->y, i->z, (i+1)->x, (i+1)->y, (i+1)->z, (i+2)->x, (i+2)->y, (i+2)->z); i += 3; fprintf(f, ttriangle, i->x, i->y, i->z, (i+1)->x, (i+1)->y, (i+1)->z, (i+2)->x, (i+2)->y, (i+2)->z); i += 3; fprintf(f, ttriangle, i->x, i->y, i->z, (i+1)->x, (i+1)->y, (i+1)->z, (i+2)->x, (i+2)->y, (i+2)->z); */} void SmallStellatedDodecahedron() { vector<vec> v; v = cyclicperm(signperm(mvvec(vec(0, PHI, 1)*(1/sqrt(PHI+2))))); FILE *f; f = fopen("SmallStellatedDodecahedron.pov", "wb"); fprintf(f, theader, 22491); printvvec(f, v); printvveclines(f, v, 2*PHI*(1/sqrt(PHI+2))); fprintf(f, tstartmesh); v = concat(v, cyclicperm(signperm(mvvec(vec(0, 2-PHI, 1)*(1/sqrt(PHI+2)))))); v = concat(v, signperm(mvvec(vec(PHI-1, PHI-1, PHI-1)*(1/sqrt(PHI+2))))); printvvectriangles(f, v, (2*PHI-2)*(1/sqrt(PHI+2)), (2*PHI-2)*(1/sqrt(PHI+2)), (4-2*PHI)*(1/sqrt(PHI+2))); fprintf(f, tendmesh); fprintf(f, tfooter); fclose(f); } void GreatStellatedDodecahedron() { vector<vec> v; v = concat(signperm(mvvec(vec(1, 1, 1)*(1/SQ3))), cyclicperm(signperm(mvvec(vec(0, PHI, 1/PHI)*(1/SQ3))))); FILE *f; f = fopen("GreatStellatedDodecahedron.pov", "wb"); fprintf(f, theader, 7409);//7412); printvvec(f, v); printvveclines(f, v, 2*PHI*(1/SQ3)); fprintf(f, tstartmesh); v = concat(v, cyclicperm(signperm(mvvec(vec(0, 2-PHI, PHI-1)*(1/SQ3))))); printvvectriangles(f, v, (2*PHI-2)*(1/SQ3), (2*PHI-2)*(1/SQ3), (4-2*PHI)*(1/SQ3)); fprintf(f, tendmesh); fprintf(f, tfooter); fclose(f); } void GreatDodecahedron() { vector<vec> v; v = cyclicperm(signperm(mvvec(vec(0, PHI, 1)*(1/sqrt(PHI+2))))); FILE *f; f = fopen("GreatDodecahedron.pov", "wb"); fprintf(f, theader, 11404); printvveclines(f, v, 2*(1/sqrt(PHI+2))); v = concat(v, concat(signperm(mvvec(vec(PHI-1, PHI-1, PHI-1)*(1/sqrt(PHI+2)))), cyclicperm(signperm(mvvec(vec(0, 2-PHI, 1)*(1/sqrt(PHI+2))))))); printvvec(f, v); fprintf(f, tstartmesh); printvvectriangles(f, v, (2*PHI-2)*(1/sqrt(PHI+2)), (2*PHI-2)*(1/sqrt(PHI+2)), (2)*(1/sqrt(PHI+2))); fprintf(f, tendmesh); fprintf(f, tfooter); fclose(f); } vector<vec> IcosaParse(const char *vs) { vector<vec> v, p; v = cyclicperm(signperm(mvvec(vec(0, PHI, 1)))); vec av; vector<vec>::iterator i, j, k; int q; static const vec2 rats[9] = {vec2(1, 0), vec2(PHI-1, 2-PHI), vec2(2-PHI, PHI-1), vec2(0, 1), vec2(0, PHI-1), vec2(0, 2-PHI), vec2(0, 0), vec2(2-PHI, 0), vec2(PHI-1, 0)}; for(i = v.begin(); i!=v.end(); ++i) for(j = v.begin(); j!=v.end(); ++j) for(k = v.begin(); k!=v.end(); ++k) if(eqt((*i-*j).norm(), (*j-*k).norm(), (*k-*i).norm(), 2, 2, 2)&&(*i^*j)**k>0) { vec t3 = *i*PHI*PHI+*j*PHI*PHI-*k*PHI*PHI*PHI, t1 = *j*PHI*PHI+*k*PHI*PHI-*i*PHI*PHI*PHI, t2 = *k*PHI*PHI+*i*PHI*PHI-*j*PHI*PHI*PHI; for(q = 0; vs[q]; ) { if(vs[q]<48) break; if(vs[q+1]<48) { p = concat(p, mvvec(t3+(t1-t3)*rats[vs[q]-'0'].x+(t2-t3)*rats[vs[q]-'0'].y)); q += 2; continue; } if(vs[q+4]<48) { vec2 a = rats[vs[q]-'0'], b = rats[vs[q+1]-'0'], c = rats[vs[q+2]-'0'], d = rats[vs[q+3]-'0']; double idet = 1/((a-b).x*(d-c).y-(a-b).y*(d-c).x); //fprintf(stderr, "%lf, %lf %lf, %lf %lf\n", (a-b).x, (d-c).x, (a-b).y, (d-c).y, idet); vec2 e = vec2(vec2((d-c).y, (d-c).x*-1)*(d-b), vec2((a-b).y*-1, (a-b).x)*(d-b))*idet; vec2 r = (a-b)*e.x+b; //fprintf(stderr, "%lf, %lf %lf, %lf %lf\n", r.x, r.y, t1.x, t1.y, idet); //fprintf(stderr, "(a-b)={%lf, %lf}, x=%lf, b={%lf, %lf}, e={%lf, %lf}\n(c-d)={%lf, %lf}, y=%lf, d={%lf, %lf}, e={%lf, %lf}\n", //(a-b).x, (a-b).y, e.x, b.x, b.y, ((a-b)*e.x+b).x, ((a-b)*e.x+b).y, //(c-d).x, (c-d).y, e.y, d.x, d.y, ((c-d)*e.y+d).x, ((c-d)*e.y+d).y //); //fprintf(stderr, "%lf %lf\n", r.x, r.y); p = concat(p, mvvec(t3+(t1-t3)*r.x+(t2-t3)*r.y)); av = av+(t3+(t1-t3)*r.x+(t2-t3)*r.y); //p = concat(p, mvvec(vec())); q += 5; continue; } break; } } //printf("%lf %lf %lf\n", av.x, av.y, av.z); double r = 0; for(i = p.begin(); i!=p.end(); ++i) //i = p.begin(); if(r<i->norm()) r = i->norm(); for(i = p.begin(); i!=p.end(); ++i) *i = *i*(1/r); return p; } void StellatedIcosahedron(const char *fn, int rs, const char *vs, const char *ls, const char *dls, const char *ts) { vector<vec> v; FILE *f; f = fopen(fn, "wb"); fprintf(f, theader, rs); printvvec(f, IcosaParse(vs)); printvvecdottedlines(f, IcosaParse(dls)); printvveclines(f, IcosaParse(ls)); fprintf(f, tstartmesh); printvvectriangles(f, IcosaParse(ts)); fprintf(f, tendmesh); fprintf(f, tfooter); fclose(f); } int main() { SmallStellatedDodecahedron(); GreatStellatedDodecahedron(); GreatDodecahedron(); StellatedIcosahedron("GreatIcosahedron.pov", 31234, "0 1 2 0417 1428 2538 ", "0 3 ", "0 0417 0417 1 1 1428 1428 2 2 2538 2538 3 ", "0 1 0417 1 2 1428 2 3 2538 "); StellatedIcosahedron("CompoundOfFiveTetrahedra.pov", 22113, "2 2514 1427 2715 1528 ", "2 5 ", "2 2 2514 1427 1427 2715 2715 1528 ", "2 2514 1427 2 2715 1528 "); return 0; }
Items portrayed in this file
përshkruan
Historiku skedës
Shtypni mbi një datë/kohë për ta parë skedën siç ishte atëherë.
Data/Koha | Miniaturë | Përmasat | Përdoruesi | Koment | |
---|---|---|---|---|---|
e tanishme | 19 dhjetor 2005 21:15 | 853 × 794 (231 KB) | Cyp | Replacing missing pixels - cropped too small by one pixel on each edge. | |
17 dhjetor 2005 21:30 | 851 × 792 (231 KB) | Cyp | Great stellated dodecahedron, rendered with POVRay |
Lidhje skedash
Këto faqe lidhen tek kjo skedë:
Përdorimi global i skedës
Kjo skedë përdoret nga Wiki të tjera në vijim:
- Përdorimi në as.wikipedia.org
- Përdorimi në bn.wikipedia.org
- Përdorimi në ca.wikipedia.org
- Përdorimi në cy.wikipedia.org
- Përdorimi në el.wikipedia.org
- Përdorimi në en.wikipedia.org
- Përdorimi në eo.wikipedia.org
- Përdorimi në es.wikipedia.org
- Përdorimi në eu.wikipedia.org
- Përdorimi në fi.wikipedia.org
- Përdorimi në fr.wikipedia.org
- Përdorimi në id.wikipedia.org
- Përdorimi në it.wikipedia.org
- Përdorimi në ja.wikipedia.org
- Përdorimi në ko.wikipedia.org
- Përdorimi në no.wikipedia.org
- Përdorimi në pt.wikipedia.org
- Përdorimi në ro.wikipedia.org
- Përdorimi në ru.wikipedia.org
- Përdorimi në sl.wikipedia.org
Shikoni më shumë përdorim global të kësaj skede.
Metadata
Kjo skedë përmban hollësira të tjera të cilat mund të jenë shtuar nga kamera ose skaneri dixhital që është përdorur për ta krijuar.
Në qoftë se skeda është ndryshuar nga gjendja origjinale, disa hollësira mund të mos pasqyrojnë versionin e tanishëm.
_error | 0 |
---|