ट्वीट करने योग्य गणितीय कला [बंद]


330

एक ग्रिड पर रखे जाने पर पूर्णांक गणित अद्भुत पैटर्न उत्पन्न कर सकता है। यहां तक ​​कि सबसे बुनियादी कार्य आश्चर्यजनक डिजाइन तैयार कर सकते हैं!

आपकी चुनौती

एक 1024x1024 छवि के लिए लाल, हरे और नीले मूल्यों के लिए 3 ट्वीट करने योग्य (मतलब 140 वर्ण या उससे कम) फ़ंक्शन बॉडी लिखें।

फ़ंक्शंस का इनपुट दो पूर्णांक i (दिए गए पिक्सेल के लिए कॉलम नंबर) और j (दिए गए पिक्सेल के लिए पंक्ति संख्या) होगा और आउटपुट 0 और 1023 के बीच एक अहस्ताक्षरित छोटा होगा, जो कि दी गई राशि का प्रतिनिधित्व करता है रंग पिक्सेल में मौजूद है (i, j)।

उदाहरण के लिए, निम्नलिखित तीन कार्य नीचे दिए गए चित्र का निर्माण करते हैं:

/* RED */
    return (unsigned short)sqrt((double)(_sq(i-DIM/2)*_sq(j-DIM/2))*2.0);
/* GREEN */
    return (unsigned short)sqrt((double)(
        (_sq(i-DIM/2)|_sq(j-DIM/2))*
        (_sq(i-DIM/2)&_sq(j-DIM/2))
    )); 
/* BLUE */
    return (unsigned short)sqrt((double)(_sq(i-DIM/2)&_sq(j-DIM/2))*2.0);

पैटर्न-1

/* RED */
    return i&&j?(i%j)&(j%i):0;
/* GREEN */
    return i&&j?(i%j)+(j%i):0;
/* BLUE */
    return i&&j?(i%j)|(j%i):0;

पैटर्न -2

नियम

  • इस C ++ कोड को देखते हुए , अपने कार्यों में स्थानापन्न करें। मैंने कुछ मैक्रोज़ प्रदान किए हैं और लाइब्रेरी को शामिल किया है, और आप कॉम्प्लेक्स को शामिल कर सकते हैं। आप इन पुस्तकालयों और / या मेरे मैक्रोज़ से किसी भी फ़ंक्शन का उपयोग कर सकते हैं। कृपया इससे परे किसी भी बाहरी संसाधनों का उपयोग न करें।
  • यदि वह संस्करण आपके लिए काम नहीं कर रहा है, तो सुनिश्चित करें कि आप इसका संकलन कर रहे हैं:

    g++ filename.cpp -std=c++11
    

    यदि वह काम नहीं करता है, तो कृपया बिना शॉर्ट किए हुए शॉर्ट्स के बजाय बिना चार्ट वाले वैकल्पिक संस्करण का उपयोग करें।

माइकल एंजेलो ने 24-बिट या 48-बिट रंग आउटपुट संस्करण को साफ किया है ।

  • आप अपने स्वयं के संस्करण को किसी अन्य भाषा में लागू कर सकते हैं, लेकिन इसे उसी तरह से व्यवहार करना होगा जैसे कि प्रदान किए गए C ++ संस्करण, और केवल C ++ के अंतर्निहित इन्स, लाइब्रेरी या प्रदान किए गए मैक्रोज़ से इसे ठीक करने के लिए उपयोग किया जा सकता है।
  • केवल अपने तीन कार्य निकायों को पोस्ट करें - कृपया अपने कोड को अपने पोस्ट में शामिल न करें
  • कृपया एक छोटा संस्करण या अपनी छवि की एक अंतर्निहित प्रति शामिल करें। वे एक पीपीएम प्रारूप में बने होते हैं और स्टैकएक्सचेंज पर उचित देखने के लिए इसे दूसरे में परिवर्तित करने की आवश्यकता हो सकती है।
  • समारोह निकाय (हस्ताक्षर सहित नहीं) 140 वर्ण या उससे कम का होना चाहिए।
  • यह एक लोकप्रियता प्रतियोगिता है - अधिकांश वोट जीतते हैं

3
C ++ टैग जोड़ा गया क्योंकि नियमों की प्रकृति अन्य भाषाओं को शामिल नहीं करती है। हम आम तौर पर भाषा-अज्ञेय चुनौतियों को पसंद करते हैं जब तक कि उनके पास एक विशिष्ट सेट की आवश्यकता का एक अच्छा कारण न हो।
एल्गोरिथमशार्क

4
करीबी मतदाताओं को यह बहुत व्यापक बताते हुए, कृपया पहले इसका उत्तर लिखने का प्रयास करें। यह आश्चर्यजनक रूप से प्रतिबंधात्मक है ...
trichoplax

8
यह मेरी पसंदीदा चीज़ है जिसे मैंने यहाँ पर देखा है, जैसे, कभी!
डेविड कॉनराड

4
मुझे यह पसंद है कि यह प्रश्न एक पुराने स्कूल के डेमो दृश्य की तरह लगता है।
mskfisher

23
इस प्रकार का प्रश्न कोड गोल्फ में भागीदारी को प्रोत्साहित करता है । मैं आमतौर पर एक सीधे गोल्फ सवाल का जवाब देने के लिए निर्वस्त्र हो जाता हूं क्योंकि मुझे अच्छा करने का भरोसा नहीं है। इस प्रकार के प्रश्न के साथ बाइट की सीमा मुझे एक सरल उत्तर देने की कोशिश करती है, रास्ते में गोल्फ तकनीक सीखती है, और फिर उन्हें कई जटिल उत्तर बनाने के लिए उपयोग करती है। यह सीधे गोल्फ सवालों के जवाब देने में एक कदम पत्थर की तरह है। मुझे लगता है कि यह अधिक लोगों को लाने में महत्वपूर्ण हो सकता है।
ट्रिकोप्लाक्सैक्स

जवाबों:


120

मैंडलब्रोट 3 x 133 वर्ण

पहली बात जो मेरे दिमाग में आई, वह थी "मैंडलब्रॉट!"।

हां, मुझे पता है कि पहले से ही एक मैंडलब्रॉट जमा है। यह पुष्टि करने के बाद कि मैं इसे स्वयं 140 वर्णों से नीचे लाने में सक्षम हूं, मैंने उस समाधान से चालें और अनुकूलन को खान (धन्यवाद मार्टिन और टॉड) में ले लिया है। एक दिलचस्प स्थान और ज़ूम के साथ-साथ एक अच्छा रंग विषय चुनने के लिए वह स्थान छोड़ दिया गया:

मैंडलब्रॉट

unsigned char RD(int i,int j){
   double a=0,b=0,c,d,n=0;
   while((c=a*a)+(d=b*b)<4&&n++<880)
   {b=2*a*b+j*8e-9-.645411;a=c-d+i*8e-9+.356888;}
   return 255*pow((n-80)/800,3.);
}
unsigned char GR(int i,int j){
   double a=0,b=0,c,d,n=0;
   while((c=a*a)+(d=b*b)<4&&n++<880)
   {b=2*a*b+j*8e-9-.645411;a=c-d+i*8e-9+.356888;}
   return 255*pow((n-80)/800,.7);
}
unsigned char BL(int i,int j){
   double a=0,b=0,c,d,n=0;
   while((c=a*a)+(d=b*b)<4&&n++<880)
   {b=2*a*b+j*8e-9-.645411;a=c-d+i*8e-9+.356888;}
   return 255*pow((n-80)/800,.5);
}

कुल 132 वर्ण

मैंने इसे सभी 3 चैनलों के लिए 140 पर लाने की कोशिश की। किनारे के पास थोड़ा रंगीन शोर है, और स्थान पहले वाले के समान दिलचस्प नहीं है, लेकिन: 132 चार्ट

मैंडलब्रॉट कम

unsigned char RD(int i,int j){
  double a=0,b=0,d,n=0;
  for(;a*a+(d=b*b)<4&&n++<8192;b=2*a*b+j/5e4+.06,a=a*a-d+i/5e4+.34);
  return n/4;
}
unsigned char GR(int i,int j){
  return 2*RD(i,j);
}
unsigned char BL(int i,int j){
  return 4*RD(i,j);
}

8
वे रंग भव्य हैं!
मार्टिन एंडर

मैं इस एक प्यार करता हूँ, अभी तक सबसे अच्छी लग रही छवि!
रॉय वैन रिजन

4
यह अब मेरा वॉलपेपर है।
सिफर

209

टेबल कपड़ा

समतल

मैंने एक प्लेड / गिंगहैम पैटर्न को एक असीम टेबल क्लॉथ की तरह परिप्रेक्ष्य में रखना शुरू किया:

unsigned char RD(int i,int j){
    float s=3./(j+99);
    return (int((i+DIM)*s+j*s)%2+int((DIM*2-i)*s+j*s)%2)*127;
}
unsigned char GR(int i,int j){
    float s=3./(j+99);
    return (int((i+DIM)*s+j*s)%2+int((DIM*2-i)*s+j*s)%2)*127;
}
unsigned char BL(int i,int j){
    float s=3./(j+99);
    return (int((i+DIM)*s+j*s)%2+int((DIM*2-i)*s+j*s)%2)*127;
}

फ्लैट टेबल क्लॉथ

लहर

तब मैंने एक लहर पेश की (कड़ाई से सही परिप्रेक्ष्य नहीं, लेकिन अभी भी 140 अक्षरों में):

unsigned char RD(int i,int j){
    float s=3./(j+99);
    float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;
    return (int((i+DIM)*s+y)%2+int((DIM*2-i)*s+y)%2)*127;
}
unsigned char GR(int i,int j){
    float s=3./(j+99);
    float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;
    return (int((i+DIM)*s+y)%2+int((DIM*2-i)*s+y)%2)*127;
}
unsigned char BL(int i,int j){
    float s=3./(j+99);
    float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;
    return (int((i+DIM)*s+y)%2+int((DIM*2-i)*s+y)%2)*127;
}

लहरदार कपड़ा

रंग

फिर मैंने तराजू की एक विस्तृत श्रृंखला पर विस्तार देने के लिए कुछ रंगों को अधिक बारीक किया और चित्र को और अधिक रंगीन बनाने के लिए ...

unsigned char RD(int i,int j){
    float s=3./(j+99);
    float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;
    return (int((i+DIM)*s+y)%2+int((DIM*2-i)*s+y)%2)*127;
}
unsigned char GR(int i,int j){
    float s=3./(j+99);
    float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;
    return (int(5*((i+DIM)*s+y))%2+int(5*((DIM*2-i)*s+y))%2)*127;
}
unsigned char BL(int i,int j){
    float s=3./(j+99);
    float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;
    return (int(29*((i+DIM)*s+y))%2+int(29*((DIM*2-i)*s+y))%2)*127;
}

रंगीन टेबल कपड़ा

गति में

कोड को थोड़ा और अधिक कम करने से 2 दशमलव स्थानों के साथ एक लहर चरण पी को परिभाषित करने की अनुमति मिलती है, जो चिकनी एनीमेशन के लिए पर्याप्त रूप से फ़्रेम के लिए पर्याप्त है। मैंने समुद्री बीमारी से बचने के लिए इस स्तर पर आयाम कम कर दिया है, और छवि के शीर्ष से अलग होने के लिए पुश करने के लिए पूरी छवि को आगे 151 पिक्सल (1 अतिरिक्त चरित्र की कीमत पर) में स्थानांतरित कर दिया है। एनिमेटेड अलियासिंग मंत्रमुग्ध कर रहा है।

unsigned char RD(int i,int j){
#define P 6.03
float s=3./(j+250),y=(j+sin((i*i+_sq(j-700)*5)/100./DIM+P)*15)*s;return (int((i+DIM)*s+y)%2+int((DIM*2-i)*s+y)%2)*127;}

unsigned char GR(int i,int j){
float s=3./(j+250);
float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM+P)*15)*s;
return (int(5*((i+DIM)*s+y))%2+int(5*((DIM*2-i)*s+y))%2)*127;}

unsigned char BL(int i,int j){
float s=3./(j+250);
float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM+P)*15)*s;
return (int(29*((i+DIM)*s+y))%2+int(29*((DIM*2-i)*s+y))%2)*127;}

एनिमेटेड टेबल क्लॉथ


15
यह पौराणिक है। (Y) इसे बनाए रखें। : पी
मोहम्मद अरीब सिद्दीकी

लेकिन वास्तव में प्रस्ताव कैसे लागू किया जाता है? मूल फ्रेमवर्क में तर्क को बदलने वाला कोई फ्रेम नहीं है, है?
एस्टेवि

2
@ Pastewhy अभी भी छवियों का उत्पादन किया जा सकता है। जीआईएफ अभी भी तख्ते का एक क्रम दिखाता है, जिनमें से प्रत्येक को बाद में मूल्य बदलकर उत्पादित किया गया था #define P। इसके लिए अतिरिक्त वर्णों की अनुमति देने के लिए नीचे गोल्फिंग की आवश्यकता थी #define P 6.03
ट्राइकोप्लाक्स

4
रुकें! क्या आप वास्तव में शीर्ष उत्तर को उभारना चाहते हैं? वहाँ कुछ कर रहे हैं अब तक और अधिक दिलचस्प लोगों को यदि आप अगले दो पृष्ठों के माध्यम से नीचे स्क्रॉल करें।
ट्राइकोप्लाक्स

1
मैं "सबसे पुराने" द्वारा उत्तर छाँटने की सलाह देता हूँ और फिर आप देख सकते हैं कि नए उत्तर के रूप में नए दृष्टिकोण कैसे विकसित हुए।
ट्राइकोप्लाक्स

192

यादृच्छिक चित्रकार

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

char red_fn(int i,int j){
#define r(n)(rand()%n)
    static char c[1024][1024];return!c[i][j]?c[i][j]=!r(999)?r(256):red_fn((i+r(2))%1024,(j+r(2))%1024):c[i][j];
}
char green_fn(int i,int j){
    static char c[1024][1024];return!c[i][j]?c[i][j]=!r(999)?r(256):green_fn((i+r(2))%1024,(j+r(2))%1024):c[i][j];
}
char blue_fn(int i,int j){
    static char c[1024][1024];return!c[i][j]?c[i][j]=!r(999)?r(256):blue_fn((i+r(2))%1024,(j+r(2))%1024):c[i][j];
}

यहाँ एक यादृच्छिकता-आधारित प्रविष्टि है। लगभग 0.1% पिक्सेल के लिए यह एक यादृच्छिक रंग चुनता है, दूसरों के लिए यह एक यादृच्छिक आसन्न पिक्सेल के समान रंग का उपयोग करता है। ध्यान दें कि प्रत्येक रंग स्वतंत्र रूप से ऐसा करता है, इसलिए यह वास्तव में एक यादृच्छिक हरे, नीले और लाल चित्र का एक ओवरले है। विभिन्न रन पर अलग-अलग परिणाम पाने के लिए आपको जोड़ने की आवश्यकता होगी srand(time(NULL))करने के लिए mainकार्य करते हैं।

अब कुछ बदलावों के लिए।

पिक्सल स्किप करने से हम इसे थोड़ा और धुंधला बना सकते हैं।

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

और फिर हम धीरे-धीरे रंगों को बदल सकते हैं, जहां ओवरफ्लो में अचानक परिवर्तन होते हैं जो इस तरह के ब्रश स्ट्रोक की तरह दिखते हैं

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

चीजें जो मुझे समझनी चाहिए:

  • किसी कारण से मैं srandउन कार्यों के भीतर एक segfault प्राप्त किए बिना नहीं रख सकता ।
  • अगर मैं सभी तीन रंगों में समान चलता हूं तो यह थोड़ा और व्यवस्थित हो सकता है।

आप रैंडम वॉक आइसोट्रोपिक भी बना सकते हैं, जैसे

static char c[1024][1024];return!c[i][j]?c[i][j]=r(999)?red_fn((i+r(5)+1022)%1024,(j+r(5)+1022)%1024):r(256):c[i][j];

तुम्हे देने के लिए

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

अधिक यादृच्छिक पेंटिंग

मैंने इसके साथ थोड़ा और अधिक खेला है और कुछ अन्य यादृच्छिक चित्र बनाए हैं। इस चुनौती की सीमाओं के भीतर ये सब संभव नहीं है, इसलिए मैं उन्हें यहां शामिल नहीं करना चाहता। लेकिन आप उन्हें इस imgur गैलरी में देख सकते हैं कि मैंने उन्हें कैसे बनाया, इसके कुछ विवरणों के साथ।

मुझे इन सभी संभावनाओं को एक ढांचे में विकसित करने और इसे GHHub पर डालने का प्रलोभन है। (ऐसा नहीं है कि सामान पहले से मौजूद नहीं है, लेकिन यह वैसे भी मजेदार है!)


12
मैं इन्हे प्यार करता हूॅ। मुझे एहसास नहीं था कि पिक्सेल डेटा तक पहुँच के बिना आसन्न पिक्सेल को ध्यान में रखना संभव होगा - चिकनी काम!
ट्राइकोप्लाक्स

1
मुझे इस पुरानी प्रतियोगिता की बहुत याद दिलाता है, जहाँ नियमों को छवि में हर रंग का पिक्सेल लगाना था।
तेह इंटर्नेट

2
वाह! ये तस्वीरें बिल्कुल खूबसूरत हैं!
raptortech97

1
कूल गैलरी, रेडियल वाले साफ-सुथरे हैं।
तेह इंटर्नेट catz

2
मैं रेप्टार : पोस्ट में अंतिम छवि (आइसोट्रोपिक एक), शीर्ष-दाएं चतुर्थांश देखता हूं ।
टिम पैडरिक

162

कुछ स्वाहिली नुकीली चीजें

हां, मुझे पता था कि इसका नाम क्या है।

कुछ स्वाहिली नुकीली चीजें

unsigned short RD(int i,int j){
    return(sqrt(_sq(73.-i)+_sq(609-j))+1)/(sqrt(abs(sin((sqrt(_sq(860.-i)+_sq(162-j)))/115.0)))+1)/200;
}
unsigned short GR(int i,int j){
    return(sqrt(_sq(160.-i)+_sq(60-j))+1)/(sqrt(abs(sin((sqrt(_sq(86.-i)+_sq(860-j)))/115.0)))+1)/200;
}
unsigned short BL(int i,int j){
    return(sqrt(_sq(844.-i)+_sq(200-j))+1)/(sqrt(abs(sin((sqrt(_sq(250.-i)+_sq(20-j)))/115.0)))+1)/200;
}

संपादित करें: अब उपयोग नहीं करता है powEDIT 2: @PhiNotPi ने बताया कि मुझे एब्स का उपयोग करने की आवश्यकता नहीं है।

आप एक अलग तस्वीर पाने के लिए संदर्भ बिंदुओं को बहुत आसानी से बदल सकते हैं:

कुछ और स्वाहिली नुकीली चीजें

unsigned short RD(int i,int j){
    return(sqrt(_sq(148.-i)+_sq(1000-j))+1)/(sqrt(abs(sin((sqrt(_sq(500.-i)+_sq(400-j)))/115.0)))+1)/200;
}
unsigned short GR(int i,int j){
    return(sqrt(_sq(610.-i)+_sq(60-j))+1)/(sqrt(abs(sin((sqrt(_sq(864.-i)+_sq(860-j)))/115.0)))+1)/200;
}
unsigned short BL(int i,int j){
    return(sqrt(_sq(180.-i)+_sq(100-j))+1)/(sqrt(abs(sin((sqrt(_sq(503.-i)+_sq(103-j)))/115.0)))+1)/200;
}

@ EricTressler ने बताया कि मेरी तस्वीरों में बैटमैन है।

बैटमैन


1
@JayKominek मुझे नहीं पता, मैं तब तक वापस नहीं आया था: d:
cjfaure

2
@JayKominek मुझे मिला। web.archive.org/web/19990221092445/http://www.blorf.com/…
cjfaure

1
@cjfaure ओह वाह! धन्यवाद! ऐसा लगता है कि विवरण का अंतिम संस्करण इस प्रकार है: web.archive.org/web/20031205062033/http://www.blorf.com/~mrad/… और कोड को सोर्सफोर्ज में ले जाया गया। पिछले साल भी अद्यतन! sourceforge.net/projects/libswirlies
Jay Kominek

1
मेरे पसंदीदा में से एक!
केल्विन के शौक

1
यह एक सुंदर है - लेकिन मैं इसे बिल्कुल भी नहीं दोहरा सकता! निकटतम मैं तब प्राप्त कर सकता हूं जब पीपीएम अनुचित तरीके से उत्पन्न होता है (एमएसबी के बजाय एलएसबी) और फिर भी यह विभिन्न रंगों के अल्फा-मिश्रित हलकों की तरह दिखता है।
ड्रीमवर्यर

123

बेशक, एक मैंडलब्रॉट प्रस्तुत करना होगा।

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

char red_fn(int i,int j){
    float x=0,y=0;int k;for(k=0;k++<256;){float a=x*x-y*y+(i-768.0)/512;y=2*x*y+(j-512.0)/512;x=a;if(x*x+y*y>4)break;}return k>31?256:k*8;
}
char green_fn(int i,int j){
    float x=0,y=0;int k;for(k=0;k++<256;){float a=x*x-y*y+(i-768.0)/512;y=2*x*y+(j-512.0)/512;x=a;if(x*x+y*y>4)break;}return k>63?256:k*4;
}
char blue_fn(int i,int j){
    float x=0,y=0;int k;for(k=0;k++<256;){float a=x*x-y*y+(i-768.0)/512;y=2*x*y+(j-512.0)/512;x=a;if(x*x+y*y>4)break;}return k;
}

अब कलर स्कीम को बेहतर बनाने की कोशिश की जा रही है। क्या यह धोखा है अगर मैं गणना को एक मैक्रो के रूप में परिभाषित करता हूं red_fnऔर अन्य दो में उस मैक्रो का उपयोग करता हूं तो मेरे पास हरे और नीले रंग में फैंसी रंग चयन के लिए अधिक वर्ण हैं?

संपादित करें: इन कुछ शेष बाइट्स के साथ सभ्य रंग योजनाओं के साथ आना मुश्किल है। यहाँ एक अन्य संस्करण है:

/* RED   */ return log(k)*47;
/* GREEN */ return log(k)*47;
/* BLUE  */ return 128-log(k)*23;

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

और जीथुफ़ागोसाइट के सुझाव के अनुसार और टॉड लेहमैन के सुधारों के साथ, हम आसानी से छोटे वर्गों को चुन सकते हैं:

उदाहरण के लिए

char red_fn(int i,int j){
    float x=0,y=0,k=0,X,Y;while(k++<256e2&&(X=x*x)+(Y=y*y)<4)y=2*x*y+(j-89500)/102400.,x=X-Y+(i-14680)/102400.;return log(k)/10.15*256;
}
char green_fn(int i,int j){
    float x=0,y=0,k=0,X,Y;while(k++<256e2&&(X=x*x)+(Y=y*y)<4)y=2*x*y+(j-89500)/102400.,x=X-Y+(i-14680)/102400.;return log(k)/10.15*256;
}
char blue_fn(int i,int j){
    float x=0,y=0,k=0,X,Y;while(k++<256e2&&(X=x*x)+(Y=y*y)<4)y=2*x*y+(j-89500)/102400.,x=X-Y+(i-14680)/102400.;return 128-k/200;
}

देता है

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


12
@tomsmeding मुझे कबूल करना है, यह पहली बार है जब मैंने कभी मैंडलब्रॉट सेट को लागू किया है।
मार्टिन एंडर

2
जैसा कि पूर्ण मंडेलब्रोट सेट के रूप में प्रतिष्ठित है (+1, वैसे!), ऐसा लगता है कि आपने मापदंडों को समायोजित करने और गहरे ज़ूम के कुछ आश्चर्यजनक रूप से मुड़ विवरण के साथ उत्तर देने के लिए अपने आप को बस पर्याप्त जगह छोड़ दी है।
ट्राइकोप्लाक्स

1
@githubphagocyte मैं पहले से ही उस बारे में सोचता था, लेकिन अभी तक recompile और rerun को परेशान नहीं किया जा सकता है और हर बार जब तक मैं सभ्य मापदंडों का पता नहीं लगाता हूं, तब तक परिवर्तित हो सकता हूं;)। बाद में ऐसा कर सकते हैं। पहले मैं एक पूरी तरह से अलग समारोह की कोशिश करने के लिए मिला है, हालांकि। ;)
मार्टिन एंडर

2
@githubphagocyte आखिरकार उसको जोड़ने के लिए तैयार हो गया। सलाह के लिये धन्यवाद!
मार्टिन एंडर

2
धन्यवाद @Todd, मैंने उस के साथ अंतिम तस्वीर अपडेट कर दी है। मैंने 25600 पुनरावृत्तियों का उपयोग किया, वह भी काफी लंबा। ;)
मार्टिन एंडर

110

जूलिया सेट करती है

यदि एक मैंडलब्रॉट है, तो एक जूलिया सेट भी होना चाहिए।

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

आप मापदंडों और कार्यों को जोड़कर घंटों खर्च कर सकते हैं, इसलिए यह सिर्फ एक त्वरित है जो सभ्य दिखता है।

मार्टिन की भागीदारी से प्रेरित।

unsigned short red_fn(int i, int j){
#define D(x) (x-DIM/2.)/(DIM/2.)
float x=D(i),y=D(j),X,Y,n=0;while(n++<200&&(X=x*x)+(Y=y*y)<4){x=X-Y+.36237;y=2*x*y+.32;}return log(n)*256;}

unsigned short green_fn(int i, int j){
float x=D(i),y=D(j),X,Y,n=0;while(n++<200&&(x*x+y*y)<4){X=x;Y=y;x=X*X-Y*Y+-.7;y=2*X*Y+.27015;}return log(n)*128;}

unsigned short blue_fn(int i, int j){
float x=D(i),y=D(j),X,Y,n=0;while(n++<600&&(x*x+y*y)<4){X=x;Y=y;x=X*X-Y*Y+.36237;y=2*X*Y+.32;}return log(n)*128;}

क्या आप कुछ आरएनजी चाहेंगे?

ठीक है, स्पियर की टिप्पणी ने मुझे इन छोटे जूलियस के मापदंडों को यादृच्छिक बनाने के लिए ट्रैक पर डाल दिया। मैंने पहली बार बिट-लेवल हैकिंग करने की कोशिश की, time(0)लेकिन सी ++ ने हेक्साडेसिमल फ्लोटिंग पॉइंट लैटरल की अनुमति नहीं दी, इसलिए यह एक डेड-एंड (मेरे सीमित ज्ञान के साथ कम से कम) था। मैं इसे हासिल करने के लिए कुछ भारी कास्टिंग का उपयोग कर सकता था, लेकिन यह 140 बाइट्स में फिट नहीं होगा।

मेरे पास वैसे भी बहुत जगह नहीं बची थी, इसलिए मुझे अपना मैक्रोज़ डालने के लिए लाल जूलिया को गिराना पड़ा और एक अधिक पारंपरिक आरएनजी ( timeडी बीज और असली rand(), वूहो!)।

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

वाह, कुछ याद आ रही है। जाहिर है, इन मापदंडों को स्थिर होना होगा या फिर आपके पास कुछ अजीब परिणाम होंगे (लेकिन मज़ेदार, शायद मैं थोड़ा बाद में जांच करूंगा अगर मुझे बहुत दिलचस्प लगता है)।

तो यहाँ हम केवल हरे और नीले चैनलों के साथ हैं:

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

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

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

अब शून्य को भरने के लिए एक साधारण लाल पैटर्न जोड़ें। वास्तव में कल्पनाशील नहीं है, लेकिन मैं एक ग्राफिक प्रोग्रामर नहीं हूं ... फिर भी :-)

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

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

और अंत में यादृच्छिक मापदंडों के साथ नया कोड:

unsigned short red_fn(int i, int j){
static int n=1;if(n){--n;srand(time(0));}
#define R rand()/16384.-1
#define S static float r=R,k=R;float
return _cb(i^j);}

unsigned short green_fn(int i, int j){
#define D(x) (x-DIM/2.)/(DIM/2.),
S x=D(i)y=D(j)X,Y;int n=0;while(n++<200&&(X=x)*x+(Y=y)*y<4){x=X*X-Y*Y+r;y=2*X*Y+k;}return log(n)*512;}

unsigned short blue_fn(int i, int j){
S x=D(i)y=D(j)X,Y;int n=0;while(n++<200&&(X=x)*x+(Y=y)*y<4){x=X*X-Y*Y+r;y=2*X*Y+k;}return log(n)*512;}

अभी तो कमरा बाकी है ...


क्या आपके पास सरैंड (समय (0) और रैंड ()? या सिर्फ (0) के साथ प्रत्येक रन को रैंडमाइज करने के लिए कमरा है?
Spear

2
वह आखिरी मेरी दीवार पर चल रहा है।
cjfaure

@ आपके सुझाव से अपडेट। कुछ मज़ा आया :-)।
तेह इंटर्नेट 21

4
मैं नहीं बता सकता कि सबसे अधिक क्या पसंद है: आपका उत्तर या आपका उपयोगकर्ता नाम
विलियम बारबोसा

107

यह एक दिलचस्प है क्योंकि यह i, j मापदंडों का बिल्कुल भी उपयोग नहीं करता है। इसके बजाय यह एक स्थिर चर में राज्य को याद करता है।

unsigned char RD(int i,int j){
   static double k;k+=rand()/1./RAND_MAX;int l=k;l%=512;return l>255?511-l:l;
}
unsigned char GR(int i,int j){
   static double k;k+=rand()/1./RAND_MAX;int l=k;l%=512;return l>255?511-l:l;
}
unsigned char BL(int i,int j){
   static double k;k+=rand()/1./RAND_MAX;int l=k;l%=512;return l>255?511-l:l;
}

रंगीन


विभिन्न प्लेटफार्मों / कंपाइलरों पर इस कोड के परिणामों को देखना दिलचस्प होगा। RAND_MAX का मूल्य व्यापक रूप से भिन्न होता है और पूरी तरह से अलग छवियां दे सकता है ...
ट्राइकोप्लेक्स

5
यह बहुत बदलना नहीं चाहिए। (डबल) रैंड () / RAND_MAX हमेशा रेंज [0.0, 1.0] में होना चाहिए।
मैनुअल कस्तेन

2
यह मेरे पसंदीदा में से एक है!
केल्विन के शौक

2
यह न केवल दिलचस्प है - यह सुंदर है!
मार्टिन थोमा

104

छवि

/* RED */
    int a=(j?i%j:i)*4;int b=i-32;int c=j-32;return _sq(abs(i-512))+_sq(abs(j-512))>_sq(384)?a:int(sqrt((b+c)/2))^_cb((b-c)*2);
/* GREEN */
    int a=(j?i%j:i)*4;return _sq(abs(i-512))+_sq(abs(j-512))>_sq(384)?a:int(sqrt((i+j)/2))^_cb((i-j)*2);
/* BLUE */
    int a=(j?i%j:i)*4;int b=i+32;int c=j+32;return _sq(abs(i-512))+_sq(abs(j-512))>_sq(384)?a:int(sqrt((b+c)/2))^_cb((b-c)*2);

3
यह वास्तव में सुंदर है, +1।
मिलो

3
यह मेरा सबसे प्रिय है। यह ग्राफिक डिज़ाइन के पेशेवर रूप से बनाए गए टुकड़े जैसा दिखता है। : D
cjfaure

4
यह माइक्रोप्रोसेसरों के वेफर की तरह दिखता है। macrophotographer.net/images/ss_rvsi_5.jpg
s0rce

यह एक न्यूनतावादी वॉलपेपर जैसा दिखता है ।
AL


82

बुद्धब्रोट (+ एंटिबुदब्रोट)

संपादित करें: यह अब एक उचित बुद्धब्रोट है!

संपादित करें: मैं बाइट सीमा के भीतर रंग की तीव्रता को कैप करने में कामयाब रहा, इसलिए अतिप्रवाह के कारण अधिक गलत तरीके से काले पिक्सेल नहीं हैं।

मैं वास्तव में चार के बाद रोकना चाहता था ... लेकिन ...

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

अपलोड के दौरान यह थोड़ा संकुचित हो जाता है (और एम्बेड करने पर सिकुड़ जाता है) इसलिए यदि आप सभी विवरणों की प्रशंसा करना चाहते हैं, तो यहां दिलचस्प 512x512 क्रॉप किया गया है (जो संकुचित नहीं होता है और अपने पूर्ण आकार में प्रदर्शित होता है):

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

विचार के लिए githubphagocyte का धन्यवाद। इसके लिए तीनों रंग कार्यों के कुछ जटिल दुरुपयोग की आवश्यकता थी:

unsigned short RD(int i,int j){
    #define f(a,b)for(a=0;++a<b;)
    #define D float x=0,y=0
    static int z,m,n;if(!z){z=1;f(m,4096)f(n,4096)BL(m-4096,n-4096);};return GR(i,j);
}
unsigned short GR(int i,int j){
    #define R a=x*x-y*y+i/1024.+2;y=2*x*y+j/1024.+2
    static float c[DIM][DIM],p;if(i>=0)return(p=c[i][j])>DM1?DM1:p;c[j+DIM][i/2+DIM]+=i%2*2+1;
}
unsigned short BL(int i,int j){
    D,a,k,p=0;if(i<0)f(k,5e5){R;x=a;if(x*x>4||y*y>4)break;GR(int((x-2)*256)*2-p,(y-2)*256);if(!p&&k==5e5-1){x=y=k=0;p=1;}}else{return GR(i,j);}
}

बेहतर रंग योजना के लिए कुछ बाइट्स बचे हैं, लेकिन अभी तक मुझे ऐसा कुछ भी नहीं मिला है जो ग्रे-स्केल छवि को धड़कता हो।

दिया गया कोड 4096x4096 शुरुआती बिंदुओं का उपयोग करता है और उनमें से प्रत्येक पर 500,000 पुनरावृत्तियों को निर्धारित करता है कि क्या प्रक्षेपवक्र बच निकलते हैं या नहीं। मेरी मशीन पर 6 से 7 घंटे लगते हैं। आप 2k ग्रिड और 10k पुनरावृत्तियों में 2k के साथ अच्छे परिणाम प्राप्त कर सकते हैं, जिसमें दो मिनट लगते हैं, और यहां तक ​​कि 1k ग्रिड के साथ 1k ग्रिड से केवल 1k काफी अच्छा लगता है (जो कि 3 सेकंड की तरह लगता है)। यदि आप उन मापदंडों के साथ फील करना चाहते हैं, तो कुछ स्थान हैं जिन्हें बदलने की आवश्यकता है:

  • मैंडेलब्रोट पुनरावृत्ति की गहराई को बदलने के लिए, अपने पुनरावृत्ति गणना 5e5में दोनों उदाहरणों को समायोजित BLकरें।
  • ग्रिड संकल्प को बदलने के लिए, सभी चार बदलने 4096में RDअपने वांछित संकल्प और करने के लिए 1024.में GRसही स्केलिंग बनाए रखने के लिए एक ही पहलू से।
  • आपको शायद यह भी पैमाने पर करने की आवश्यकता होगी return c[i][j]में GRके बाद से है कि केवल प्रत्येक पिक्सेल की यात्राओं की पूर्ण संख्या में शामिल है। लगता है कि अधिकतम रंग पुनरावृत्ति गणना से अधिक स्वतंत्र हैं और कुल अंक के साथ रेखीय रूप से तराजू हैं। इसलिए यदि आप 1k ग्रिड के द्वारा 1k का उपयोग करना चाहते हैं, तो आप ऐसा करना चाहते हैं return c[i][j]*16;या कर सकते हैं , लेकिन उस कारक को कभी-कभी कुछ फ़िदालिंग की आवश्यकता होती है।

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

मूलतः, मैं भागने और गैर-भागने वाले प्रक्षेपवक्रों के बीच अंतर नहीं करता था। इससे एक भूखंड उत्पन्न हुआ जो कि एक बुद्धाब्रोट और एक एंटिबुधाब्रोट का मेल है (जैसा कि गिथुबफैगोसाइट द्वारा बताया गया है)।

unsigned short RD(int i,int j){
    #define f(a)for(a=0;++a<DIM;)
    static int z;float x=0,y=0,m,n,k;if(!z){z=1;f(m)f(n)GR(m-DIM,n-DIM);};return BL(i,j);
}
unsigned short GR(int i,int j){
    float x=0,y=0,a,k;if(i<0)f(k){a=x*x-y*y+(i+256.0)/512;y=2*x*y+(j+512.0)/512;x=a;if(x*x+y*y>4)break;BL((x-.6)*512,(y-1)*512);}return BL(i,j);
}
unsigned short BL(int i,int j){
    static float c[DIM][DIM];if(i<0&&i>-DIM-1&&j<0&&j>-DIM-1)c[j+DIM][i+DIM]++;else if(i>0&&i<DIM&&j>0&&j<DIM)return log(c[i][j])*110;
}

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

यह एक फीकी तस्वीर की तरह दिखता है ... मुझे यह पसंद है।


8
मैं इसे एक टोपी में बनाऊंगा।
cjfaure

6
मैं वास्तव में आश्चर्यचकित हूं कि आपको यह 140 लॉट के 3 लॉट के लिए मिला। नई नवोदित प्रतिमा सुंदर है।
ट्राइकोप्लाक्स

4
यह वास्तव में प्रभावशाली है।
कॉप्पकिन

पहला वाला वास्तव में कलात्मक है। मुझे जेलीफ़िश की याद दिलाता है। +1
Igby Largeman

1
यह मेरा पसंदीदा सबमिशन है। अच्छा काम!
थॉमसन

76

सीरपिन्स्की पेंटागन

आपने सीरपिन्स्की के त्रिभुज को अव्यवस्थित रूप से चुने हुए शीर्ष के लिए आधे रास्ते पर साजिश रचने की अराजकता खेल विधि देखी होगी । यहां मैंने 5 शीर्षकों का उपयोग करके समान दृष्टिकोण लिया है। सबसे छोटा कोड मैं 5 वर्टिकल कोडिंग को शामिल कर सकता था, और कोई तरीका नहीं था कि मैं इसे 140 अक्षरों में फिट करूं। इसलिए मैंने लाल घटक को एक साधारण पृष्ठभूमि में सौंप दिया है, और अन्य दो कार्यों को 140 के नीचे लाने के लिए एक मैक्रो को परिभाषित करने के लिए लाल फ़ंक्शन में अतिरिक्त स्थान का उपयोग किया है। तो पेंटागन में कोई लाल घटक नहीं होने की कीमत पर सब कुछ मान्य है।

unsigned char RD(int i,int j){
#define A int x=0,y=0,p[10]={512,9,0,381,196,981,827,981,DM1,381}
auto s=99./(j+99);return GR(i,j)?0:abs(53-int((3e3-i)*s+j*s)%107);}

unsigned char GR(int i,int j){static int c[DIM][DIM];if(i+j<1){A;for(int n=0;n<2e7;n++){int v=(rand()%11+1)%5*2;x+=p[v];x/=2;y+=p[v+1];y/=2;c[x][y]++;}}return c[i][j];}

unsigned char BL(int i,int j){static int c[DIM][DIM];if(i+j<1){A;for(int n=0;n<3e7;n++){int v=(rand()%11+4)%5*2;x+=p[v];x/=2;y+=p[v+1];y/=2;c[x][y]++;}}return c[i][j];}

एक समारोह में एक मैक्रो को परिभाषित करने और फिर दूसरे में उपयोग करने के लिए और साथ ही मुख्य समारोह के रेखापुंज क्रम तक सीमित होने के बजाय एक मनमाने क्रम में पिक्सल को भरने के लिए मेमोरेशन का उपयोग करने के लिए प्रश्न के बारे में टिप्पणी में वर्णित विचार के लिए मार्टिन बंटनर का धन्यवाद। ।

पंचकोण

छवि 500KB से अधिक है इसलिए यह स्टैक एक्सचेंज द्वारा स्वचालित रूप से jpg में परिवर्तित हो जाती है। यह कुछ महीन विवरणों को धुंधला करता है, इसलिए मैंने मूल लुक दिखाने के लिए सिर्फ एक दाहिने भाग को एक शीर्ष के रूप में शामिल किया है:

दायां शीर्ष


73

पत्रक संगीत

Sierpinski संगीत। : डी चैट पर लोगों का कहना है कि यह संगीत बक्से के लिए छिद्रित कागज की तरह दिखता है।

पत्रक संगीत

unsigned short RD(int i,int j){
    return ((int)(100*sin((i+400)*(j+100)/11115)))&i;
}
unsigned short GR(int i,int j){
    return RD(i,j);
}
unsigned short BL(int i,int j){
    return RD(i,j);
}

यह कैसे काम करता है पर कुछ विवरण ... उम, यह वास्तव में सिर्फ एक ज़ूम में कुछ लहराती Sierpinski त्रिकोण के एक रेंडर पर है। शीट-म्यूजिक लुक (और ब्लॉकनेस भी) पूर्णांक छंटनी का परिणाम है। यदि मैं लाल फ़ंक्शन को बदलता हूं, तो,

return ((int)(100*sin((i+400)*(j+100)/11115.0)));

ट्रंकेशन हटा दिया गया है और हमें पूर्ण रिज़ॉल्यूशन प्रदान किया गया है:

गैर-ब्लॉकशीट शीट संगीत

तो हाँ, यह दिलचस्प है।



1
@squeamishossifrage मैंने अभी क्या देखा ...?
cjfaure

:-) क्रिस कनिंघम की वीडियो हैं थोड़ा अजीब, है ना?
स्क्विश ओस्सिफ्रेज

14
जब मैं पृष्ठ को स्क्रॉल करता हूं, तो दूसरा ऐसा दिखता है
यूजर 13267

5
साइट को नीचे स्क्रॉल करने में, अंतिम वास्तव में चलती प्रतीत हो रही थी। अच्छा ऑप्टिकल भ्रम।
काइल कानोस

61

यादृच्छिक Voronoi आरेख जनरेटर किसी को भी?

ठीक है, इसने मुझे एक कठिन समय दिया। मुझे लगता है कि हालांकि बहुत अच्छा है, भले ही परिणाम इतने नहीं हैं आर्टि कुछ अन्य लोगों के रूप में। यह यादृच्छिकता के साथ सौदा है। हो सकता है कि कुछ मध्यवर्ती छवियां बेहतर दिखें, लेकिन मैं वास्तव में वोरोनोई आरेखों के साथ पूरी तरह से काम करने वाला एल्गोरिदम रखना चाहता था।

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

संपादित करें:

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

यह अंतिम एल्गोरिथ्म का एक उदाहरण है। छवि मूल रूप से तीन वोरोनोई आरेख का सुपरपोज़िशन है, प्रत्येक रंग घटक (लाल, हरा, नीला) के लिए एक है।

कोड

अंत में ungolfed, टिप्पणी किया गया संस्करण

unsigned short red_fn(int i, int j){
int t[64],k=0,l,e,d=2e7;srand(time(0));while(k<64){t[k]=rand()%DIM;if((e=_sq(i-t[k])+_sq(j-t[42&k++]))<d)d=e,l=k;}return t[l];
}

unsigned short green_fn(int i, int j){
static int t[64];int k=0,l,e,d=2e7;while(k<64){if(!t[k])t[k]=rand()%DIM;if((e=_sq(i-t[k])+_sq(j-t[42&k++]))<d)d=e,l=k;}return t[l];
}

unsigned short blue_fn(int i, int j){
static int t[64];int k=0,l,e,d=2e7;while(k<64){if(!t[k])t[k]=rand()%DIM;if((e=_sq(i-t[k])+_sq(j-t[42&k++]))<d)d=e,l=k;}return t[l];
}

मुझे बहुत प्रयास करने पड़े, इसलिए मुझे लगता है कि विभिन्न चरणों में परिणाम साझा करना, और दिखाने के लिए अच्छे (गलत) हैं।

पहला कदम: कुछ बिंदुओं को यादृच्छिक रूप से रखा गया है, साथ x=y

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

मैंने इसे jpeg में बदल दिया है क्योंकि अपलोड करने के लिए मूल png बहुत भारी था ( >2MB), मुझे यकीन है कि ग्रे के 50 से अधिक शेड्स हैं!

दूसरा: एक बेहतर y समन्वय है

मैं yअक्ष के लिए बेतरतीब ढंग से उत्पन्न निर्देशांक की एक अन्य तालिका रखने का जोखिम नहीं उठा सकता था , इसलिए मुझे " यादृच्छिक " लोगों को यथासंभव कुछ वर्णों में प्राप्त करने के लिए एक सरल तरीके की आवश्यकता थी । मैं xतालिका के एक अन्य बिंदु के समन्वय का उपयोग करने के लिए गया, बिंदु ANDके सूचकांक पर एक बिटवाइज़ करके।

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

3: मुझे याद नहीं है लेकिन यह अच्छा हो रहा है

लेकिन इस समय मैं १४० चार्ट से अधिक का था, इसलिए मुझे इसे थोड़ा नीचे करने की आवश्यकता थी।

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

4: स्कैनलाइन

बस मजाक कर रहे हैं, यह नहीं बल्कि शांत, मेथिंक की तरह चाहता है।

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

अभी भी एल्गोरिथ्म के आकार को कम करने पर काम कर रहा हूं, मुझे पेश करने पर गर्व है:

StarFox संस्करण

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

वोरोनोई इंस्टाग्राम

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

5 वीं: अंकों की संख्या में वृद्धि

मेरे पास अब कोड का एक कार्यशील टुकड़ा है, इसलिए 25 से 60 अंकों तक चलते हैं। यहां छवि विवरण दर्ज करें

यह केवल एक छवि से देखना मुश्किल है, लेकिन अंक लगभग सभी एक ही yसीमा में स्थित हैं । बेशक, मैंने बिटवाइज़ ऑपरेशन को नहीं बदला, &42बहुत बेहतर है:

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

और यहाँ हम एक ही बिंदु पर इस पद से पहली छवि के समान हैं। आइए अब उन दुर्लभ लोगों के लिए कोड की व्याख्या करें जिनकी रुचि होगी।

अनप्लग्ड और समझाया गया कोड

unsigned short red_fn(int i, int j)
{
    int t[64],          // table of 64 points's x coordinate
        k = 0,          // used for loops
        l,              // retains the index of the nearest point
        e,              // for intermediary results
        d = 2e7;        // d is the minimum distance to the (i,j) pixel encoutnered so far
        // it is initially set to 2e7=2'000'000 to be greater than the maximum distance 1024²

    srand(time(0));     // seed for random based on time of run
    // if the run overlaps two seconds, a split will be observed on the red diagram but that is
    // the better compromise I found

    while(k < 64)       // for every point
    {
        t[k] = rand() % DIM;        // assign it a random x coordinate in [0, 1023] range
        // this is done at each call unfortunately because static keyword and srand(...)
        // were mutually exclusive, lenght-wise

        if (
            (e=                         // assign the distance between pixel (i,j) and point of index k
                _sq(i - t[k])           // first part of the euclidian distance
                +
                _sq(j - t[42 & k++])    // second part, but this is the trick to have "" random "" y coordinates
                // instead of having another table to generate and look at, this uses the x coordinate of another point
                // 42 is 101010 in binary, which is a better pattern to apply a & on; it doesn't use all the table
                // I could have used 42^k to have a bijection k <-> 42^k but this creates a very visible pattern splitting the image at the diagonal
                // this also post-increments k for the while loop
            ) < d                       // chekcs if the distance we just calculated is lower than the minimal one we knew
        )
        // {                            // if that is the case
            d=e,                        // update the minimal distance
            l=k;                        // retain the index of the point for this distance
            // the comma ',' here is a trick to have multiple expressions in a single statement
            // and therefore avoiding the curly braces for the if
        // }
    }

    return t[l];        // finally, return the x coordinate of the nearest point
    // wait, what ? well, the different areas around points need to have a
    // "" random "" color too, and this does the trick without adding any variables
}

// The general idea is the same so I will only comment the differences from green_fn
unsigned short green_fn(int i, int j)
{
    static int t[64];       // we don't need to bother a srand() call, so we can have these points
    // static and generate their coordinates only once without adding too much characters
    // in C++, objects with static storage are initialized to 0
    // the table is therefore filled with 60 zeros
    // see http://stackoverflow.com/a/201116/1119972

    int k = 0, l, e, d = 2e7;

    while(k<64)
    {
        if( !t[k] )                 // this checks if the value at index k is equal to 0 or not
        // the negation of 0 will cast to true, and any other number to false
            t[k] = rand() % DIM;    // assign it a random x coordinate

        // the following is identical to red_fn
        if((e=_sq(i-t[k])+_sq(j-t[42&k++]))<d)
            d=e,l=k;
    }

    return t[l];
}

अब तक पढ़ने के लिए धन्यवाद।


1
मुझे वोरोनोई आरेख पसंद है। 3 ट्वीट में इसे फिट करने के लिए +1!
मार्टिन एंडर

1
यह मेरे निजी पसंदीदा में से एक है। स्कैन लाइन वेरिएंट बहुत ही सौंदर्यवादी रूप से मनभावन हैं।
फ्रैक्स्टिल

1
प्यार करें कि आपने कोड कैसे समझाया
Andrea

पूरी तरह उलट - पुलट कर दो!
स्टार्सन होच्स्चिल्ड

4 में दूसरी तस्वीर: स्कैनलाइन सुंदर है।
खालिद.के।

57

ल्यपुनोव फ्रैक्टल

ल्यपुनोव फ्रैक्टल

इसे उत्पन्न करने के लिए प्रयुक्त स्ट्रिंग AABAB था और पैरामीटर स्पेस [2,4] x [2,4] था। ( यहां स्ट्रिंग और पैरामीटर स्पेस की व्याख्या )

सीमित कोड स्थान के साथ मुझे लगा कि यह रंग बहुत अच्छा था।

    //RED
    float r,s=0,x=.5;for(int k=0;k++<50;)r=k%5==2||k%5==4?(2.*j)/DIM+2:(2.*i)/DIM+2,x*=r*(1-x),s+=log(fabs(r-r*2*x));return abs(s);
    //GREEN
    float r,s=0,x=.5;for(int k=0;k++<50;)r=k%5==2||k%5==4?(2.*j)/DIM+2:(2.*i)/DIM+2,x*=r*(1-x),s+=log(fabs(r-r*2*x));return s>0?s:0;
    //BLUE
    float r,s=0,x=.5;for(int k=0;k++<50;)r=k%5==2||k%5==4?(2.*j)/DIM+2:(2.*i)/DIM+2,x*=r*(1-x),s+=log(fabs(r-r*2*x));return abs(s*x);

मैंने मंडेलब्रोट सेट का भी बदलाव किया। यह मैंडलब्रॉट सेट मैप के समान मैप का उपयोग करता है। कहो M (x, y) मैंडलब्रॉट मैप है। तब M (sin (x), cos (y) वह मानचित्र होता है जिसका मैं उपयोग करता हूं, और मूल्यों से बचने के लिए जाँचने के बजाय मैं x का उपयोग करता हूं, और y चूंकि वे हमेशा बंधे रहते हैं।

//RED
float x=0,y=0;for(int k=0;k++<15;){float t=_sq(sin(x))-_sq(cos(y))+(i-512.)/512;y=2*sin(x)*cos(y)+(j-512.0)/512;x=t;}return 2.5*(x*x+y*y);
//GREEN
float x=0,y=0;for(int k=0;k++<15;){float t=_sq(sin(x))-_sq(cos(y))+(i-512.)/512;y=2*sin(x)*cos(y)+(j-512.0)/512;x=t;}return 15*fabs(x);
//BLUE
float x=0,y=0;for(int k=0;k++<15;){float t=_sq(sin(x))-_sq(cos(y))+(i-512.)/512;y=2*sin(x)*cos(y)+(j-512.0)/512;x=t;}return 15*fabs(y);

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

संपादित करें

बहुत दर्द के बाद मैं आखिरकार दूसरी इमेज मॉर्फिंग का gif बनाने के लिए इधर-उधर हो गया। यह रहा:

पार्टी का समय


11
दूसरे के लिए अच्छा साइकेडेलिक लुक।
तेह इंटर्नेट

4
ये पागल हैं ! +1
cjfaure

10
डरावना भग्न डरावना है ༼ sc sc sc sc sc al
टोबिया

1
पवित्र बकवास है कि दूसरा डरावना है। Amaximg आप साधारण z = z ^ 2 + c से कितना निकाल सकते हैं।
tomsmeding

4
अगर एडवर्ड मुंच भग्न पेंट करते थे, तो यह वही होता था जो चीख की तरह दिखता था।
तेह इंटर्नेट 19

55

क्योंकि गेंडा।

क्योंकि गेंडा

मैं unsigned short1023 तक काम करने के साथ ओपी संस्करण और रंग मूल्यों को प्राप्त नहीं कर सका , इसलिए जब तक यह तय नहीं हो जाता है, यहां char255 का अधिकतम उपयोग और अधिकतम रंग मान है।

char red_fn(int i,int j){
    return (char)(_sq(cos(atan2(j-512,i-512)/2))*255);
}
char green_fn(int i,int j){
    return (char)(_sq(cos(atan2(j-512,i-512)/2-2*acos(-1)/3))*255);
}
char blue_fn(int i,int j){
    return (char)(_sq(cos(atan2(j-512,i-512)/2+2*acos(-1)/3))*255);
}

मैं व्यक्तिगत रूप से रंगीन चैनल देखना चाहता हूं। जो शांत हो जाएगा।
ताली

52

लॉजिस्टिक हिल्स

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

कार्य करता है

unsigned char RD(int i,int j){    
    #define A float a=0,b,k,r,x
    #define B int e,o
    #define C(x) x>255?255:x
    #define R return
    #define D DIM
    R BL(i,j)*(D-i)/D;
}
unsigned char GR(int i,int j){      
    #define E DM1
    #define F static float
    #define G for(
    #define H r=a*1.6/D+2.4;x=1.0001*b/D
    R BL(i,j)*(D-j/2)/D;
}
unsigned char BL(int i,int j){
    F c[D][D];if(i+j<1){A;B;G;a<D;a+=0.1){G b=0;b<D;b++){H;G k=0;k<D;k++){x=r*x*(1-x);if(k>D/2){e=a;o=(E*x);c[e][o]+=0.01;}}}}}R C(c[j][i])*i/D;
}

Ungolfed

सभी #defines 140 चार्ट के तहत बीएल को फिट करने के लिए हैं। यहाँ नीले एल्गोरिथ्म का थोड़ा-सा संशोधित संस्करण है, थोड़ा संशोधित:

for(double a=0;a<DIM;a+=0.1){       // Incrementing a by 1 will miss points
    for(int b=0;b<DIM;b++){         // 1024 here is arbitrary, but convenient
        double r = a*(1.6/DIM)+2.4; // This is the r in the logistic bifurcation diagram (x axis)
        double x = 1.0001*b/DIM;    // This is x in the logistic bifurcation diagram (y axis). The 1.0001 is because nice fractions can lead to pathological behavior.
        for(int k=0;k<DIM;k++){
            x = r*x*(1-x);          // Apply the logistic map to x
            // We do this DIM/2 times without recording anything, just to get x out of unstable values
            if(k>DIM/2){
                if(c[(int)a][(int)(DM1*x)]<255){
                    c[(int)a][(int)(DM1*x)]+=0.01; // x makes a mark in c[][]
                } // In the golfed code, I just always add 0.01 here, and clip c to 255
            }
        }            
    }    
}

जहाँ x के मान किसी दिए गए r (j मान) के लिए सबसे अधिक बार गिरते हैं, प्लॉट हल्का हो जाता है (आमतौर पर गहरे रंग के रूप में दर्शाया जाता है)।


3
ओ, मैं सोच रहा था कि कल यह कैसे करना है। यह पता लगाने के लिए +1। मैं वास्तव में बात करता हूं कि यह वास्तव में पैलेट अच्छा है! :)
मार्टिन एंडर

2
मैंने तुमसे और गथुबफगोसाइट से गंदी चालें चुराई हैं, हालांकि मैं बदसूरत #defines की जिम्मेदारी लेता हूं। विशेष रूप से "#define जी के लिए" ("।
एरिक ट्रेसलर

1
एक टूर्नामेंट ब्रैकेट विज़ुअलाइज़र की तरह अधिक दिखता है
केविन एल

3
शीर्ष पर चित्रित नहीं: विजेता की मृत्यु हो जाती है
एरिक ट्रेसलर

1
क्या मुझे इसका एक पोस्टर-आकार प्रिंट मिल सकता है? पृष्ठभूमि में 3 फीके ट्वीट्स के साथ। :-)
एंड्रयू चेयोंग

50

डिफ्यूजन लिमिटेड एग्रीगेशन

मुझे हमेशा प्रसार सीमित एकत्रीकरण और वास्तविक दुनिया में दिखाई देने वाले विभिन्न तरीकों की संख्या से मोहित किया गया है।

मुझे इसे केवल 140 वर्णों में प्रति फ़ंक्शन लिखना मुश्किल लगा, इसलिए मुझे कोड को भयानक (या सुंदर, यदि आपको पसंद है ++d%=4और for(n=1;n;n++)) पसंद है । तीन रंग फ़ंक्शन एक-दूसरे को कॉल करते हैं और मैक्रोज़ को एक-दूसरे के उपयोग के लिए परिभाषित करते हैं, इसलिए यह अच्छी तरह से नहीं पढ़ता है, लेकिन प्रत्येक फ़ंक्शन केवल 140 अक्षरों के नीचे है।

unsigned char RD(int i,int j){
#define D DIM
#define M m[(x+D+(d==0)-(d==2))%D][(y+D+(d==1)-(d==3))%D]
#define R rand()%D
#define B m[x][y]
return(i+j)?256-(BL(i,j))/2:0;}

unsigned char GR(int i,int j){
#define A static int m[D][D],e,x,y,d,c[4],f,n;if(i+j<1){for(d=D*D;d;d--){m[d%D][d/D]=d%6?0:rand()%2000?1:255;}for(n=1
return RD(i,j);}

unsigned char BL(int i,int j){A;n;n++){x=R;y=R;if(B==1){f=1;for(d=0;d<4;d++){c[d]=M;f=f<c[d]?c[d]:f;}if(f>2){B=f-1;}else{++e%=4;d=e;if(!c[e]){B=0;M=1;}}}}}return m[i][j];}

प्रसार सीमित एकत्रीकरण

यह कल्पना करने के लिए कि कण धीरे-धीरे कैसे एकत्रित होते हैं, मैंने नियमित अंतराल पर स्नैपशॉट का उत्पादन किया। प्रत्येक फ्रेम को for(n=1;n;n++)0, -1 << 29, -2 << 29, -3 << 29, 4 << 29, 3 << 29, 2 << 29, 1 << 29 के साथ 1 को प्रतिस्थापित करके उत्पादित किया गया था । 1. इसने इसे प्रत्येक रन के लिए 140 अक्षर की सीमा के अंतर्गत रखा।

एनिमेटेड एकत्रीकरण

आप देख सकते हैं कि समुच्चय एक दूसरे के करीब बढ़ रहे हैं और एक दूसरे को कणों से वंचित करते हैं और अधिक धीरे-धीरे बढ़ते हैं।


कोड में थोड़ा सा बदलाव करके आप शेष कणों को देख सकते हैं जो अभी तक समुच्चय से जुड़े नहीं हैं। यह सघन क्षेत्रों को दर्शाता है जहां वृद्धि अधिक तेज़ी से होगी और समुच्चय के बीच बहुत कम क्षेत्र हैं जहाँ सभी कणों के उपयोग के कारण अधिक विकास नहीं हो सकता है।

unsigned char RD(int i,int j){
#define D DIM
#define M m[(x+D+(d==0)-(d==2))%D][(y+D+(d==1)-(d==3))%D]
#define R rand()%D
#define B m[x][y]
return(i+j)?256-BL(i,j):0;}

unsigned char GR(int i,int j){
#define A static int m[D][D],e,x,y,d,c[4],f,n;if(i+j<1){for(d=D*D;d;d--){m[d%D][d/D]=d%6?0:rand()%2000?1:255;}for(n=1
return RD(i,j);}

unsigned char BL(int i,int j){A;n;n++){x=R;y=R;if(B==1){f=1;for(d=0;d<4;d++){c[d]=M;f=f<c[d]?c[d]:f;}if(f>2){B=f-1;}else{++e%=4;d=e;if(!c[e]){B=0;M=1;}}}}}return m[i][j];}

दृश्य कणों के साथ डीएलए

यह पहले की तरह ही एनिमेटेड हो सकता है:

कणों के साथ एनिमेटेड एकत्रीकरण


3
बहुत दिलचस्प, +1।
तेह इंटर्नेट

50

सर्पिल (140 बिल्कुल)

अंतिम उत्पाद

यदि आप फ़ंक्शन हेडर और कोष्ठक शामिल नहीं करते हैं तो यह 140 अक्षर ठीक है। यह उतना ही सर्पिल जटिलता है जितना मैं चरित्र सीमा में फिट हो सकता था।

unsigned char RD(int i,int j){
    return DIM-BL(2*i,2*j);
}
unsigned char GR(int i,int j){
    return BL(j,i)+128;
}
unsigned char BL(int i,int j){
    i-=512;j-=512;int d=sqrt(i*i+j*j);return d+atan2(j,i)*82+sin(_cr(d*d))*32+sin(atan2(j,i)*10)*64;
}

मैंने धीरे-धीरे एक साधारण सर्पिल पर बनाया, सर्पिल किनारों के पैटर्न को जोड़कर और प्रयोग करके देखा कि शांत दिखने के लिए विभिन्न सर्पिलों को कैसे जोड़ा जा सकता है। यहाँ टिप्पणियों के साथ एक ungolfed संस्करण है जो यह बताता है कि प्रत्येक टुकड़ा क्या करता है। मापदंडों के साथ खिलवाड़ करना कुछ दिलचस्प परिणाम पैदा कर सकता है।

unsigned char RD(int i,int j){
    // *2 expand the spiral
    // DIM- reverse the gradient
    return DIM - BL(2*i, 2*j);
}
unsigned char GR(int i,int j){
    // notice swapped parameters
    // 128 changes phase of the spiral
    return BL(j,i)+128;
}
unsigned char BL(int i,int j){
    // center it
    i -= DIM / 2;
    j -= DIM / 2;

    double theta = atan2(j,i); //angle that point is from center
    double prc = theta / 3.14f / 2.0f; // percent around the circle

    int dist = sqrt(i*i + j*j); // distance from center

    // EDIT: if you change this to something like "prc * n * 256" where n
    //   is an integer, the spirals will line up for any arbitrarily sized
    //   DIM value, or if you make separate DIMX and DIMY values!
    int makeSpiral = prc * DIM / 2;

    // makes pattern on edge of the spiral
    int waves = sin(_cr(dist * dist)) * 32 + sin(theta * 10) * 64;

    return dist + makeSpiral + waves;
}

मापदंडों के साथ खिलवाड़:

यहां, सर्पिल पंक्तिबद्ध हैं, लेकिन अलग-अलग धारियां हैं। मुख्य उदाहरण में अवरोधी किनारों के बजाय, इसमें किनारों को पूरी तरह से पाप तरंगों से युक्त किया गया है।

किनारों

यहाँ, ढाल हटा दिया गया है:

कोई ढाल नहीं

एक एनीमेशन ( जो किसी कारण से मुझे अपलोड करने के बाद लूपिंग प्रतीत नहीं होता है, क्षमा करें। इसके अलावा, मुझे इसे छोटा करना पड़ा। यदि आपने एनीमेशन को याद किया है तो बस इसे एक नए टैब में खोलें ):

एनीमेशन

और, यहाँ सभी छवियों के साथ imgur एल्बम है। मैं यह देखना पसंद करूंगा कि क्या कोई अन्य सर्पिल पैटर्न पा सकता है। मुझे यह भी कहना चाहिए कि यह अब तक की सबसे अच्छी चुनौतियों में से एक है, जिसे मैंने कभी देखा है। का आनंद लें!

EDIT: यहाँ कुछ पृष्ठभूमियाँ इन सर्पिलों से परिवर्तित मापदंडों के साथ बनाई गई हैं।

इसके अलावा, मैंने अपने कुछ अंशों के साथ सर्पिल किनारे के पैटर्न को जोड़कर देखा है, जो मैंने यहाँ एक्सोर / और / या संचालन के माध्यम से देखा है, यहाँ एक अंतिम सर्पिल है:

भग्न सर्पिल


2
ये शानदार हैं! यदि आप अन्य उत्तरों के आसपास देखते हैं, तो आप इसे और भी नीचे पा सकते हैं, अगर आप और अधिक कमरा चाहते हैं, तो इस पर विचार कर सकते हैं। कुछ उत्तर # 3fine को एक फ़ंक्शन में मैक्रो को परिभाषित करने के लिए उपयोग करते हैं जो सभी 3 का उपयोग कर सकते हैं, इसलिए आप गणना के थोक को अन्य रंग कार्यों में लोड कर सकते हैं। मार्टिन ब्यूटनर ने मुझे उस चाल से परिचित कराया।
ट्राइकोप्लाक्स

धन्यवाद! मेरे मामले में, जहां तक ​​मैं पा सकता हूं, मेरे कोड में डुप्लीकेट लॉजिक पैटर्न की कमी है, जो पाउंड डिफाइन से लाभान्वित होगा। हालाँकि, यदि आप कोई भी देखते हैं, तो मैं सराहना करूँगा यदि आप उन्हें मेरी पहचान करेंगे, विशेष रूप से यह देखते हुए कि मैंने वर्षों में बड़े पैमाने पर C / C ++ का उपयोग नहीं किया है।
क्लेविएटर

डुप्लिकेट अनुभाग ढूंढना वास्तव में और भी अधिक मदद करेगा, लेकिन यहां तक ​​कि बिना किसी डुप्लीकेशन के आप केवल बीएल से आरडी या जीएन से कोड को स्थानांतरित कर सकते हैं इसे आरडी या जीएन में मैक्रो के रूप में परिभाषित कर सकते हैं और फिर बीएल में इसका उपयोग कर सकते हैं। यह आपको अतिरिक्त कोड के लिए दो बार के रूप में ज्यादा जगह देना चाहिए।
ट्राइकोप्लाक्स

आह! समझा। मुझे यह भी एहसास नहीं था कि प्रत्येक फंक्शन बॉडी में 140 कैरेक्टर की सीमा होती है। मुझे लगता है कि अगली बार मुझे शीघ्र ध्यान से पढ़ना चाहिए। उसे इंगित करने के लिए धन्यवाद!
xleviator

1
जैसा कि चैट में चर्चा की जा रही थी , आपके नॉन-लूपिंग जीआईएफ को आसानी से ठीक किया जाना चाहिए। मुझे लगता है कि यह एनीमेशन के संक्षिप्त बिट के रूप में करने योग्य है जो वर्तमान में दिखाता है कि यह बहुत अच्छा लग रहा है।
ट्राइकोप्लाक्स

47

एक क्लासिक को श्रद्धांजलि

V1 : ड्रीमवर्यर के "खुश रहो" से प्रेरित होकर, यह सीधा सबमिशन प्रत्येक कलर चैनल में एक छोटी पिक्सेल-आर्ट इमेज एम्बेड करता है। मैं भी कोड गोल्फ नहीं था!
V2 : अब काफी छोटे कोड और केवल "गेम स्क्रीन" को अलग करने वाली एक मोटी काली सीमा के साथ।
V3 : अंतरिक्ष यान, गोली, क्षतिग्रस्त एलियंस और नीली सीमा, ओह मेरी! के लिए लक्ष्य की कोशिश इस , मोटे तौर पर।

// RED
#define g(I,S,W,M)j/128%8==I&W>>(j/32%4*16+i/64)%M&S[abs(i/4%16-8)-(I%2&i%64<32)]>>j/4%8&1
return g(1,"_\xB6\\\x98\0\0\0",255L<<36,64)?j:0;

// GREEN
#define S g(6,"\xFF\xFE\xF8\xF8\xF8\xF8\xF0\x0",1L<<22,64)|i/4==104&j/24==30
return g(2,"<\xBC\xB6}\30p\0\0",4080,32)|S?j:0;

// BLUE
return g(3,"_7\xB6\xFE\x5E\34\0",0x70000000FD0,64)|S|abs(i/4-128)==80&abs(j/4-128)<96|abs(j/4-128)==96&abs(i/4-128)<80?j:0;

अंतरिक्ष आक्रमणकारी


मैं Umber Ferrule के एक संपादन पर ठोकर खाने के लिए हुआ, जिसके अवतार ने मुझे एक और पिक्सेल-कला-आधारित प्रविष्टि जोड़ने के लिए प्रेरित किया। चूंकि कोड का मुख्य विचार काफी हद तक स्पेस इनवेटर्स के समान है, इसलिए मैं इसे इस प्रविष्टि में शामिल कर रहा हूं, हालांकि दोनों के पास निश्चित चुनौतीपूर्ण बिंदु थे। इस के लिए, सही गुलाबी (सफेद रंग की कीमत पर) और तथ्य यह है कि यह एक बड़ा प्रेत है, अच्छी चुनौतियां साबित हुईं। \xFFरेड चैनल में हेक्साडेसिमल एस्केप ( आदि) स्रोत फ़ाइल में उनके संबंधित वर्णों का प्रतिनिधित्व करता है (अर्थात, स्रोत फ़ाइल में लाल चैनल में बाइनरी डेटा होता है), जबकि ऑक्टल एस्कल शाब्दिक हैं (यानी स्रोत फ़ाइल में मौजूद)।

// RED
#define g(S)(S[i/29%18*2+j/29/8%2]>>j/29%8&1)*DM1*(abs(i-512)<247&abs(j-464)<232)
return g("\xF3\xF2\xF2\x10\xF4\0\xF2\x10\xE1\xE0\x81\0\x80\0\x80\0\0\0\0\0@\0! \x03d8,=\x2C\x99\x84\xC3\x82\xE1\xE3");

// GREEN
return g(";\376z\34\377\374\372\30k\360\3\200\0\0\0\0\0\0\200\0\300\0\341 \373d\307\354\303\374e\374;\376;\377")? DM1 : BL(i,j)? DM1/2 : 0;

// BLUE
return g("\363\360\362\20\364\0\362\20\341\340\200\0\200\0\200\0\0\0\0\0\0\0\0\0\0\08\0<\0\230\0\300\0\341\340") / 2;

बब (बबल बॉबल)


3
मुझे यह पसंद है। अतिरिक्त सुविधाओं को जोड़ने के लिए बहुत सारे कमरे ...
ट्रिकोप्लाक्स

1
हाँ, आकार को कम करने के लिए बहुत सारी तरकीबें हैं। हो सकता है कि मैं कल इसका विस्तार करूं।
FireFly

यह अविश्वसनीय रूप से अभी कम है। क्या आप अपने रेकास्टिंग उत्तर में बनावट में इन बिट पैटर्न में से एक को फिट कर सकते हैं ...?
ट्राइकोप्लाक्स

@ मार्टिनबटनर ओह, तुम सही हो। मैंने इसे ठीक किया और कार्यों के लिए एक और अपडेट किया।
फायरफली

नीट, मुझे पसंद है कि आपने 8x8 पिक्सेल कला कैसे ली और इसे मक्खी पर "आकार" दिया। हालाँकि, मुझे कुछ बदलाव करने पड़े और मैं अभी भी आपकी छवि को ठीक नहीं कर पा रहा हूँ। मैंने 1L और 255L को 1LL और 255LL में बदल दिया। चूँकि मैंने इसे बेहतर बनाया है, इसलिए मैं मान रहा हूँ कि आप शायद 64 बिट मोड में संकलन कर रहे हैं और मेरी छवि के बाकी हिस्सों को बनाने में कुछ चौड़ाई चौड़ाई के मुद्दे गलत हैं। लेकिन, फिर भी, अच्छा काम!
ड्रीमवर्यर

44

एक्शन पेंटिंग

मैं जैक्सन पोलक के काम के समान कुछ फिर से बनाने की कोशिश करना चाहता था - टपकना और एक क्षैतिज कैनवास पर पेंट डालना। हालांकि मुझे परिणाम पसंद आया, इस प्रश्न को पोस्ट करने के लिए कोड बहुत लंबा था और मेरे सर्वश्रेष्ठ प्रयासों ने अभी भी इसे लगभग 600 बाइट्स तक सीमित कर दिया। तो यहां पोस्ट किया गया कोड (जिसमें 139 बाइट्स, 140 बाइट्स और क्रमशः 140 बाइट्स) के कार्य हैं, चैट में कुछ जीनियस की भारी मात्रा में मदद से निर्मित किया गया था । बहुत धन्यवाद:

एक अथक समूह गोल्फ सत्र के लिए।

unsigned char RD(int i,int j){
#define E(q)return i+j?T-((T-BL(i,j))*q):T;
#define T 255
#define R .1*(rand()%11)
#define M(v)(v>0&v<DIM)*int(v)
#define J [j]*250;
E(21)}

unsigned char GR(int i,int j){
#define S DIM][DIM],n=1e3,r,a,s,c,x,y,d=.1,e,f;for(;i+j<1&&n--;x=R*DM1,y=R*DM1,s=R*R*R*R,a=R*7,r=s*T)for(c=R;r>1;x+=s*cos(a),y+=s*sin
E(21)}

unsigned char BL(int i,int j){static float m[S(a),d=rand()%39?d:-d,a+=d*R,s*=1+R/99,r*=.998)for(e=-r;e++<r;)for(f=-r;f++<r;)m[M(x+e)*(e*e+f*f<r)][M(y+f)]=c;return T-m[i]J}

एक्शन पेंटिंग 21, 21

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

एक्शन पेंटिंग 14, 14

एक्शन पेंटिंग 63, 49

एक्शन पेंटिंग 56, 42

एक्शन पेंटिंग 0, 49

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

यदि आप गोल्फ प्रक्रिया में विभिन्न चरणों से छवियों को देखना चाहते हैं जैसा कि हमने अलग-अलग चीजों की कोशिश की है, तो आप एक्शन पेंटिंग चैट में देख सकते हैं ।


7
मैं इस सवाल का जवाब दे रहा हूं और अभी कुछ हफ़्ते के लिए सभी जवाब हैं, और मुझे यह कहना है, यह पहला है जिसने वास्तव में मेरा ड्रॉप किया है। होली अद्भुत है। मेरा मतलब है, यहाँ सभी उत्तर महान हैं - लेकिन यह एक ऐसी चीज है जिसकी मैंने कभी उम्मीद नहीं की थी।
टोड लेहमन

1
@ToddLehman धन्यवाद! यह निश्चित रूप से ऐसा कुछ नहीं है जो मैं अकेले करने में सक्षम
होऊंगा

2
बहुत बढ़िया! इस प्रश्न में सर्वश्रेष्ठ में से एक और मेरे लिए केवल एक (शायद विजेता को छोड़कर) जो मानव द्वारा
खींची

1
@ क्रिसेल बहुत बहुत धन्यवाद। आप कह सकते हैं कि यह 5 मनुष्यों द्वारा तैयार किया गया था ...
ट्राइकोप्लाक्स

43

मुझे लगा कि मैं इस कोड के मापदंडों के साथ खेलूंगा ... सारा श्रेय @Manuel Kasten को जाता है। ये इतने शांत हैं कि मैं पोस्टिंग का विरोध नहीं कर सकता। गरम ठंडा

/* RED */
double a=0,b=0,c,d,n=0;
while((c=a*a)+(d=b*b)<4&&n++<880){b=2*a*b+(j)*9e-9-.645411;a=c-d+(i)*9e-9+.356888;}
return 1000*pow((n)/800,.5);
/* GREEN */
double a=0,b=0,c,d,n=0;
while((c=a*a)+(d=b*b)<4&&n++<880){b=2*a*b+(j)*9e-9-.645411;a=c-d+(i)*9e-9+.356888;}
return 8000*pow((n)/800,.5);
/* BLUE */
double a=0,b=0,c,d,n=0;
while((c=a*a)+(d=b*b)<4&&n++<880){b=2*a*b+(j)*9e-9-.645411;a=c-d+(i)*9e-9+.356888;}
return 8000*pow((n)/800,.5);

बबलगूमरचर http://i57.tinypic.com/3150eqa.png

/* RED */
double a=0,b=0,c,d,n=0;
while((c=a*a)+(d=b*b)<4&&n++<880){b=2*a*b+(j)*9e-9-.645411;a=c-d+(i)*9e-9+.356888;}
return 8000*pow((n)/800,.5);
/* GREEN */
double a=0,b=0,c,d,n=0;
while((c=a*a)+(d=b*b)<4&&n++<880){b=2*a*b+(j)*9e-9-.645411;a=c-d+(i)*9e-9+.356888;}
return 40*pow((n)/800,.5);
/* BLUE */
double a=0,b=0,c,d,n=0;
while((c=a*a)+(d=b*b)<4&&n++<880){b=2*a*b+(j)*9e-9-.645411;a=c-d+(i)*9e-9+.356888;}
return 10*pow((n)/800,.5);

सेज़ूमूम http://i59.tinypic.com/am3ypi.png

/* RED */
double a=0,b=0,c,d,n=0;
while((c=a*a)+(d=b*b)<4&&n++<880){b=2*a*b+j*8e-8-.645411;a=c-d+i*8e-8+.356888;}
return 2000*pow((n)/800,.5);
/* GREEN */
double a=0,b=0,c,d,n=0;
while((c=a*a)+(d=b*b)<4&&n++<880){b=2*a*b+j*8e-8-.645411;a=c-d+i*8e-8+.356888;}
return 1000*pow((n)/800,.5);
/* BLUE */
double a=0,b=0,c,d,n=0;
while((c=a*a)+(d=b*b)<4&&n++<880){b=2*a*b+j*8e-8-.645411;a=c-d+i*8e-8+.356888;}
return 4000*pow((n)/800,.5);

SeussEternalForest http://i61.tinypic.com/35akv91.png

/* RED */
double a=0,b=0,c,d,n=0;
while((c=a*a)+(d=b*b)<4&&n++<880){b=2*a*b+j*8e-9-.645411;a=c-d+i*8e-9+.356888;}
return 2000*pow((n)/800,.5);
/* GREEN */
double a=0,b=0,c,d,n=0;
while((c=a*a)+(d=b*b)<4&&n++<880){b=2*a*b+j*8e-9-.645411;a=c-d+i*8e-9+.356888;}
return 1000*pow((n)/800,.5);
/* BLUE */
double a=0,b=0,c,d,n=0;
while((c=a*a)+(d=b*b)<4&&n++<880){b=2*a*b+j*8e-9-.645411;a=c-d+i*8e-9+.356888;}
return 4000*pow((n)/800,.5);

3
डॉ। सीस की तरह मुझे लगता है। बहुत ही शांत!
DLosc

3
हाहा, मैंने वास्तव में नीचे दो फाइलों का नाम Seuss1 और Sueuss2
काइल मैककॉर्मिक

42

संपादित करें: यह अब एक वैध जवाब है, की आगे घोषणाओं के लिए धन्यवाद GRऔर BL

Hofstadter के क्यू अनुक्रम के साथ मज़ा आ रहा है! यदि हम कुछ बिंदु से रेडियल दूरी का उपयोग इनपुट और आउटपुट के विपरीत रंग के रूप में कर रहे हैं, तो हमें कुछ ऐसा मिलता है जो रंगीन विनाइल जैसा दिखता है।

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

अनुक्रम फाइबोनैचि अनुक्रम के समान है, लेकिन अनुक्रम में 1 और 2 कदम पीछे जाने के बजाय, आप दो पिछले मानों को लेते हैं निर्धारित लिए कि राशि लेने से पहले कितनी दूर जाना है। यह लगभग रैखिक रूप से बढ़ता है, लेकिन हर अब और फिर अराजकता (बढ़ते अंतराल पर) का एक धमाका होता है, जो अगले फटने से पहले फिर से लगभग रैखिक अनुक्रम में बस जाता है:

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

आप इन तरंगों को उन क्षेत्रों के बाद छवि में देख सकते हैं जो रंग में बहुत "सपाट" दिखते हैं।

बेशक, केवल एक रंग का उपयोग करना उबाऊ है।

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

अब कोड के लिए। मुझे अनुक्रम की गणना करने के लिए पुनरावर्ती कार्य की आवश्यकता है। ऐसा करने के लिए मैं RDजब भी jनकारात्मक उपयोग करता हूं । दुर्भाग्य से, यह लाल वर्ण मान की गणना करने के लिए पर्याप्त वर्ण नहीं छोड़ता है, इसलिए RDबदले GRमें लाल चैनल का उत्पादन करने के लिए एक ऑफसेट के साथ कॉल करता है।

unsigned short RD(int i,int j){
    static int h[1000];return j<0?h[i]?h[i]:h[i]=i<2?1:RD(i-RD(i-1,j),j)+RD(i-RD(i-2,j),j):GR(i+256,j+512);
}
unsigned short GR(int i,int j){
    return DIM-4*RD(sqrt((i-512)*(i-512)+(j-768)*(j-768))/2.9,-1);
}
unsigned short BL(int i,int j){
    return DIM-4*RD(sqrt((i-768)*(i-768)+(j-256)*(j-256))/2.9,-1);
}

बेशक, यह अनुक्रम का सबसे सरल संभव उपयोग है, और पात्रों के भार शेष हैं। इसे उधार लेने और इसके साथ अन्य पागल चीजें करने के लिए स्वतंत्र महसूस करें!

यहां एक और संस्करण है जहां सीमा और रंगों को क्यू-अनुक्रम द्वारा निर्धारित किया जाता है। इस मामले में, पर्याप्त जगह थी RDताकि मुझे आगे की घोषणा की आवश्यकता न हो:

unsigned short RD(int i,int j){
    static int h[1024];return j<0?h[i]?h[i]:h[i]=i<2?1:RD(i-RD(i-1,j),j)+RD(i-RD(i-2,j),j):RD(2*RD(i,-1)-i+512>1023-j?i:1023-i,-1)/0.6;
}
unsigned short GR(int i,int j){
    return RD(i, j);
}
unsigned short BL(int i,int j){
    return RD(i, j);
}

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


1
वह दूसरी ग्रे-ईश छवि तेजस्वी है!
tomsmeding

क्या आप पुनरावर्ती कॉलों के लिए अवैध निर्देशांक के साथ अपने आप को पुनरावर्ती रूप से r / g / b फ़ंक्शन का उपयोग करने के लिए इसे पर्याप्त रूप से संकुचित कर सकते हैं?
Sparr

मुझे मल्टी-कलर इमेज बहुत पसंद थी। अच्छा जवाब!
एलेक्स

41

यह मूल से थोड़ा बिंदु पर केंद्रित संकेंद्रित हलकों के सेट के जौकॉस्की रूपांतरण की गणना करता है । मैंने थोड़े से रंग भिन्नता देने के लिए ब्लू चैनल में तीव्रता को थोड़ा संशोधित किया।

unsigned short RD(int i,int j){
    double r=i/256.-2,s=j/256.-2,q=r*r+s*s,n=hypot(r+(.866-r/2)/q,s+(r*.866+s/2)/q),
    d=.5/log(n);if(d<0||d>1)d=1;return d*(sin(n*10)*511+512);
}
unsigned short GR(int i,int j){
    return 0;
}
unsigned short BL(int i,int j){
    double r=i/256.-2,s=j/256.-2,q=r*r+s*s;return RD(i,j)*sqrt(q/40);
}

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


39

उद्देश्य सी

ऑब्जेक्टिव-सी कॉस में C ++ कोड को फिर से लिखें मैं इसे कंपाइल करने के लिए नहीं मिल सका ... इसने मेरे iPad पर चलने के दौरान अन्य उत्तर के समान परिणाम दिए, ताकि सभी अच्छे रहें।

यहाँ मेरा सबमिशन है:

त्रिकोण जालोर

इसके पीछे कोड काफी सरल है:

unsigned short red_fn(int i,int j)
{
    return j^j-i^i;
}
unsigned short green_fn(int i,int j)
{
    return (i-DIM)^2+(j-DIM)^2;
}
unsigned short blue_fn(int i,int j)
{
    return i^i-j^j;
}

संसाधित होने से पहले , आप गुणा iऔर jबाय 0.5, 0.25इत्यादि वर्गों में ज़ूम कर सकते हैं।


क्या आप सुनिश्चित हैं कि आपके द्वारा उपयोग किया गया समान कोड है? ^ देखने में अजीब लगता है, क्योंकि (i ^ i) हमेशा 0 (XOR) होता है, और ^ 2 XOR बिट की तुलना में एक वर्ग की तरह अधिक दिखता है।
मैनुअल फेरेरिया

1
@ManuelFerreria XOR के साथ, कोड वास्तव में इस तरह संकलित किया गया है: x^(x-y)^y(इसने मुझे पहली बार भी फेंक दिया)। यदि आपके पास iOS क्षमताएं हैं, तो यहां मेरा कोड है: gist.github.com/Jugale/28df46f87037d81d2a8f
Max Chuquimia

38

Sierpinski पेंट स्पलैश

मैं रंगों के साथ अधिक खेलना चाहता था इसलिए मैं अपना दूसरा उत्तर (सबसे जल्दी वाला) बदलता रहा और आखिरकार इसी के साथ समाप्त हुआ।

Sierpinski पेंट स्पलैश

unsigned short RD(int i,int j){
    return(sqrt(_sq(abs(73.-i))+_sq(abs(609.-j)))+1.)/abs(sin((sqrt(_sq(abs(860.-i))+_sq(abs(162.-j))))/115.)+2)/(115^i&j);
}
unsigned short GR(int i,int j){
    return(sqrt(_sq(abs(160.-i))+_sq(abs(60.-j)))+1.)/abs(sin((sqrt(_sq(abs(73.-i))+_sq(abs(609.-j))))/115.)+2)/(115^i&j);
}
unsigned short BL(int i,int j){
    return(sqrt(_sq(abs(600.-i))+_sq(abs(259.-j)))+1.)/abs(sin((sqrt(_sq(abs(250.-i))+_sq(abs(20.-j))))/115.)+2)/(115^i&j);
}

यह अब मेरा अवतार है। : पी


4
बहुत बढ़िया। सर, अच्छी नौकरी।
इटरऑफकोड

37

मैं इस प्रविष्टि को प्रस्तुत करने के लिए मजबूर महसूस करता हूं कि मैं "अपरिभाषित व्यवहार" कहूंगा, जो यह वर्णन करेगा कि आपका संकलक उन कार्यों के साथ क्या करता है जो मान वापस करने वाले हैं लेकिन नहीं:

unsigned short red_fn(int i,int j){}
unsigned short green_fn(int i,int j){}
unsigned short blue_fn(int i,int j){}

सभी काले पिक्सेल:

सभी काले पिक्सेल

छद्म यादृच्छिक पिक्सेल:

छद्म यादृच्छिक पिक्सल

और, ज़ाहिर है, आपके संकलक, कंप्यूटर, मेमोरी मैनेजर, आदि के आधार पर अन्य संभावित परिणामों का एक मेजबान।


3
जो आपको मिला?
21

3
मुझे ठोस काला और ठोस रंग मिला, जो अलग-अलग संकलक के साथ कार्यक्रम के विभिन्न रनों के बीच बदल गया।
21

8
मेरा संकलक सिर्फ त्रुटियां करता है और मूल्य वापस नहीं करने के लिए मुझ पर चिल्लाता है।
फराप

3
@ छप्पर कोई बुरी बात नहीं है :)
शुक्राणु

मुझे संदेह है कि आपको कभी भी ऐसी अच्छी यादृच्छिकता नहीं मिलेगी जैसा कि आपकी दूसरी तस्वीर बताती है। एक स्थिर मूल्य, लूप का सूचकांक आदि बहुत अधिक होने की संभावना है (जो फ़ंक्शन को कॉल करने पर ईएएक्स के अंदर संग्रहीत किया जाता है)।
उदाहरण

37

ग्रूवी

groovy.png

बस कुछ त्रिकोणमिति और अजीब मैक्रो ट्रिक।

आरडी:

#define I (i-512)
#define J (j-512)
#define A (sin((i+j)/64.)*cos((i-j)/64.))
return atan2(I*cos A-J*sin A,I*sin A+J*cos A)/M_PI*1024+1024;

जीआर:

#undef A
#define A (M_PI/3+sin((i+j)/64.)*cos((i-j)/64.))
return atan2(I*cos A-J*sin A,I*sin A+J*cos A)/M_PI*1024+1024;

बीएल:

#undef A
#define A (2*M_PI/3+sin((i+j)/64.)*cos((i-j)/64.))
return atan2(I*cos A-J*sin A,I*sin A+J*cos A)/M_PI*1024+1024;

संपादित करें: यदि M_PIकेवल POSIX- संगत सिस्टम पर मौजूद होने के कारण इसकी अनुमति नहीं है, तो इसे शाब्दिक के साथ बदला जा सकता है 3.14


1
मुझे आपके अतिरिक्त चरित्र मिल गए हैं, के acos(-1)लिए एक अच्छा प्रतिस्थापन है M_PI
मार्टिन एंडर

33

मैं गणित में अच्छा नहीं हूं। मैं गणित की कक्षा में हमेशा गरीब छात्र था। इसलिए मैंने सरल बना दिया।

mathpic1.png

मैंने संशोधित उपयोगकर्ता 1455003 का जावास्क्रिप्ट कोड इस्तेमाल किया । और यह मेरा पूरा कोड है

function red(x, y) {
    return (x + y) & y;
}

function green(x, y) {
    return (255 + x - y) & x;
}

function blue(x, y) {
    // looks like blue channel is useless
    return Math.pow(x, y) & y;
}

यह बहुत छोटा है इसलिए सभी तीन कार्य एक ट्वीट में फिट होते हैं।


mathpic2.png

function red(x, y) {
    return Math.cos(x & y) << 16;
}

function green(x, y) {
    return red(DIM - x, DIM - y);
}

function blue(x, y) {
    return Math.tan(x ^ y) << 8;
}

एक और बहुत छोटा कार्य। विभिन्न गणित कार्यों के साथ खिलवाड़ करते हुए मुझे यह सीरपिन्स्की पैटर्न (और कुछ स्पर्शरेखा पैटर्न) मिला। यह पूर्ण कोड है


बस i&jवास्तव में Sierpinski त्रिकोण प्रदान करता है। जो जबरदस्त है
cjfaure

वह अंतिम प्रोफ़ाइल प्रोफ़ाइल-योग्य है।
mbomb007

32

जावास्क्रिप्ट

var can = document.createElement('canvas');
can.width=1024;
can.height=1024;
can.style.position='fixed';
can.style.left='0px';
can.style.top='0px';
can.onclick=function(){
  document.body.removeChild(can);
};

document.body.appendChild(can);

var ctx = can.getContext('2d');
var imageData = ctx.getImageData(0,0,1024,1024);
var data = imageData.data;
var x = 0, y = 0;
for (var i = 0, len = data.length; i < len;) {
    data[i++] = red(x, y) >> 2;
    data[i++] = green(x, y) >> 2;
    data[i++] = blue(x, y) >> 2;
    data[i++] = 255;
    if (++x === 1024) x=0, y++;
}
ctx.putImageData(imageData,0,0);

function red(x,y){
if(x>600||y>560) return 1024
x+=35,y+=41
return y%124<20&&x%108<20?1024:(y+62)%124<20&&(x+54)%108<20?1024:0
}

function green(x,y){
if(x>600||y>560) return y%160<80?0:1024
x+=35,y+=41
return y%124<20&&x%108<20?1024:(y+62)%124<20&&(x+54)%108<20?1024:0
}

function blue(x,y) {
return ((x>600||y>560)&&y%160<80)?0:1024;
}

अमेरीका

एक और संस्करण। समारोह निकाय उल्लेखनीय हैं।

function red(x,y){
c=x*y%1024
if(x>600||y>560) return c
x+=35,y+=41
return y%124<20&&x%108<20?c:(y+62)%124<20&&(x+54)%108<20?c:0
}

function green(x,y){
c=x*y%1024
if(x>600||y>560) return y%160<80?0:c
x+=35,y+=41
return y%124<20&&x%108<20?c:(y+62)%124<20&&(x+54)%108<20?c:0
}

function blue(x,y) {
return ((x>600||y>560)&&y%160<80)?0:x*y%1024;
}

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

संशोधित छवि रेंडर समारोह। ड्रा (rgbFunctions, setCloseEvent);

function draw(F,e){
    var D=document
    var c,id,d,x,y,i,L,s=1024,b=D.getElementsByTagName('body')[0]
    c=D.createElement('canvas').getContext('2d')
    if(e)c.canvas.onclick=function(){b.removeChild(c.canvas)}
    b.appendChild(c.canvas)
    c.canvas.width=c.canvas.height=s
    G=c.getImageData(0,0,s,s)
    d=G.data
    x=y=i=0;
    for (L=d.length;i<L;){
        d[i++]=F.r(x,y)>>2
        d[i++]=F.g(x,y)>>2
        d[i++]=F.b(x,y)>>2
        d[i++]=255;
        if(++x===s)x=0,y++
    }
    c.putImageData(G,0,0)
}

बैंगनी

var purple = {
    r: function(i,j) {
        if (j < 512) j=1024-j
        return (i % j) | i
    },
    g: function(i,j){
        if (j < 512) j = 1024 -j
        return (1024-i ^ (i %j)) % j
    },
    b: function(i,j){
        if (j < 512) j = 1024 -j
        return 1024-i | i+j %512
    }
};

draw(purple,true);

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


बेईमान! बेईमान! ; डी (यह एक मान्य उत्तर है, बस बहुत चालाक: पी अच्छा एक!)
9

1
हाहा .. हाँ मुझे पता है इसलिए मैंने एक प्रस्तुत किया है जो प्रश्न की भावना में अधिक है। मैंने वास्तव में पैटर्न बनाने की कोशिश की और सोचा कि मुझे आश्चर्य होगा कि क्या वास्तव में कुछ आकर्षित कर सकता है।
वोल्फहैमर

आप उथले रंग की छवियों को थोड़ा-सा धनाढ्य बना सकते हैं, जिनमें से कुछ बिट्स में निचले-बिट्स में कुछ फिल्मी-अनाज के शोर को जोड़कर "Math.random () * 256" के अंत तक लगाया जा सकता है। हाइलाइट्स को बदलने के बिना अधिक यादृच्छिक रूप से गहरे रंगों को बनाता है। (और अंधेरे की सीमा के आधार पर संख्या में वृद्धि)
केंट फ्रेड्रिक

rgb यादृच्छिकता @ [10,728,728] i.imgur.com/ms4Cuzo.png
केंट फ्रेड्रिक

31

ग्रहों का चित्रकार

//red
static int r[DIM];int p=rand()%9-4;r[i]=i&r[i]?(r[i]+r[i-1])/2:i?r[i-1]:512;r[i]+=r[i]+p>0?p:0;return r[i]?r[i]<DIM?r[i]:DM1:0;
//green
static int r[DIM];int p=rand()%7-3;r[i]=i&r[i]?(r[i]+r[i-1])/2:i?r[i-1]:512;r[i]+=r[i]+p>0?p:0;return r[i]?r[i]<DIM?r[i]:DM1:0;
//blue
static int r[DIM];int p=rand()%15-7;r[i]=i&r[i]?(r[i]+r[i-1])/2:i?r[i-1]:512;r[i]+=r[i]+p>0?p:0;return r[i]?r[i]<DIM?r[i]:DM1:0;

मार्टिन की स्पष्ट रूप से जबरदस्त प्रविष्टि से प्रेरित , यह इस पर एक अलग तरह का है। पिक्सेल के एक हिस्से को रैंडमली सीडिंग करने के बजाय, मैं आरजीबी (512,512,512) के रूप में शीर्ष बाएं कोने से शुरू करता हूं, और वहां से प्रत्येक रंग पर यादृच्छिक चलता हूं। परिणाम टेलिस्कोप (imo) से कुछ दिखता है।

प्रत्येक पिक्सेल पिक्सल के औसत को ऊपर / बाईं ओर ले जाता है और थोड़ा ओ 'यादृच्छिक जोड़ देता है। आप pचर को बदलकर परिवर्तनशीलता के साथ खेल सकते हैं , लेकिन मुझे लगता है कि मैं जो उपयोग कर रहा हूं वह एक अच्छा संतुलन है (मुख्यतः क्योंकि मुझे नीला पसंद है, इसलिए अधिक धुंधला अस्थिरता अच्छे परिणाम देती है)।

औसतन पूर्णांक विभाजन से थोड़ा नकारात्मक पूर्वाग्रह होता है। मुझे लगता है कि यह बाहर काम करता है, हालांकि, और निचले कोने में एक अच्छा अंधेरा प्रभाव देता है।

बेशक, केवल एक परिणाम से अधिक प्राप्त करने के लिए, आपको srand()अपने मुख्य फ़ंक्शन में एक पंक्ति जोड़ने की आवश्यकता होगी ।

बैंड


2
यदि छवि थोड़ी बड़ी होती, तो यह प्रकाश की किरणों की तरह दिखाई देती। o:
cjfaure

1
@ cjfaure यदि आप छवि को पूर्ण आकार (डाउनलोड / राइट क्लिक करें और छवि / जो आपके सिस्टम पर काम करता है) देखें तो यह अतिरिक्त विवरण के साथ और भी सुंदर दिखता है।
ट्राइकोप्लाक्स

इसे काले रंग से घेरें, और इसे एक ग्रह बना देंगे!
खालिद .के।

1
मैंने इसे ब्लेंडर में एक गोले के चारों ओर लपेटने का प्रयास किया, और मैंने एक एनीमेशन प्रस्तुत किया। यहाँ देखें ti: gfycat.com/SameAnotherDinosaur
starbeamrainbowlabs

30

प्रतिबिंबित लहरें

unsigned char RD(int i,int j){
#define A static double w=8000,l,k,r,d,p,q,a,b,x,y;x=i;y=j;for(a=8;a+9;a--){for(b=8;b+9;b--){l=i-a*DIM-(int(a)%2?227:796);
return 0;}

unsigned char GR(int i,int j){
#define B k=j-b*DIM-(int(b)%2?417:606);r=sqrt(l*l+k*k);d=16*cos((r-w)/7)*exp(-_sq(r-w)/120);p=d*l/r;q=d*k/r;x-=p;y-=q;}}
return 0;}

unsigned char BL(int i,int j){AB
return (int(x/64)+int(y/64))%2*255;}

एक बुनियादी शतरंज बोर्ड पैटर्न एक बिंदु से फैलने वाली लहर की स्थिति के अनुसार विकृत हो गया जैसे कि एक तालाब में गिरा हुआ पत्थर (शारीरिक रूप से बहुत दूर!)। चर wउस बिंदु से पिक्सेल की संख्या है जो तरंग स्थानांतरित हो गई है। यदि wपर्याप्त बड़ा है, तो लहर छवि के किनारों से परिलक्षित होती है।

w = 225

w = 225 के साथ तरंगें

w = 360

लहरों के साथ = 360

w = 5390

w = 5390 वाली तरंगें

यहाँ एक GIF है जो छवियों के उत्तराधिकार को दिखाती है क्योंकि लहर का विस्तार होता है। मैंने विभिन्न आकारों की एक संख्या प्रदान की है, प्रत्येक 500KB फ़ाइल आकार सीमा के रूप में कई फ़्रेम दिखाएगा।

लहरों बड़े GIF

तरंगों छोटे GIF तरंगों मध्यम GIF


अगर मुझे इसमें फिट होने का कोई रास्ता मिल सकता है, तो मैं आदर्श रूप से लहर के हस्तक्षेप को मॉडल बनाना चाहूंगा ताकि लहरें पार होने पर अधिक यथार्थवादी दिखें। मैं हालांकि प्रतिबिंब से प्रसन्न हूं।

ध्यान दें कि मैंने वास्तव में 140 बाइट्स के 3 लॉट में वेव रिफ्लेक्ट नहीं किया है। वहाँ वास्तव में कोई प्रतिबिंब नहीं चल रहा है, यह सिर्फ ऐसा लगता है। यदि किसी ने पहले अनुमान लगाना चाहा हो तो मैंने स्पष्टीकरण छिपा दिया है:

पहली प्रतिबिंबित लहर छवि किनारे के दूसरी तरफ से निकलने वाली तरंग के समान है, मूल बिंदु के समान दूरी। इसलिए कोड 4 किनारों में से प्रत्येक से प्रतिबिंब के प्रभाव को देने के लिए आवश्यक 4 बिंदुओं के लिए सही स्थिति की गणना करता है। परावर्तित लहर के आगे के स्तर एक दूर टाइल में उत्पन्न होने वाली एक लहर के समान हैं, यदि आप एक विमान में एक टाइल के रूप में छवि की कल्पना करते हैं। कोड 189 अलग-अलग विस्तार वाले चक्रों को प्रदर्शित करके 8 स्तरों के प्रतिबिंब का भ्रम देता है, प्रत्येक को 17 से 17 ग्रिड में सही बिंदु पर रखा जाता है, ताकि वे ग्रिड के केंद्रीय वर्ग (यानी, छवि वर्ग) से गुजरें प्रतिबिंब के आवश्यक वर्तमान स्तर की छाप देने के लिए सिर्फ सही समय है। यह सरल (और संक्षिप्त!) कोड है, लेकिन काफी धीरे-धीरे चलता है ...


3
जीआईएफ और स्पष्टीकरण से प्यार करें।
DLosc

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

3
@DreamWarrior यह मेरे लिए धैर्यवान नहीं है। यह मेरा लैपटॉप है जो रात भर सोते हुए चलने का मन नहीं करता है ...
ट्राइकोप्लाक्स

2
मैं पचमन को दूसरी छवि में देखता हूं।
AL
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.