एक क्रिसमस स्टार / Stellated Dodecahedron ड्रा करें


10

क्रिसमस पर मेरे परिवार में पेपर स्टार एक बड़ी चीज है, इसलिए मैंने सोचा कि एक आभासी शांत होगा।

नीचे एक नियमित dodecahedron की छवि है ( https://en.wikipedia.org/wiki/Dodecahedron से , जो वहां उल्लिखित लेखक के लिए जिम्मेदार है।)

यहाँ छवि विवरण दर्ज करें

एक पॉलीहेड्रॉन पर लागू होने पर स्टेलिनेशन (विकिपीडिया) की प्रक्रिया में अन्य चेहरे को पार करने तक चेहरे को शामिल करना शामिल है। इस प्रकार नियमित डोडेकाहेड्रोन से शुरू करते हुए, हम निम्नलिखित आकार प्राप्त करते हैं:

छोटा स्टेल्टेड डोडेकाहेड्रोन, ग्रेट डोडाकेरडॉन और ग्रेट स्टेलेटेड डोडेकेरडन

Http://jwilson.coe.uga.edu/emat6680fa07/thrash/asn1/stellations.html से छवि

यहाँ छवि विवरण दर्ज करें

ये डोडेकेहेड्रॉन (वोल्फ्राम) के तीन संभावित स्टेलेशन हैं । वे डोडेकाड्रोन से एक प्राकृतिक प्रगति बनाते हैं, छोटे डोडेकेहेड्रोन, महान डोडेकाहेड्रोन और महान स्टेल्टेड डोडेकेर्रॉन के रूप में, हम चेहरे को आगे और आगे बढ़ाते हैं।

कार्य

आपके प्रोग्राम या फ़ंक्शन को निम्नलिखित पॉलीहेड्रा में से किसी एक छवि फ़ाइल को प्रदर्शित या आउटपुट करना चाहिए: रेगुलर डोडेकेहेड्रॉन, स्मॉल स्टेलेटेड डोडेकेरडॉन, ग्रेट डोडेकेहेड्रॉन या ग्रेट स्टेलेटेड डोडेकेरॉन

रंग योजना ऊपर की दूसरी छवि के रूप में होनी चाहिए। विपरीत चेहरों के छह जोड़े में से प्रत्येक छह रंगों में से एक होगा लाल, पीला, हरा, सियान, नीला और मैजेंटा। आप अपनी भाषा या इसके दस्तावेज़ीकरण में इन नामों के साथ डिफ़ॉल्ट रंगों का उपयोग कर सकते हैं, या FF0000, FFFF00, 00FF00, 00FFFF, 0000FF और FF00FF रंगों का उपयोग कर सकते हैं (यदि वांछित हो तो आप इनकी तीव्रता को कम से कम 75% तक कम कर सकते हैं) उदाहरण के लिए सी के लिए एफ को कम करके।)

ध्यान दें कि हम एक "चेहरे" को एक ही विमान में सभी क्षेत्रों के रूप में परिभाषित करते हैं। इस प्रकार सामने की छवि के ऊपर का रंग पीला है (और समानांतर पिछला चेहरा भी पीला होगा।)

बैकग्राउंड काला, ग्रे या सफेद होना चाहिए। किनारों को छोड़ा जा सकता है, लेकिन खींचा जाने पर काला होना चाहिए।

नियम

प्रदर्शित पॉलीहेड्रॉन 500 और 1000 पिक्सेल चौड़ाई के बीच होना चाहिए (चौड़ाई को किसी भी दो प्रदर्शित कोने के बीच अधिकतम दूरी के रूप में परिभाषित किया गया है।)

प्रदर्शित पॉलीहेड्रॉन को परिप्रेक्ष्य प्रक्षेपण (पॉलीहेड्रॉन से कम से कम 5 चौड़ाई दूर), या ऑर्थोग्राफ़िक प्रक्षेपण (प्रभावी रूप से अनंत पर दृष्टिकोण के साथ एक परिप्रेक्ष्य प्रक्षेपण) होना चाहिए।

पॉलीहेड्रोन को किसी भी कोण से प्रदर्शित किया जाना चाहिए। (यह सबसे आसान संभव कोण लेने और हार्डकोडेड 2 डी आकार बनाने के लिए स्वीकार्य नहीं है।) उपयोगकर्ता द्वारा निम्नलिखित में से किसी भी तरीके से कोण को निर्दिष्ट किया जा सकता है:

  1. स्टड से, या फ़ंक्शन या कमांडलाइन मापदंडों के अनुसार, तीन घुमावों के अनुरूप तीन कोणों का इनपुट। ये या तो यूलर एंगल्स हो सकते हैं (जहां पहला और आखिरी घुमाव एक ही धुरी के बारे में होता है) या टैट-ब्रायन कोण (जहां x, y और z अक्ष के बारे में एक-एक रोटेशन होता है) https://en.wikipedia.org/ wiki / Euler_angles (सीधे शब्दों में कहें तो कुछ भी इतना लंबा चलता है कि प्रत्येक घुमाव x, y, या z अक्ष के बारे में हो और लगातार घूर्णन लंबवत अक्षों के बारे में हो।)

  2. उपयोगकर्ता के लिए एक्स और वाई कुल्हाड़ियों के बारे में 10 डिग्री से अधिक नहीं के चरणों में पॉलीहेड्रॉन को घुमाने और प्रदर्शन को ताज़ा करने, किसी भी समय की मनमानी संख्या (स्क्रीन पर z अक्ष लंबवत मानते हुए) की सुविधा।

पॉलीहेड्रॉन ठोस होना चाहिए, न कि वायरफ्रेम।

पॉलीहेड्रा ड्राइंग के लिए कोई भी निर्माण की अनुमति नहीं है (मैं आपको देख रहा हूं, गणितज्ञ!)

स्कोरिंग

यह कोडगोल्फ है। बाइट्स में सबसे छोटा कोड जीतता है।

बोनस

यदि आप 3D ड्राइंग के लिए बिल्डिंस का उपयोग नहीं करते हैं, तो अपने स्कोर को 0.5 से गुणा करें।

अपने स्कोर को 0.7 से गुणा करें यदि आप डोडेकाहेड्रोन के सभी तीनों को प्रदर्शित कर सकते हैं, तो उपयोगकर्ता द्वारा चयन किया जा सकता है, जो स्टेंडर से दर्ज किए गए पूर्णांक 1-3 द्वारा या फ़ंक्शन या कमांडलाइन पैरामीटर द्वारा।

यदि आप दोनों बोनस के लिए जाते हैं तो आपका स्कोर 0.5 * 0.7 = 0.35 से गुणा किया जाएगा

उपयोगी जानकारी (नीचे दिए गए स्रोत)

https://en.wikipedia.org/wiki/Regular_dodecahedron

https://en.wikipedia.org/wiki/Regular_icosahedron

डोडेकेहेड्रोन में 20 कोने हैं। उनमें से 8 निम्नलिखित कार्टेशियन (एक्स, वाई, जेड) निर्देशांक के साथ एक क्यूब के कोने बनाते हैं:

() 1, ± 1, ± 1)

शेष 12 इस प्रकार हैं (फी स्वर्णिम अनुपात है)

(0, ± 1 / φ,, ±)

(Φ 1 / φ, ± ±, 0)

(Φ φ, 0, ± 1 / φ)

छोटे स्टेललेटेड डोडाकेर्रॉन और महान डोडेकाहेड्रोन के उत्तल पतवार स्पष्ट रूप से एक नियमित डोडेकेरेड्रॉन हैं। बाहरी कोने एक इकोसैड्रोन का वर्णन करते हैं।

विकिपीडिया के अनुसार एक इकोसैहेड्रोन के 12 शीर्षकों को इसी तरह से वर्णित किया जा सकता है (0, 0 1, os an) के चक्रीय क्रमपरिवर्तन के रूप में। छोटे उपजी डोडेकेरॉन और महान डोडेखेड्रॉन (ऊपर के डोडेकेर्रोन के समान पैमाने पर) के बाहरी कोने एक बड़ा इकोसैड्रोन बनाते हैं, जहां कोने के निर्देशांक चक्रीय क्रमपरिवर्तन होते हैं (0, the φ ^ 2, ± the)।

डोडेकाहेड्रोन और आइकोसैहेड्रोन के लिए चेहरे के बीच के कोण क्रमशः 2 आर्कटन (phi) और arccos (- (√5) / 3) हैं।

घूमने की युक्तियों के लिए, https://en.wikipedia.org/wiki/Rotation_matrix देखें

संपादित करें: गलती से मैंने नियमित डोडेकाहेड्रॉन की अनुमति दी है, और अब इसे वापस नहीं ले सकता। स्टेल्टेड पॉलीहेड्रा के सभी तीनों को खींचने के लिए x0.7 बोनस रहता है। नए साल के दिन मैं उस उत्तर के लिए 100 का इनाम जारी करूंगा जो कि चार पॉलीहेड में से सबसे अधिक प्रदर्शित कर सकता है, टाई ब्रेक के रूप में सबसे छोटा कोड।


@ पॉलीहेड्रा (जैसे dodecahedron) ड्राइंग के लिए LegionMammal978 बिल्डिंस को बंद कर दिया गया है। कुछ भाषाओं में कमांड जैसे 3D मॉडल बनाने की सुविधा है triangle[[a,b,c],[p,q,r],[x,y,z]]। इन भाषाओं में आम तौर पर मॉडल को घुमाने और प्रदर्शित करने के लिए बिल्डिंस होते हैं, स्वचालित रूप से छिपे हुए चेहरे आदि को प्रदर्शित नहीं करने का ख्याल रखते हैं, इन जैसे समाधानों की अनुमति है लेकिन बोनस को आकर्षित नहीं करेगा। बोनस का उद्देश्य उन भाषाओं को अनुमति देना है जिनके पास ये सुविधाएं प्रतिस्पर्धी नहीं हैं, और अधिक दिलचस्प समाधानों को आकर्षित करने के लिए भी।
लेवल रिवर सेंट

@ LegionMammal978 haha, मुझे पता था कि गणितज्ञ समस्याएँ पैदा करने वाली भाषा होगी। Polyhedrondataयह अस्वीकृत है क्योंकि यह स्पष्ट रूप से पॉलीहेड्रा बनाने के लिए एक बिलिन है। यदि आपका जवाब पॉलीहेड्रा ड्राइंग के लिए बिल्डरों का उपयोग नहीं करता है, और अन्य नियमों का अनुपालन करता है, तो यह स्वीकार्य है। आपकी बात से लगता है कि इस तथ्य को देखते हुए कि आपको चेहरों को सही ढंग से रंगना है, Polyhedrondataवैसे भी आपको ज्यादा नहीं बचाएंगे, इसलिए यह व्यवहार में कुछ हद तक मनमाना प्रतिबंध हो सकता है। मैं एक हद तक सहमत हूं, लेकिन यह सभी के लिए उचित है अगर मैं पोस्ट करने के बाद नियमों को बदलने से बचता हूं।
लेवल रिवर सेंट

जवाबों:


3

पायथन 2.7, 949 बाइट्स

यहाँ matplotlib का उपयोग करके प्लॉट किए गए नियमित डोडेकाहेड्रोन के लिए समाधान है। असमतल कोड (यहाँ नहीं दिखाया गया) के लिए किसी न किसी की रूपरेखा नीचे दी गई है:

  • कोने बनाएं किनारे बनाएं (3 निकटतम पड़ोसियों पर आधारित, मॉड्यूल scipy.spatial.KDtree)
  • लंबाई 5 (मॉड्यूल नेटवर्कएक्स) के साथ ग्राफ चक्र के आधार पर चेहरे बनाएं
  • चेहरे बनाएं (और सामान्य, numpy.cross का सामना करने वाले बाहरी लोगों का चयन करें)
  • चेहरे के मानदंडों के आधार पर रंग उत्पन्न करें
  • Matplotlib का उपयोग करके प्लॉटिंग
import itertools as it
import numpy as np
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
import matplotlib.pyplot as plt
v=[p for p in it.product((-1,1),(-1,1),(-1,1))]
g=.5+.5*5**.5
v.extend([p for p in it.product((0,),(-1/g,1/g),(-g,g))])
v.extend([p for p in it.product((-1/g,1/g),(-g,g),(0,))])
v.extend([p for p in it.product((-g,g),(0,),(-1/g,1/g))])
v=np.array(v)
g=[[12,14,5,9,1],[12,1,17,16,0],[12,0,8,4,14],[4,18,19,5,14],[4,8,10,6,18],[5,19,7,11,9],[7,15,13,3,11],[7,19,18,6,15],[6,10,2,13,15],[13,2,16,17,3],[3,17,1,9,11],[16,2,10,8,0]]
a=[2,1,0,3,4,5,0,1,2,3,4,5]
fig = plt.figure()
ax = fig.add_subplot((111),aspect='equal',projection='3d')
ax.set_xlim3d(-2, 2)
ax.set_ylim3d(-2, 2)
ax.set_zlim3d(-2, 2)
for f in range(12):
 c=Poly3DCollection([[tuple(y) for y in v[g[f],:]]], linewidths=1, alpha=1)
 c.set_facecolor([(0,0,1),(0,1,0),(0,1,1),(1,0,0),(1,0,1),(1,1,0)][a[f]])
 ax.add_collection3d(c)
ax.auto_scale_xyz
plt.show()

यहाँ छवि विवरण दर्ज करें


3

रूबी, 784 बाइट्स * 0.5 * 0.7 = 274.4

मेरा अपना जवाब, इसलिए मेरे इनाम के योग्य नहीं है।

गैर-3D बिलिन बोनस और ड्राइंग सभी स्टेलिनेशन बोनस दोनों के लिए योग्य।

->t,n{o=[]
g=->a{a.reduce(:+)/5}
f=->u,v,w,m{x=u.dup;y=v.dup;z=w.dup
15.times{|i|k,l=("i".to_c**(n[i/5]/90.0)).rect
j=i%5
x[j],y[j],z[j]=y[j],x[j]*k+z[j]*l,z[j]*k-x[j]*l}
p=g[x];q=g[y];r=g[z]
a=[0,1,-i=0.382,-1][t]*e=r<=>0
b=[j=1+i,0,j,j][t]*e
c=[-i*j,-i,1,i][t]*e
d=[j*j,j,0,0][t]*e
5.times{|i|o<<"<path id=\"#{"%9.0f"%(z[i]*a+r*b+(z[i-2]+z[i-3])*c+2*r*d+999)}\"
d=\"M#{(x[i]*a+p*b)} #{(y[i]*a+q*b)}L#{(x[i-2]*c+p*d)} #{(y[i-2]*c+q*d)}L#{(x[i-3]*c+p*d)} #{(y[i-3]*c+q*d)}\"
fill=\"##{m}\"/>"}}
a=233
b=377
z=[0,a,b,a,0]
y=[a,b,0,-b,-a]
x=[b,0,-a,0,b]
w=[-b,0,a,0,-b]
f[x,y,z,'F0F']
f[w,y,z,'0F0']
f[y,z,x,'00F']
f[y,z,w,'FF0']
f[z,x,y,'F00']
f[z,w,y,'0FF']
s=File.open("p.svg","w")
s.puts'<svg xmlns="http://www.w3.org/2000/svg" viewBox="-450 -450 900 900">',o.sort,'</svg>'
s.close}

फ़ंक्शन पैरामीटर के रूप में इनपुट

नियमित पूर्ण dodecahedron के लिए एक पूर्णांक 0..3, छोटे बासी dodecahedron, महान बासी dodecahedron

एक्स, वाई और एक्स (फिर से) कुल्हाड़ियों (उचित यूलर कोण) के बारे में रोटेशन के लिए डिग्री कोणों के अनुरूप तीन पूर्णांकों की एक सरणी, जो किसी भी रोटेशन को प्राप्त करने में सक्षम करती है।)

एक फ़ाइल को आउटपुट करें जो p.svgवेब ब्राउज़र में प्रदर्शित किया जा सकता है।

व्याख्या

कोड के तल पर स्थित सरणियाँ x, y, z में एक छोटे से स्टेललेटेड डोडेकाहेड्रोन के एक चेहरे के बाहरी बिंदुओं के निर्देशांक होते हैं। यह इकोसैहेड्रॉन में अंकित किया जा सकता है, जिनके 12 कोने को (+/- 377, + / - 233, + / - 0) के चक्रीय क्रमपरिवर्तन द्वारा परिभाषित किया गया है। ध्यान दें कि 377 और 233 लगातार फाइबोनैचि संख्याएं हैं और इसलिए 377/233 सुनहरे अनुपात के लिए एक उत्कृष्ट सन्निकटन है।

एक अतिरिक्त सरणी w में x समतल में -1 के गुणा x निर्देशांक सम्‍मिलित है। X, y, z और w, y, z के विभिन्न चक्रीय क्रमपरिवर्तन के साथ, प्रत्येक रंग के लिए एक बार, 6 बार फंक्शन एफ कहा जाता है।

तीन घुमाव n [] में मापदंडों के रूप में पारित किए जाते हैं। रूबी में पाप और कॉस का उपयोग करने के लिए, यह करना आवश्यक है include Math। इससे बचने के लिए, कोण के कोसाइन और साइन को -1 की वर्गमूल की "i"शक्ति को बढ़ाकर प्राप्त किया जाता है (डिग्री / 90 में कोण) इस संख्या के वास्तविक और काल्पनिक भागों को k (कोसाइन) और l में संग्रहीत किया जाता है ( साइन)

रोटेशन से पहले, एक्स और वाई मूल्यों का आदान-प्रदान किया जाता है। फिर x अक्ष के बारे में घुमाव देने के लिए y और z मानों पर मैट्रिक्स गुणन लागू किया जाता है। मूल्यों का आदान-प्रदान तीन घुमावों को लूप में ले जाने में सक्षम बनाता है।

अब तक, हमारे पास केवल एक ही अंक है। बाकी को प्राप्त करने के लिए, हमें पेंटागन / स्टार का केंद्र खोजने की आवश्यकता है। यह 5 कोने के निर्देशांक का औसत ज्ञात करके किया जाता है, जो पी, क्यू, आर में संग्रहीत होते हैं।

जैसा कि पहले उल्लेख किया गया है, प्रति रंग केवल एक फ़ंक्शन कॉल किया जाता है। R का चिह्न (z निर्देशांक का औसत और इसलिए चेहरे का समन्वय) का परीक्षण किया जाता है। यदि यह सकारात्मक है, तो चेहरा एक सामने वाला चेहरा है और इसलिए दिखाई देता है। यदि यह नकारात्मक है, तो चेहरा एक पिछला चेहरा है। यह अदृश्य है, और हमारे पास विपरीत चेहरे के लिए कोई फ़ंक्शन कॉल नहीं है। इसलिए, सभी तीन निर्देशांक उलटे होने चाहिए। इसे सुविधाजनक बनाने के लिए r का चिन्ह e में संग्रहीत किया जाता है।

चेहरे का निर्माण 5 त्रिकोणों से किया गया है, जिनके कोने छोटे स्टेललेटेड डोडेकाहेड्रोन के बाहरी कोने और चेहरे के केंद्र के रैखिक संयोजन हैं। छोटे स्टेललेटेड डोडाकेर्रोन के मामले में, त्रिभुजों की युक्तियों के लिए हमने a = 1 और b = 0 (x, y, z और 0 से p, q, r) का योगदान 1 निर्धारित किया है। त्रिभुज की 2 आधार रेखाओं के लिए हम c = -0.382 (x, y, z से योगदान 1 / स्वर्ण अनुपात ^ 2) निर्धारित करते हैं और d = 1.382 (p, q, r से योगदान) नकारात्मक योगदान का कारण है। त्रिकोण के आधार कोने को विरोधी युक्तियों के संदर्भ में परिभाषित किया गया है, जो चेहरे के विपरीत तरफ हैं। प्राप्त निर्देशांक को आवश्यक रूप से ई से गुणा किया जाता है।

चार अनाम सरणियाँ जिनके मान नियत a,b,c,ddodecahedron के लिए आवश्यक मान सम्‍मिलित करने के लिए असाइन किए गए हैं, छोटे स्टेल्टेड dodecahedron, महान dodecahedron और महान stellated dodecahedron, वेरिएबल के अनुसार चुने tगए छोटे स्टेल्ड dodecahedron और ग्रेट dodecahedron के लिए नोट किए गए हैं। d = 1। संबंध + b = c + d अन्य आकृतियों पर लागू होता है, लेकिन एक अलग पैमाने पर लागू होता है।

प्रत्येक त्रिकोण के लिए svg कोड की एक लाइन बनाई जाती है। इसमें त्रिभुज के 3 कोने के z निर्देशांक के योग से प्राप्त एक आईडी शामिल है, त्रिकोण के तीन निर्देशांक के कोने का वर्णन और एक रंग। ध्यान दें कि हम orthographic प्रक्षेपण में z अक्ष को सीधे देखते हैं। इस प्रकार 2D x = 3D x और 2D y = 3D y। से लाइन जोड़ी जाती हैh.

अंत में, सभी फ़ंक्शन कॉल समाप्त होने के बाद, h को क्रमबद्ध किया जाता है ताकि उच्चतम z मान के त्रिकोण (सामने) अंतिम प्लॉट किए जाएं, और उपयुक्त शीर्ष लेख और पाद लेख के साथ पूरी बात एक svg फ़ाइल के रूप में सहेजी जाती है।

परीक्षण कार्यक्रम में अपराजित

h=->t,n{                                              #t=type of polygon,n=angles of rotation
o=[]                                                  #array for output
g=->a{a.reduce(:+)/5}                                 #auxiliary function for finding average of 5 points

f=->u,v,w,m{x=u.dup;y=v.dup;z=w.dup                   #function to take 5 points u,v,w and plot one face (5 triangles) of the output in colour m 

  15.times{|i|                                        #for each of 3 rotation angle and 5 points
    k,l=("i".to_c**(n[i/5]/90.0)).rect                #calculate the cos and sine of the angle, by raising sqrt(-1)="i" to a power
    j=i%5                                             #for each of the 5 points
    x[j],y[j],z[j]=y[j],x[j]*k+z[j]*l,z[j]*k-x[j]*l}  #swap x and y, then perform maxtrix rotation on (new) y and z.

  p=g[x];q=g[y];r=g[z]                                #find centre p,q,r of the face whose 5 points (in the case of small stellated dodecahedron) are in x,y,z

  e=r<=>0                                             #if r is positive, face is front. if negative, face is back, so we need to transform it to opposite face.
  a=[0,              1,    -0.382,    -1][t]*e        #contribution of 5 points x,y,z to triangle tip vertex coordinates
  b=[1.382,          0,     1.382,     1.382][t]*e    #contribution of centre p,q,r to triangle tip vertex coordinates
  c=[-0.528,        -0.382, 1,         0.382][t]*e    #contribution of 5 points x,y,z to coordinates of each triangle base vertex 
  d=[1.901,          1.382, 0,         0][t]*e        #contribution of centre p,q,r to coordinates of each triangle base vertex

  5.times{|i|
  o<<"<path id=\"#{"%9.0f"%(z[i]*a+r*b+(z[i-2]+z[i-3])*c+2*r*d+999)}\"
d=\"M#{(x[i]*a+p*b)} #{(y[i]*a+q*b)}L#{(x[i-2]*c+p*d)} #{(y[i-2]*c+q*d)}L#{(x[i-3]*c+p*d)} #{(y[i-3]*c+q*d)}\"
fill=\"##{m}\"/>"}                                    #write svg code for this triangle 
}

  a=233                                               #a,b =coordinate standard values 
  b=377
  z=[0,a,b,a,0]                                       #z coordinates for one face of stellated dodecahedron 
  y=[a,b,0,-b,-a]                                     #y coordinates
  x=[b,0,-a,0,b]                                      #x coordinates
  w=[-b,0,a,0,-b]                                     #alternate  x coordinates

  f[x,y,z,'F0F']                                      #call f
  f[w,y,z,'0F0']                                      #to plot
  f[y,z,x,'00F']                                      #each
  f[y,z,w,'FF0']                                      #face
  f[z,x,y,'F00']                                      #in
  f[z,w,y,'0FF']                                      #turn

  s=File.open("p.svg","w")                            #sort output in o, plot front triangles last
  s.puts'<svg xmlns="http://www.w3.org/2000/svg" viewBox="-450 -450 900 900">',o.sort,'</svg>'
  s.close                                             #add header and footer, and save as svg
}

t=gets.to_i
n=[]
3.times{n<<gets.to_i}
h[t,n]

उत्पादन

छोटे तारांकित डोडेकेहेड्रॉन के लिए (जल्द ही अन्य बहुभुजों की कुछ छवियों को जोड़ देगा)

1,0,0,0 घर की स्थिति

यहाँ छवि विवरण दर्ज करें

1,30,0,0 30 डिग्री नीचे बारी

यहाँ छवि विवरण दर्ज करें

1,0,30,0 बारी बारी से 30 डिग्री (ध्यान दें: एक पूर्ण पक्ष दृश्य के लिए, रोटेशन atan(1/golden ratio)= 31.7 डिग्री होगा, इसलिए हम अभी भी नीले रंग का एक छोटा सा टुकड़ा देख सकते हैं)

यहाँ छवि विवरण दर्ज करें

1,0,20,0 दाएं 20 डिग्री घूमते हैं

यहाँ छवि विवरण दर्ज करें

1,60,10, -63 नीचे, दाएं और ऊपर की ओर घुमाएं (केवल 3 घुमाव के साथ अभिविन्यास का उदाहरण)

यहाँ छवि विवरण दर्ज करें

0,30,0,0 नियमित डोडेकाहेड्रोन

यहाँ छवि विवरण दर्ज करें

2,0,20,0 महान डोडेकाहेड्रोन

यहाँ छवि विवरण दर्ज करें

3,45,45,45 महान डोडेकेरेड्रॉन यहाँ छवि विवरण दर्ज करें


3

गणितज्ञ, 426 424 बाइट्स

Graphics3D[{Red,Yellow,Green,Cyan,Blue,Magenta}~Riffle~(a=Partition)[Polygon/@Uncompress@"1:eJxtkjEKwkAURNeoySYgeAVP4QFsrcTGTiyUBcEith7A2wgKgpVH8/vgs2TYZmAyw9/5k784XDbHVwihnxisU39N9SiEdI8GO/uWHpXBtjFAgJ7HToFl5WabEdJ+anCqDb6dU9RP65NR59EnI0CZDAWYjFmomBmPCn3/hVVwc9s4xYd66wYqFJVvhMz75vWlHIkhG2HBDJ1V3kYps7z7jG6GomIu/QUJKTGkdtlX2pDM8m6pydyzHIOElBhyG6V9cxulzPldaVJ6lpuUkKUTzWcm+0obkrn0f3OT0rMc0jDkD37nlUo="~a~3~a~5,2],Boxed->1<0]

Graphics3Dआकृति प्रदर्शित करने के लिए अंतर्निहित का उपयोग करता है । अधिकांश बाइट्स को संपीड़ित शीर्ष स्थानों द्वारा लिया जाता है, हालांकि, जो तब Partitionद्वारा उपयोग किए जाने वाले फॉर्म में एड होते हैं Polygon। आखिरकार:

ध्यान दें कि इस आकृति को क्लिक करके और खींचकर घुमाया जा सकता है।


OMG, मैं नियमित डोडेकाहेड्रोन को हटाने जा रहा था! जहां तक ​​मैं बता सकता हूं (मुझे नहीं पता है या गणितज्ञ नहीं है) यह नियमों का अनुपालन करता है, इसलिए +1।
लेवल रिवर सेंट

@steveverrill मुझे नहीं लगता कि यह आकार बहुत अधिक बदल जाएगा, लेकिन मैं इसे खरोंच से फिर से लिखना नहीं करना पसंद करूंगा।
लेजियन मम्मल 978

आपका जवाब मान्य है, मैं नियमों को बदलने नहीं जा रहा हूं, यह खराब रूप होगा। हालांकि, तीन स्टेल्ड पॉलीहेड्रा के लिए 0.7 बोनस के अलावा, मैंने इस उत्तर के लिए एक इनाम की पेशकश की है जो चार पॉलीहेड्रा का सबसे अधिक उत्पादन कर सकता है। यदि आपने अपने उत्तर को अपडेट करने का निर्णय लिया है, तो मुझे लगता है कि आप निर्देशांक को गतिशील रूप से उत्पन्न करके बहुत सारे बाइट्स बचा सकते हैं (प्रश्न के उपयोगी जानकारी अनुभाग देखें)।
लेवल रिवर सेंट

@steveverrill, मैं करूंगा, लेकिन जाहिर है, वर्टेक्स स्थानों में क्वार्टिक्स की जड़ें शामिल हैं, और मुझे एक पैटर्न नहीं मिल सकता है।
लेजियम मैमल 978
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.