টুইটযোগ্য গণিত শিল্প [বন্ধ]


330

কোনও গ্রিডের উপরে রাখলে পূর্ণসংখ্যার গণিত আশ্চর্যজনক নিদর্শন তৈরি করতে পারে। এমনকি সর্বাধিক প্রাথমিক কার্যগুলি চমত্কারভাবে বিস্তৃত ডিজাইন উপস্থাপন করতে পারে!

আপনার চ্যালেঞ্জ

1024x1024 চিত্রের জন্য লাল, সবুজ এবং নীল মানগুলির জন্য 3 টি টিকেটযোগ্য (যার অর্থ 140 অক্ষর বা তার চেয়ে কম) ফাংশন বডি লিখুন।

ফাংশনগুলির ইনপুটটি দুটি পূর্ণসংখ্যা i (প্রদত্ত পিক্সেলের জন্য কলাম নম্বর) এবং জে (প্রদত্ত পিক্সেলের জন্য সারি সংখ্যা) এবং আউটপুট 0 এবং 1023 এর মধ্যে একটি স্বাক্ষরযুক্ত সংক্ষিপ্ত হবে, যা প্রদত্ত পরিমাণের প্রতিনিধিত্ব করে পিক্সেল উপস্থিত উপস্থিত (i, জে)।

উদাহরণস্বরূপ, নিম্নলিখিত তিনটি ফাংশন নীচে চিত্র উত্পাদন করে:

/* 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

নিয়ম

  • প্রদত্ত এই সি ++ কোড , আপনার ফাংশন বিকল্প। আমি কয়েকটি ম্যাক্রো সরবরাহ করেছি এবং গ্রন্থাগারটি অন্তর্ভুক্ত করেছি এবং আপনি জটিল শৃঙ্খলা অন্তর্ভুক্ত করতে পারেন। আপনি এই লাইব্রেরি এবং / অথবা আমার ম্যাক্রোগুলি থেকে যে কোনও ফাংশন ব্যবহার করতে পারেন। দয়া করে এর বাইরে কোনও বাহ্যিক সংস্থান ব্যবহার করবেন না।
  • যদি সেই সংস্করণটি আপনার জন্য কাজ করে না, আপনি এটি সংকলন করে তা নিশ্চিত করুন:

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

    যদি এটি কাজ না করে, দয়া করে স্বাক্ষরযুক্ত শর্টসের পরিবর্তে স্বাক্ষরযুক্ত অক্ষর ব্যবহার করে বিকল্প সংস্করণটি ব্যবহার করুন।

মাইকেলেঞ্জেলো একটি ক্লিন আপ আপ 24-বিট বা 48-বিট রঙিন আউটপুট সংস্করণ সরবরাহ করেছে।

  • আপনি নিজের ভাষায় অন্য ভাষায় প্রয়োগ করতে পারেন, তবে এটি অবশ্যই প্রদত্ত সি ++ সংস্করণের মতো আচরণ করবে এবং কেবলমাত্র সি ++ এর বিল্ট-ইনগুলি থেকে, লাইব্রেরি বা প্রদত্ত ম্যাক্রোগুলিকে এটি সুষ্ঠু করতে ব্যবহার করা যেতে পারে।
  • কেবলমাত্র আপনার তিনটি ফাংশন বডি পোস্ট করুন - দয়া করে আপনার পোস্টে আমার কোডটি অন্তর্ভুক্ত করবেন না
  • একটি ছোট সংস্করণ বা আপনার চিত্র একটি এম্বেড কপি অন্তর্ভুক্ত করুন। এগুলি পিপিএম ফর্ম্যাটে তৈরি করা হয়েছে এবং স্ট্যাকেক্সচেঞ্জে সঠিক দেখার জন্য অন্যটিতে রূপান্তর করতে হতে পারে।
  • ফাংশন বডিগুলি (স্বাক্ষর সহ নয়) অবশ্যই 140 টি অক্ষর বা তার চেয়ে কম হতে হবে।
  • এটি একটি জনপ্রিয়তা প্রতিযোগিতা - বেশিরভাগ ভোটে জয়লাভ

3
সি ++ ট্যাগ যুক্ত করা হয়েছে কারণ নিয়মের প্রকৃতি অন্যান্য ভাষা বাদ দেয়। আমরা সাধারণত ভাষা-অজ্ঞাত চ্যালেঞ্জগুলি পছন্দ করি যদি না তাদের কাছে নির্দিষ্ট সেটের প্রয়োজনের উপযুক্ত কারণ থাকে।
অ্যালগরিদমশর্ক 4

4
একে খুব বিস্তৃত বলার কাছের ভোটারদের কাছে, দয়া করে প্রথমে এর উত্তর লেখার চেষ্টা করুন। এটি আশ্চর্যজনকভাবে সীমাবদ্ধ ...
ট্রাইকোপ্লাক্স

8
এটি আমার প্রিয় জিনিস যা আমি এখানে কখনও দেখেছি!
ডেভিড কনরাড

4
আমি পছন্দ করি যে এই প্রশ্নটি একটি পুরানো-স্কুল ডেমো দৃশ্যের মতো মনে হচ্ছে।
এমএসকিফিশার

23
এই ধরণের প্রশ্ন কোড গল্ফে অংশগ্রহণকে উত্সাহ দেয় । আমি সাধারণত সরাসরি গল্ফ প্রশ্নের উত্তর দিতে আগ্রহী না কারণ আমি ভাল করার বিষয়ে আত্মবিশ্বাসী নই। এই ধরণের প্রশ্নের সাথে বাইট সীমাটি আমাকে একটি সহজ উত্তর চেষ্টা করে, গল্ফিংয়ের কৌশলগুলি শিখায় এবং তারপরে আরও জটিল উত্তর দেওয়ার জন্য সেগুলি ব্যবহার করে। সোজা গল্ফ প্রশ্নের উত্তর দেওয়ার জন্য এটি একটি পদক্ষেপের মতো। আমি মনে করি এটি আরও বেশি লোককে নিয়ে আসার ক্ষেত্রে গুরুত্বপূর্ণ হতে পারে
ট্রিকোপলাক্স

উত্তর:


120

ম্যান্ডেলব্রোট 3 এক্স 133 অক্ষর

আমার মনে যে প্রথম জিনিসটি ছড়িয়ে পড়েছিল তা হ'ল "ম্যান্ডেলব্রট!"।

হ্যাঁ, আমি জানি ইতিমধ্যে একটি ম্যান্ডেলব্রোট জমা দেওয়া আছে। আমি নিজেই এটি 140 টি অক্ষরের নীচে পেতে সক্ষম হয়েছি তা নিশ্চিত করার পরে, আমি সেই সমাধান থেকে কৌশলগুলি এবং অপ্টিমাইজেশানগুলিকে খনিতে গ্রহণ করেছি (ধন্যবাদ মার্টিন এবং টড)। একটি আকর্ষণীয় অবস্থান এবং জুম, পাশাপাশি একটি সুন্দর রঙের থিম বেছে নিতে সেই বাম স্থানটি:

mandelbrot

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);
}

মোট ১৩২ টি চর

আমি এটি 3 টি চ্যানেলের জন্য 140 এ নামানোর চেষ্টা করেছি। প্রান্তের কাছাকাছি রঙের কিছুটা শব্দ রয়েছে এবং অবস্থানটি প্রথমটির মতো আকর্ষণীয় নয়, তবে: ১৩২ টি অক্ষর

mandelbrot-reduced

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;
}

ফ্ল্যাট টেবিল কাপড়

লহরী, তরঙ্গ, ঢেউ

তারপরে আমি একটি রিপল প্রবর্তন করলাম (দৃ strictly়ভাবে সঠিক দৃষ্টিকোণ নয়, তবে এখনও 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
কেবলমাত্র এখনও কেবল চিত্রগুলি তৈরি করা যায়। জিআইএফ স্থির ফ্রেমের একটি ক্রম দেখায়, যার প্রতিটিই পরে মান পরিবর্তন করে উত্পাদিত হয়েছিল #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% এর জন্য এটি একটি এলোমেলো রঙ চয়ন করে, অন্যদের জন্য এটি এলোমেলো সংলগ্ন পিক্সেলের হিসাবে একই রঙ ব্যবহার করে। নোট করুন যে প্রতিটি রঙ এটি স্বতন্ত্রভাবে করে থাকে, সুতরাং এটি আসলে একটি এলোমেলো সবুজ, নীল এবং লাল ছবির over বিভিন্ন রানে বিভিন্ন ফলাফল পেতে, আপনাকে ফাংশনে যুক্ত srand(time(NULL))করতে mainহবে।

এখন কিছু পরিবর্তনের জন্য।

পিক্সেল এড়িয়ে আমরা এটিকে কিছুটা ঝাপসা করে দিতে পারি।

এখানে চিত্র বর্ণনা লিখুন

এবং তারপরে আমরা আস্তে আস্তে রঙগুলি পরিবর্তন করতে পারি, যেখানে ওভারফ্লোগুলি হঠাৎ পরিবর্তনের ফলে ঘটে যা এই চেহারাটিকে ব্রাশ স্ট্রোকের মতো করে তোলে more

এখানে চিত্র বর্ণনা লিখুন

আমার যে জিনিসগুলি খুঁজে বের করতে হবে তা:

  • কোনও কারণে আমি srandসেগফল্ট না পেয়ে those ফাংশনগুলির মধ্যে রাখতে পারি না ।
  • আমি যদি তিনটি রঙ জুড়ে এলোমেলো পদক্ষেপগুলি দেখতে পারি তবে এটি কিছুটা সুশৃঙ্খল দেখাবে।

আপনি এলোমেলোভাবে হাঁটা আইসোট্রপিকও করতে পারেন like

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];

আপনাকে দিতে

এখানে চিত্র বর্ণনা লিখুন

আরও এলোমেলো পেইন্টিং

আমি এটি আরও কিছুটা ঘুরে দেখলাম এবং কিছু অন্যান্য এলোমেলো পেইন্টিং তৈরি করেছি। এই সমস্তই এই চ্যালেঞ্জের সীমাবদ্ধতার মধ্যে সম্ভব নয়, তাই আমি তাদের এখানে অন্তর্ভুক্ত করতে চাই না। তবে আপনি কীভাবে এগুলি তৈরি করেছি তার কিছু বিবরণ সহ আপনি এই ইমগর গ্যালারীটিতে দেখতে পারেন ।

আমি এই সমস্ত সম্ভাবনাগুলি একটি কাঠামোর মধ্যে বিকাশ করতে এবং গিটহাবের উপরে রাখার জন্য প্রলুব্ধ হয়েছি। (এই জাতীয় জিনিসগুলি ইতিমধ্যে বিদ্যমান নয়, তবে এটি মজাদার!)


12
আমি এগুলো ভালবাসি. আমি বুঝতে পারি নি যে পিক্সেল ডেটা অ্যাক্সেস না করেই সংলগ্ন পিক্সেলগুলিতে নেওয়া সম্ভব হবে - মসৃণ কাজ!
ট্রাইকোপলাক্স

1
আমাকে পুরানো এই প্রতিযোগিতার খুব মনে করিয়ে দেয় যেখানে নিয়মগুলি প্রতি রঙের একটি পিক্সেল রাখে।
তেহ ইন্টারনেটস ক্যাটজ দিয়ে

2
কি দারুন! এই ছবিগুলি একেবারে সুন্দর!
raptortech97

1
দুর্দান্ত গ্যালারী, রেডিয়ালগুলি ঝরঝরে।
তেহ ইন্টারনেটস ক্যাটজ দিয়ে

2
আমি রিপ্টারটি দেখছি : পোস্টের সর্বশেষ চিত্র (আইসোট্রপিক এক), উপরের-ডান চতুষ্কোণ।
টিম পেডারিক

162

কিছু swirly বিন্দু জিনিস

হ্যাঁ, আমি ঠিক কী জানি যে এর নামকরণ করতে হবে।

কিছু swirly বিন্দু জিনিস

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;
}

সম্পাদনা: আর ব্যবহার হয় না powসম্পাদনা 2: @ ফিলনোটপি উল্লেখ করেছেন যে আমার এতটা অ্যাবস ব্যবহার করার দরকার নেই।

ভিন্ন চিত্র পেতে আপনি খুব সহজেই রেফারেন্স পয়েন্টগুলি পরিবর্তন করতে পারেন:

আরও কিছু তীব্র বিষয়বস্তু

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;
}

@ এরিকট্রেসার উল্লেখ করেছেন যে আমার ছবিগুলিতে ব্যাটম্যান রয়েছে।

সেনাপতির পরিচারক


1
@ জায়কোমিনেক আমি জানতাম না, আমি তখন আর কাছাকাছি ছিলাম না ডি:
সিজেফিউর

2
@ যাকমিনেক আমি এটি খুঁজে পেয়েছি। web.archive.org/web/19990221092445/http://www.blorf.com/…
cjfaure

1
@ সিজেফুরে ওহ! ধন্যবাদ! দেখে মনে হচ্ছে বর্ণনার চূড়ান্ত সংস্করণটি এখানে রয়েছে: web.archive.org/web/20031205062033/http://www.blorf.com/~mrad/… এবং কোডটি সোর্সফোরেজে স্থানান্তরিত হয়েছিল। গত বছরও আপডেট হয়েছে! sourceforge.net/projects/libswirlies
জে 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
@ টমসডিংয়ের পরে আমাকে স্বীকার করতে হবে, আমি প্রথমবারের মতো ম্যান্ডেলব্রোট সেটটি প্রয়োগ করেছি।
মার্টিন ইন্ডার

2
পূর্ণ ম্যান্ডেলব্রোট সেট হিসাবে আইকনিক যেমন (+1, যাইহোক!), দেখে মনে হচ্ছে আপনি প্যারামিটারগুলি সামঞ্জস্য করার জন্য এবং গভীর জুমের কিছু চমকপ্রদ মোচড়ের বিশদ সহ উত্তর পোস্ট করার মতো যথেষ্ট জায়গা রেখেছেন।
ট্রাইকোপ্লেক্স

1
@ গিথুব্যাগগোসাইটে আমি ইতিমধ্যে এটি সম্পর্কে ভেবেছিলাম, তবে প্রতিশ্রুতিবদ্ধ এবং পুনরায় চালু করতে এবং প্রতিবছর রূপান্তরিত করার জন্য বিরক্ত করা যায় না যতক্ষণ না আমি শালীন পরামিতিগুলি সন্ধান করি;)। পরে এটি করতে পারে। প্রথমে যদিও সম্পূর্ণ ভিন্ন ফাংশনটি চেষ্টা করে দেখতে পেলাম। ;)
মার্টিন ইন্ডার

2
@ githubphagocyte অবশেষে এটি যোগ করার কাছাকাছি পেয়েছে। পরামর্শের জন্য ধন্যবাদ!
মার্টিন ইন্ডার

2
ধন্যবাদ @ টড, আমি এটির সাথে চূড়ান্ত ছবিটি আপডেট করেছি। আমি 25600 পুনরাবৃত্তি ব্যবহার করেছি, এটি যথেষ্ট দীর্ঘ। ;)
মার্টিন ইন্ডার 21

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) তবে সি ++ হেক্সাডেসিমাল ভাসমান পয়েন্ট সাহিত্যিকদের অনুমতি দেয় না সুতরাং এটি ছিল একটি মৃত-শেষ (অন্তত আমার সীমিত জ্ঞানের সাথে)। এটি অর্জনের জন্য আমি কিছু ভারী ingালাই ব্যবহার করতে পারতাম, তবে এটি 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) দিয়ে র‌্যান্ডমাইজ করার সুযোগ রয়েছে?
স্পার

2
শেষটি আমার দেয়ালে চলছে।
সিজেফুরে

@ স্পার আপনার পরামর্শের সাথে আপডেট হয়েছে। কিছু মজা ছিল :-)।
তেহ ইন্টারনেটস আগত

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
এটি আমার প্রিয়। দেখে মনে হচ্ছে এটি পেশাদারভাবে তৈরি গ্রাফিক ডিজাইনের একটি অংশ। : ডি
সিজেফুরে

4
এটি মাইক্রোপ্রসেসরগুলির একটি ওয়েফারের মতো দেখাচ্ছে। ম্যাক্রোফোটোগ্রাফার.নেট
চিত্র

এটি একটি মিনিমালিস্ট ওয়ালপেপারের মতো দেখাচ্ছে ।
এএল


82

বুদ্ধব্রত (+ অ্যান্টিবুদ্ধব্রোট)

সম্পাদনা: এটি এখন একটি সঠিক বুদ্ধব্রত!

সম্পাদনা: আমি বাইট সীমাতে রঙের তীব্রতা ক্যাপ করতে সক্ষম হয়েছি, সুতরাং অতিরিক্ত প্রবাহের কারণে ভুয়াভাবে কালো পিক্সেল নেই।

আমি সত্যিই চার পরে থামতে চেয়েছিলাম ... কিন্তু ...

এখানে চিত্র বর্ণনা লিখুন

এটি আপলোড চলাকালীন সামান্য সংকুচিত হয়ে যায় (এবং এমবেডিংয়ে সঙ্কুচিত হয়) সুতরাং আপনি যদি সমস্ত বিবরণকে প্রশংসা করতে চান তবে আকর্ষণীয় 512x512 ক্রপ আউট হয়েছে (যা সংকুচিত হয় না এবং এর পূর্ণ আকারে প্রদর্শিত হয়):

এখানে চিত্র বর্ণনা লিখুন

ধারণার জন্য গিথুবাগোগাইটকে ধন্যবাদ। এটির জন্য তিনটি রঙের ফাংশনের কিছু জটিল জটিল ব্যবহার প্রয়োজন:

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 বাই 2 গ্রিড এবং 10 কে পুনরাবৃত্তির সাথে সজ্জিত ফলাফল পেতে পারেন, যা দুই মিনিট সময় নেয় এবং এমনকি 1k দ্বারা 1 কে গ্রিডে 1 কে পুনরাবৃত্তিগুলি দেখতে খুব সুন্দর লাগে (এটি 3 সেকেন্ডের মতো লাগে)। আপনি যদি এই পরামিতিগুলির সাথে চারদিকে ঘুরতে চান তবে কয়েকটি জায়গা রয়েছে যা পরিবর্তন করতে হবে:

  • Mandelbrot পুনরাবৃত্তির গভীরতা পরিবর্তন করতে, উভয় স্থানেই সমন্বয় 5e5মধ্যে BLআপনার পুনরাবৃত্তির গণনা করা হয়।
  • গ্রিড রেজল্যুশন পরিবর্তন করতে, চারটি পরিবর্তন 4096মধ্যে RDআপনার পছন্দসই রেজল্যুশন এবং 1024.মধ্যে GRসঠিক স্কেলিং বজায় রাখার জন্য একই গুণক দ্বারা।
  • আপনি সম্ভবত এছাড়াও স্কেল করতে হবে return c[i][j]সালে GRযেহেতু যে শুধুমাত্র প্রতিটি পিক্সেল এর ভিজিট পরম সংখ্যা উপস্থিত রয়েছে। সর্বাধিক রঙটি পুনরাবৃত্তি গণনা থেকে বেশিরভাগই স্বতন্ত্র বলে মনে হয় এবং প্রারম্ভিক পয়েন্টগুলির মোট সংখ্যার সাথে লিনিয়ার স্কেল করে। সুতরাং আপনি যদি 1 কে বাই 1 কে গ্রিড ব্যবহার করতে চান তবে আপনি এটি করতে চান 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
আমি এটি একটি টুপি করা হবে।
সিজেফুরে

6
আমি সত্যিই অবাক হয়েছি যে আপনি এটি 140 টি বাইটের 3 টিতে নেমে এসেছেন। নতুন বুদব্রোট চিত্রটি সুন্দর।
ট্রাইকোপলাক্স

4
এটি সত্যিই চিত্তাকর্ষক।
কপ্পাম্পুন

প্রথমটি সত্যিই শৈল্পিক। আমাকে জেলিফিশ মনে করিয়ে দেয়। +1
ইগবি লার্জম্যান

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];}

ধন্যবাদ মার্টিন Büttner ধারণা বদলে প্রধান ফাংশন রাস্টার অর্ডার অবধি সীমিত হচ্ছে memoisation ব্যবহার করে একটি অবাধ অনুক্রমে পিক্সেল ভরাট জন্য এক ফাংশন একটি ম্যাক্রো সংজ্ঞা তারপর অন্য ব্যবহারের জন্য, এবং এছাড়াও প্রশ্ন মন্তব্যের উল্লেখ জন্য ।

পঁচকোণ

চিত্রটি 500KB এর বেশি হয়ে গেছে তাই এটি স্ট্যাক এক্সচেঞ্জের মাধ্যমে স্বয়ংক্রিয়ভাবে jpg তে রূপান্তরিত হয়। এটি কিছু সূক্ষ্ম বিশদটি ঝাপসা করে, সুতরাং আমি আসল চেহারাটি দেখানোর জন্য ঠিক উপরের ডান প্রান্তিকে একটি পিএনজি হিসাবে অন্তর্ভুক্ত করেছি:

উপরের ডানে


73

পত্রক সংগীত

সিয়েরপিনস্কি সংগীত। : ডি চ্যাট করার ছেলেরা বলে যে এটি মিউজিক বাক্সগুলির জন্য খোঁচা কাগজের মতো দেখাচ্ছে।

শিট সংগীত

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);
}

এটি কীভাবে কাজ করে তার কিছু বিশদ ... ওম, এটি কিছুটা avyেউয়ের সিয়ারপিনস্কি ত্রিভুজ রেন্ডারে আসলে একটি জুম-ইন। শীট-সঙ্গীত চেহারা (এবং এছাড়াও ব্লকনেস) পূর্ণসংখ্যা কাটা ফলাফল। আমি যদি লাল ফাংশনটি এতে পরিবর্তন করি তবে বলুন,

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

ছাঁটাই সরানো হয়েছে এবং আমরা সম্পূর্ণ রেজোলিউশন রেন্ডার পেয়েছি:

অ-ব্লক শিট সংগীত

হ্যাঁ, এটি আকর্ষণীয়।


1
মত এটা Squarepusher মধ্যে প্রতিলিপি neumes
খুঁতখুঁতে ossifrage

1
@ স্কোয়ামিশোসিফ্রেজে আমি কী দেখলাম ...?
সিজেফুরে

:-) ক্রিস কানিংহাম এর ভিডিও হয় একটু অদ্ভুত, তারা না?
খুঁতখুঁতে ossifrage

14
দ্বিতীয়টি দেখে মনে হচ্ছে এটি চলমান আছে যখন আমি পৃষ্ঠাটি স্ক্রোল করব
ব্যবহারকারীর 13267

5
সাইটটি স্ক্রোল করার সময়, শেষটি সত্যিই চলন্ত বলে মনে হয়েছিল। চমৎকার অপটিক্যাল মায়া।
কাইল কানোজ

61

এলোমেলো ভোরোনাই ডায়াগ্রাম জেনারেটর কেউ?

ঠিক আছে, এই আমাকে কঠিন সময় দিয়েছে। আমি মনে করি যদিও এটি খুব সুন্দর যদিও ফলাফলগুলি অন্য কারও মতো অতুল্কর না হলেও । এলোমেলো সাথে চুক্তি। কিছু মধ্যবর্তী চিত্রগুলি আরও ভাল দেখায়, তবে আমি সত্যিই ভোরোনাই ডায়াগ্রামগুলির সাথে একটি সম্পূর্ণরূপে কার্যকরী অ্যালগরিদম পেতে চেয়েছিলাম।

এখানে চিত্র বর্ণনা লিখুন

সম্পাদনা:

এখানে চিত্র বর্ণনা লিখুন

এটি চূড়ান্ত অ্যালগরিদমের একটি উদাহরণ। চিত্রটি মূলত তিনটি ভোরোনাই চিত্রের সুপারপজিশন, প্রতিটি রঙের উপাদানগুলির জন্য একটি (লাল, সবুজ, নীল)।

কোড

অবহেলিত, শেষে সংস্করণ মন্তব্য

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

এখানে চিত্র বর্ণনা লিখুন

আমি এটিকে জেপেইজে রূপান্তর করেছি কারণ আসল png আপলোডের জন্য খুব ভারী ছিল ( >2MB), আমি বাজি ধরেছি যে 50 ধরণের ধূসর এর চেয়ে বেশি শেড!

দ্বিতীয়: একটি ভাল y সমন্বয় আছে

yঅক্ষের জন্য এলোমেলোভাবে উত্পাদিত স্থানাঙ্কের আরেকটি টেবিল আমি তুলতে পারি না, সুতরাং যতটা সম্ভব কম অক্ষরে " এলোমেলো "গুলি পাওয়ার জন্য আমার একটি সহজ উপায় প্রয়োজন । আমি xটেবিলের অন্য পয়েন্টের স্থানাঙ্কটি ব্যবহার করতে গিয়েছিলাম , পয়েন্টের সূচকটিতে ANDকিছুটা দিক দিয়ে।

এখানে চিত্র বর্ণনা লিখুন

তৃতীয়: আমার মনে নেই তবে ভাল লাগছে

তবে এই মুহুর্তে আমি 140 টিরও বেশি পথ পেরিয়ে এসেছি, তাই আমার এটি বেশ কিছুটা গল্ফ করা দরকার।

এখানে চিত্র বর্ণনা লিখুন

৪ র্থ: স্ক্যানলাইনস

শুধু মজা করছি, এটি চাওয়া নয় বরং ধরণের, মিথথিক্স।

এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন

এখনও অ্যালগরিদমের আকার হ্রাস করার জন্য কাজ করছি, আমি উপস্থাপন করতে পেরে গর্বিত:

স্টারফক্স সংস্করণ

এখানে চিত্র বর্ণনা লিখুন

ভোরোনাই ইনস্টাগ্রাম

এখানে চিত্র বর্ণনা লিখুন

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
এটি আমার ব্যক্তিগত পছন্দের একটি। স্ক্যান লাইন রূপগুলি খুব নান্দনিকভাবে আনন্দদায়ক।
ফ্রেক্সটিল 7'14

1
আপনি কোডটি কীভাবে ব্যাখ্যা করেছেন তা পছন্দ করুন
অ্যান্ডরিয়া

ব্যারেল রোল!
স্টারসন হচসচাইল্ড

চতুর্থ দ্বিতীয় ছবি: স্ক্যানলাইনগুলি সুন্দর।
খালেদ.কে

57

লিয়াপুনভ ফ্র্যাক্টাল

লিয়াপুনভ ফ্র্যাক্টাল

এটি তৈরি করতে ব্যবহৃত স্ট্রিংটি ছিল আবাব এবং প্যারামিটারের স্থানটি ছিল [২,৪] x [২,৪]। ( এখানে স্ট্রিং এবং প্যারামিটার স্পেসের ব্যাখ্যা )

সীমিত কোড স্পেস সহ আমি ভেবেছিলাম এই রঙটি বেশ দুর্দান্ত।

    //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);

আমি ম্যান্ডেলব্রোট সেটটিরও একটি প্রকরণ তৈরি করেছি। এটি ম্যান্ডেলব্রোট সেট মানচিত্রের অনুরূপ একটি মানচিত্র ব্যবহার করে। বলুন এম (x, y) হ'ল ম্যান্ডেলব্রোট মানচিত্র। তারপরে এম (পাপ (এক্স), কোস (y)) হ'ল আমি যে মানচিত্রটি ব্যবহার করি তা পরিবর্তনের জন্য আমি এক্স ব্যবহার করি এবং আমি সর্বদা আবদ্ধ থাকায় y ব্যবহার করি 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);

এখানে চিত্র বর্ণনা লিখুন

সম্পাদনা

অনেক ব্যথার পরে অবশেষে আমি দ্বিতীয় চিত্রটি মুরফিংয়ের একটি জিআইএফ তৈরি করতে পারি। এটা এখানে:

পার্টি সময়


11
দ্বিতীয় সাইক্যাডেলিক চেহারা।
তেহ ইন্টারনেটস

4
এগুলো পাগল ! +1
সিজেফুরে

10
ভয়ানক ফ্র্যাক্টাল ভয়ঙ্কর is ༎ ຶ ෴ ༎ ༎ ຶ ༽
টোবিয়া

1
পবিত্র বিষ্ঠা দ্বিতীয় যে ভীতিজনক। সাধারণ z = z ^ 2 + c থেকে আপনি কতটা বেরিয়ে আসতে পারবেন তা অ্যামেক্সিং করুন।
টমসডিং

4
এডওয়ার্ড মঞ্চ যদি ফ্র্যাক্টাল আঁকতেন তবে এই স্ক্রিমের মতো দেখতে হত ।
তেহ ইন্টারনেটস ক্যাটজ দিয়ে

55

ইউনিকর্ন কারণ।

ইউনিকর্ন কারণ

আমি ওপিএস সংস্করণ unsigned shortএবং 1023 অবধি রঙের মানগুলি সহ কাজ করতে পারি না, সুতরাং এটি স্থির না হওয়া পর্যন্ত এখানে একটি সংস্করণ charএবং 255 এর সর্বাধিক রঙ মান ব্যবহার করা হবে ।

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

# নির্ধারিত সমস্তগুলি 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
            }
        }            
    }    
}

প্রদত্ত r (j মান) এর জন্য যেখানে x এর মানগুলি প্রায়শই পড়ে যায়, প্লটটি হালকা হয় (সাধারণত গাer় হিসাবে চিত্রিত হয়)।


3
ওহ, আমি গতকাল এটি কীভাবে করব তা নিয়ে ভাবছিলাম। এটি নির্ধারণের জন্য +1। আমি আসলে জিনিসটি প্যালেটটি দেখতে যেমন সুন্দর তেমন সুন্দর! :)
মার্টিন ইন্ডার

2
আমি আপনার এবং গিথুব্যাগগোসাইট থেকে নোংরা কৌশলগুলি চুরি করেছি, যদিও আমি কুৎসিত # ডেফাইনসটির জন্য দায়বদ্ধ হয়েছি। বিশেষত "# ডেফাইন জি এর জন্য ("।
এরিক ট্র্রেসার

1
টুর্নামেন্ট বন্ধনী ভিজ্যুয়ালাইজারের মতো দেখতে আরও বেশি
কেভিন এল

3
শীর্ষে চিত্রিত নয়: বিজয়ী মারা গেছে
এরিক ট্র্রেসার

1
আমি কি এর পোস্টার আকারের মুদ্রণ পেতে পারি? পটভূমিতে 3 টি বিবর্ণ টুইট রয়েছে। :-)
অ্যান্ড্রু চিউং

50

ডিফিউশন সীমিত সমষ্টি

আমি সর্বদা প্রসারণ সীমিত সংহত এবং প্রকৃত বিশ্বে এটি প্রদর্শিত বিভিন্ন উপায়ে মুগ্ধ হয়েছি ।

এটি ফাংশন অনুযায়ী মাত্র ১৪০ টি অক্ষরে লিখতে আমার অসুবিধা হয়েছে সুতরাং কোডটি আমাকে ভয়ঙ্কর করে তুলতে হয়েছে (বা সুন্দর, যদি আপনি পছন্দ করেন ++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];}

প্রসারণ সীমিত সমষ্টি

কণাগুলি কীভাবে ধীরে ধীরে একত্রিত হয় তা কল্পনা করতে, আমি নিয়মিত বিরতিতে স্ন্যাপশট তৈরি করি। প্রতিটি ফ্রেম 1 এর পরিবর্তে for(n=1;n;n++)0, -1 << 29, -2 << 29, -3 << 29, 4 << 29, 3 << 29, 2 << 29, 1 << 29, 1. এটি এটি প্রতিটি রানের জন্য ১৪০ অক্ষরের সীমাতে রেখেছে।

অ্যানিমেটেড সমষ্টি

আপনি দেখতে পাচ্ছেন যে একে অপরের নিকটে ক্রমবর্ধমান সমষ্টিগুলি একে অপরকে কণা থেকে বঞ্চিত করে এবং আরও ধীরে ধীরে বৃদ্ধি পায়।


কোডটিতে সামান্য পরিবর্তন করে আপনি অবশিষ্ট কণাগুলি দেখতে পারবেন যা এখনও সামগ্রিকগুলির সাথে সংযুক্ত হয়নি। এটি হ্রাসকারী অঞ্চলগুলি দেখায় যেখানে বৃদ্ধি আরও দ্রুত ঘটবে এবং সমষ্টিগুলির মধ্যে খুব স্পর্শকাতর অঞ্চল যেখানে সমস্ত কণাগুলি ব্যবহৃত হওয়ার কারণে বেশি বৃদ্ধি পাবে না।

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];}

দৃশ্যমান কণা সহ ডিএলএ

এটি আগের মতো একইভাবে অ্যানিমেটেড করা যায়:

কণা সহ অ্যানিমেটেড সমষ্টি



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;
}

আমি আস্তে আস্তে একটি সাধারণ সর্পিলের উপর তৈরি করেছি, সর্পিল প্রান্তগুলিতে নিদর্শনগুলি যুক্ত করেছি এবং শীতল দেখতে দেখতে কীভাবে বিভিন্ন সর্পিল একত্রিত করা যায় তা নিয়ে পরীক্ষা-নিরীক্ষা করেছি। প্রতিটি টুকরা কী করে তা ব্যাখ্যা করার জন্য এখানে একটি অদম্য সংস্করণ রয়েছে। পরামিতিগুলির সাথে জগাখিচুড়ি কিছু আকর্ষণীয় ফলাফল আনতে পারে।

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;
}

পরামিতিগুলির সাথে বিশৃঙ্খলা:

এখানে, সর্পিলগুলি সারিবদ্ধভাবে যুক্ত রয়েছে তবে বিভিন্ন প্রান্তের নিদর্শন রয়েছে। প্রধান উদাহরণে অবরুদ্ধ প্রান্তগুলির পরিবর্তে, এটি সম্পূর্ণরূপে পাপ তরঙ্গগুলির সমন্বয়ে প্রান্তযুক্ত।

প্রান্ত

এখানে, গ্রেডিয়েন্টটি সরানো হয়েছে:

কোন গ্রেডিয়েন্ট

একটি অ্যানিমেশন ( যা কোনও কারণে এটি আপলোড করার পরে লুপিং হিসাবে উপস্থিত হবে না বলে দুঃখিত, দুঃখিত, এছাড়াও এটি সঙ্কুচিত করতে হয়েছিল you আপনি যদি অ্যানিমেশনটি মিস করেন তবে এটি একটি নতুন ট্যাবে খুলুন ):

অ্যানিমেশন

এবং, এখানে ইমগুর অ্যালবাম সমস্ত চিত্র সহ । আমি দেখতে চাই যে কেউ অন্য শান্ত সর্পিল নিদর্শনগুলি খুঁজে পেতে পারে কিনা। এছাড়াও, আমি অবশ্যই বলতে পারি, এটি আমি এখানকার সর্বোত্তম চ্যালেঞ্জগুলির মধ্যে এখন পর্যন্ত দেখেছি। উপভোগ করুন!

সম্পাদনা: পরিবর্তিত পরামিতিগুলির সাথে এই সর্পিলগুলি থেকে তৈরি কিছু পটভূমি এখানে রয়েছে ।

এছাড়াও, জোর / এবং / অথবা অপারেশনের মাধ্যমে আমি এখানে যে কয়েকটি ফ্র্যাক্টাল দেখেছি তার সাথে আমার সর্পিল প্রান্তের নিদর্শনগুলি একত্রিত করে এখানে একটি চূড়ান্ত সর্পিল দেওয়া হয়েছে:

ফ্র্যাক্টাল সর্পিল


2
এগুলি দুর্দান্ত! আপনি যদি অন্য উত্তরগুলি ঘুরে দেখেন তবে আরও বেশি জায়গা চাইলে আপনি এটিকে আরও গল্ফ দেওয়ার জন্য ধারণা পেতে সক্ষম হতে পারেন। উত্তরগুলির মধ্যে কয়েকটি একটি ম্যাক্রো সংজ্ঞায়িত করতে একটি ফাংশনে # ডেফাইন ব্যবহার করে যা সমস্ত 3 ব্যবহার করতে পারে, তাই আপনি গণনার সিংহভাগ অন্যান্য রঙ ফাংশনে অফলোড করতে পারেন। মার্টিন বাটনার আমাকে সেই কৌশলটির সাথে পরিচয় করিয়ে দিয়েছিল।
ট্রাইকপ্লেক্স

ধন্যবাদ! আমার ক্ষেত্রে, আমি যতদূর সন্ধান করতে পারি, আমার কোডে ধরণের ডুপ্লিকেট যুক্তি ধরণের অভাব রয়েছে যা পাউন্ড সংজ্ঞায়িত থেকে উপকার পাবেন। যাইহোক, যদি আপনি কোনও দেখতে পান তবে আমি তাদের প্রশংসা করব যদি আপনি সেগুলি আমার কাছে চিহ্নিত করেন, বিশেষত আমি কয়েক বছর ধরে সি / সি ++ ব্যবহার করি নি।
xleviator

সদৃশ বিভাগগুলি সন্ধান করা প্রকৃতপক্ষে আরও বেশি সহায়তা করবে, তবে কোনও অনুলিপি ছাড়াই আপনি কেবল বিডি থেকে আরডি বা জিএন তে কোডটি আরডি বা জিএনতে ম্যাক্রো হিসাবে সংজ্ঞায়িত করে এবং পরে এটি বিএলে ব্যবহার করতে পারেন। এটি আপনাকে অতিরিক্ত কোডের দ্বিগুণ জায়গা দিতে হবে।
ট্রাইকোপলাক্স

আহ! আমি দেখি. আমি এমনকি বুঝতে পারি নি যে প্রতিটি ফাংশন বডি নিজেই 140 অক্ষরের সীমা ছিল। আমি মনে করি পরের বার আমার প্রম্পটটি আরও মনোযোগ সহকারে পড়তে হবে। এটি নির্দেশ করার জন্য আপনাকে ধন্যবাদ!
xleviator

1
চ্যাটে যেমন আলোচনা করা হচ্ছিল , আপনার নন-লুপিং জিআইএফ সহজেই স্থিরযোগ্য হওয়া উচিত। আমি মনে করি এটি বর্তমানে দেখায় সংক্ষিপ্ত অ্যানিমেশন হিসাবে এটি দুর্দান্ত দেখায়।
ট্রাইকোপলাক্স

47

একটি ক্লাসিক শ্রদ্ধা

ভি 1 : ড্রিম ওয়ারিয়ারের "সুখী হোন" দ্বারা অনুপ্রাণিত হয়ে, এই সোজাসাপ্টে জমা দেওয়া প্রতিটি রঙের চ্যানেলে একটি ছোট পিক্সেল-আর্ট চিত্র এম্বেড করে। আমার কোডও গল্ফ লাগেনি!
ভি 2 : এখন যথেষ্ট সংক্ষিপ্ত কোড এবং একটি ঘন কালো সীমানা কেবল "গেমের স্ক্রিন" কে বিচ্ছিন্ন করে।
ভি 3 : স্পেসশিপ, বুলেট, ক্ষতিগ্রস্ত এলিয়েন এবং নীল সীমানা, ওরে আমার! জন্য তাগ করার চেষ্টা করছেন এই , প্রায়।

// 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;

মহাকাশ আক্রমণকারী


আমি আম্বর ফেরুরের সম্পাদনায় হোঁচট খেয়েছি যার অবতার আমাকে অন্য পিক্সেল-আর্ট-ভিত্তিক এন্ট্রি যুক্ত করতে অনুপ্রাণিত করেছিল। যেহেতু কোডটির মূল ধারণাটি মূলত স্পেস হানাদারদের সাথে একই রকম, তাই আমি এটিকে এই এন্ট্রিতে যুক্ত করছি, যদিও দু'জনের অবশ্যই বিভিন্ন চ্যালেঞ্জিং পয়েন্ট ছিল। এই একের জন্য, গোলাপী ডান হওয়া (সাদা ব্যয়ে) এবং এটি যে বরং একটি বড় স্প্রিট রয়েছে তা দুর্দান্ত চ্যালেঞ্জ প্রমাণ করেছে। \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
হ্যাঁ, আকার কমাতে প্রচুর কৌশল অবলম্বন করতে হবে। আমি আগামীকাল এটি বাড়ানো যেতে পারে।
ফায়ারফ্লাই

এটি এখন অবিশ্বাস্যভাবে সংক্ষিপ্ত। আপনি কি এই রাইটকাস্টিং উত্তরে টেক্সচারে এই বিট নিদর্শনগুলির মধ্যে একটি ফিট করতে পারেন ...?
ট্রাইকোপলাক্স

@ মার্টিনব্যাটনার ওফস, আপনি সঠিক বলেছেন। আমি এটি স্থির করে ফাংশনগুলিতে আরেকটি আপডেট করেছি।
ফায়ারফ্লাই

ঝরঝরে, আপনি পছন্দ করেছেন যে কীভাবে আপনি 8x8 পিক্সেল আর্ট নিয়েছেন এবং উড়ে যাওয়ার সময়ে এটি "আকার পরিবর্তন" করেছেন। তবে আমাকে কয়েকটি পরিবর্তন করতে হয়েছিল এবং আমি এখনও আপনার চিত্রটি পাচ্ছি না getting আমি 1L এবং 255L 1LL এবং 255LL এ পরিবর্তন করেছি। যেহেতু এটি আরও ভাল হয়েছে, আমি ধরেই নিচ্ছি আপনি সম্ভবত bit৪ বিট মোডে সংকলন করছেন এবং আমার চিত্রের বাকী অংশটি ভুল করে দেওয়ার জন্য কিছুটা প্রস্থের সমস্যা রয়েছে। তবে, এখনও, দুর্দান্ত কাজ!
ড্রিম ওয়ারিয়র

44

অ্যাকশন পেইন্টিং

আমি জ্যাকসন পোলকের কাজের অনুরূপ কিছু পুনরুদ্ধার করার চেষ্টা করতে চেয়েছিলাম - একটি অনুভূমিক ক্যানভাসের উপর দিয়ে ড্রিপিং এবং পেইন্ট ingেলে দেওয়া। যদিও আমি ফলাফলগুলি পছন্দ করেছি, কোডটি এই প্রশ্নটিতে পোস্ট করার জন্য অনেক দীর্ঘ ছিল এবং আমার সেরা প্রচেষ্টা এখনও এটিকে প্রায় 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

E (q) ম্যাক্রোটি আরডি এবং জিআর ফাংশনে ব্যবহৃত হয়। আর্গুমেন্টের মান পরিবর্তন করার ফলে রঙগুলির লাল এবং সবুজ উপাদানগুলির পরিবর্তন হয়। জে ম্যাক্রো একটি সংখ্যার সাথে শেষ হয় যা নীল উপাদানটি কতটা পরিবর্তন করে তা নির্ধারণ করতে ব্যবহৃত হয়, যার ফলে এটি লাল এবং সবুজ উপাদানগুলিকে প্রভাবিত করে কারণ তারা এটি থেকে গণনা করা হয়। সম্ভাব্য বিভিন্ন রঙের সংমিশ্রণটি দেখানোর জন্য আমি ই বর্ণের বিভিন্ন বর্ণের লাল এবং সবুজ যুক্তিযুক্ত কিছু চিত্র অন্তর্ভুক্ত করেছি। আপনি যদি এগুলি নিজে চালাতে চান তবে লাল এবং সবুজ মানগুলির জন্য চিত্রগুলির উপর ঘুরে দেখুন।

অ্যাকশন পেইন্টিং 14, 14

ক্রিয়াকলাপ 63, 49

ক্রিয়াকলাপ 56, 42

ক্রিয়া চিত্র 0, 49

আপনি যদি ডাউনলোড করেন তবে এই সমস্ত চিত্র পুরো আকারে দেখা যাবে। পিএনজি সংক্ষেপণ অ্যালগরিদমের সমতল রঙ অনুসারে ফাইলের আকার ছোট হওয়ায় সাইটে আপলোড করার জন্য কোনও ক্ষতিকারক সংকোচনের প্রয়োজন পড়েনি।

গল্ফিং প্রক্রিয়ায় আপনি বিভিন্ন স্তরের চিত্রগুলি দেখতে চাইলে যেমন আমরা বিভিন্ন জিনিস চেষ্টা করে দেখি, আপনি অ্যাকশন পেইন্টিং চ্যাটে দেখতে পারেন


7
আমি এখন কয়েক সপ্তাহ ধরে এই প্রশ্নটি এবং সমস্ত উত্তর অনুসরণ করছি, এবং আমার বলতে হবে, এটিই প্রথম যা আমার চোয়ালটি আসলে ফেলেছিল drop পবিত্র আশ্চর্য। আমি বোঝাতে চাইছি যে এখানে সমস্ত উত্তর দুর্দান্ত - তবে এটি একটি এমনটি যা আমি কখনই সম্ভব বলে আশা করি না
টড লেহম্যান

1
@ টডলেহম্যান আপনাকে ধন্যবাদ! এটি অবশ্যই এমন একা নয় যা আমি একা সক্ষম হব - আমি জানি কারণ আমি চেষ্টা করেছি ...
ট্রাইকোপলাক্স

2
অসাধারণ! এই প্রশ্নের অন্যতম সেরা এবং আমার কাছে একমাত্র (সম্ভবত বিজয়ী ব্যতীত) যা মানুষের
আঁকার

1
@ সাইরিয়েল অনেক ধন্যবাদ। আপনি বলতে পারেন এটি 5 জন
আঁকেন

43

মনে হয়েছে আমি এই কোডের পরামিতিগুলি নিয়ে খেলব ... সমস্ত ক্রেডিট @ ম্যানুয়েল ক্যাসটেনের কাছে যায়। এগুলি এতই দুর্দান্ত যে আমি পোস্টিং প্রতিরোধ করতে পারিনি। গরম ঠাণ্ডা

/* 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);

SeussZoom 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);

সিউসইটার্নালফরেস্ট 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
আমার কাছে ডঃ সিউসের মতো মনে হচ্ছে। খুব ঠান্ডা!
ডিএলকাস

3
হাহাহা, আমি আসলে নীচের দুটি ফাইলের নাম রেখেছি সিউস 1 এবং সুয়েস 2
কাইল

42

সম্পাদনা: এটি এখন একটি বৈধ উত্তর হল, সামনের দিকে ঘোষণা ধন্যবাদ GRএবং BL

হফস্ট্যাডারের কিউ-সিকোয়েন্সের সাথে মজা করছি! যদি আমরা ইনপুট হিসাবে আউটপুট এবং আউটপুটটিকে কিছুটা সময় থেকে রেডিয়াল দূরত্ব ব্যবহার করি তবে আমরা এমন কিছু পাই যা বর্ণিল ভিনাইলের মতো লাগে।

এখানে চিত্র বর্ণনা লিখুন

সিকোয়েন্সটি ফিবোনাচি সিক্যুয়েন্সের সাথে খুব সমান, তবে সিকোয়েন্সটিতে 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);
}

অবশ্যই এটি সিক্যুয়েন্সের সহজতম ব্যবহার, এবং অনেকগুলি অক্ষর বাকী রয়েছে। এটিকে ধার নিতে এবং এটির সাথে অন্যান্য ক্রেজি কাজগুলি নির্দ্বিধায় করুন!

এখানে আরও একটি সংস্করণ রয়েছে যেখানে সীমা এবং রংগুলি Q- সিকোয়েন্স দ্বারা নির্ধারিত হয়। এক্ষেত্রে পর্যাপ্ত জায়গা ছিল 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
দ্বিতীয় ধূসর-ইশ চিত্রটি অত্যাশ্চর্য!
14

আপনি কি পুনরাবৃত্ত কলগুলির জন্য অবৈধ স্থানাঙ্কগুলি সহ পুনরাবৃত্তভাবে আর / জি / বি ফাংশনগুলি ব্যবহার করার জন্য এটিকে যথেষ্ট সংক্ষিপ্ত করতে পারেন?
স্পার

আমি বহু রঙের চিত্রটি পছন্দ করতাম। চমৎকার উত্তর!
অ্যালেক্স

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

উদ্দেশ্য গ

অবজেক্টিভ সি সিতে সি ++ কোডটি আবার লিখেছিলাম আমি এটি সংকলন করতে পারিনি ... আমার আইপ্যাডে চলাকালীন এটি অন্যান্য উত্তরগুলির মতো একই ফলাফল দিয়েছে, সুতরাং এটি বেশ ভাল।

আমার জমাটি এখানে:

ত্রিভুজ গ্যালোর

এর পিছনের কোডটি মোটামুটি সহজ:

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 (এক্সওআর) থাকে এবং ^ 2 একটি এক্সওর বিটের চেয়ে আরও অনেক বেশি বর্গক্ষেত্রের মতো লাগে।
ম্যানুয়েল ফেরেরিয়া

1
@ ম্যানুয়েলফেরিয়ারিয়া এক্সওআর দিয়ে কোডটি আসলে এইভাবে সংকলিত হয়: x^(x-y)^y(এটি আমাকে প্রথমবারের মতো ছুঁড়ে ফেলেছে)। আপনার যদি আইওএস দক্ষতা থাকে তবে আমার কোডটি এখানে: gist.github.com/ জুগালে
ম্যাক্স চুকিমিয়া

38

সিয়েরপিনস্কি পেইন্ট স্প্ল্যাশ

আমি রঙের সাথে আরও খেলতে চেয়েছিলাম তাই আমি আমার উত্তরটি উত্তর দিয়েছি (শেষ পর্যন্ত) এবং শেষ পর্যন্ত এটিই শেষ হয়ে গেল।

সিয়েরপিনস্কি পেইন্ট স্প্ল্যাশ

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);
}

এটা এখন আমার অবতার। : P: P


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
আপনি কি পেয়েছেন?
টমসডিং

3
আমি শক্ত কালো এবং শক্ত রঙ পেয়েছি যা বিভিন্ন সংকলক সহ প্রোগ্রামের বিভিন্ন রানের মধ্যে পরিবর্তিত হয়েছিল।
স্পার 21

8
আমার সংকলকটি কেবল ত্রুটি করে এবং একটি মূল্য ফেরত না দেওয়ার জন্য আমাকে চিত্কার করে।
ফারাপ

3
@ ফারাপ এটি কোনও খারাপ জিনিস নয় :)
স্পার

আমি সন্দেহ করি যে আপনার দ্বিতীয় ছবিটির পরামর্শ অনুসারে আপনি কখনও এত সুন্দর এলোমেলোতা পাবেন। একটি ধ্রুবক মান, লুপের সূচক ইত্যাদির অনেক বেশি সম্ভাবনা থাকে (ফাংশনটি যখন ডাকা হয় তখন EAX এর মধ্যে যা কিছু সঞ্চিত থাকে)।
উদাহরণ

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কেবল পসিক্স-সামঞ্জস্যপূর্ণ সিস্টেমে উপস্থিত থাকার কারণে অনুমতি না দেওয়া হয় তবে এটি আক্ষরিক সাথে প্রতিস্থাপন করা যেতে পারে 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সিয়েরপিনস্কি ত্রিভুজটি রেন্ডার করে। যা দুর্দান্ত
সিজেফুরে

শেষটি প্রোফাইল প্রোফাইল-যোগ্য।
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;
}

এখানে চিত্র বর্ণনা লিখুন

সংশোধিত চিত্র রেন্ডার ফাংশন। অঙ্কন (rgbFunitions, 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);

এখানে চিত্র বর্ণনা লিখুন


প্রবঞ্চক! প্রবঞ্চক! ; ডি (এটি একটি বৈধ উত্তর, ঠিক খুব চালাক: পি চমৎকার একটি!)
টম্মস্মিং

1
হাহাহাহ .. হ্যাঁ আমি জানি তাই আমি প্রশ্নটির চেতনায় আরও একটি জমা দিয়েছি। আমি আসলে নিদর্শনগুলি তৈরি করার চেষ্টা করেছি এবং ভেবেছিলাম যে আসলে কিছু আঁকতে পারি কিনা wonder
ওল্ফহ্যামার

আপনি অগভীর রঙের চিত্রগুলি নীচের বিটগুলিতে কিছু অংশে ফিল্ম-শস্যের শব্দ যোগ করে তার শেষে "" ম্যাথ.রেন্ডম () * 256 "প্রয়োগ করে কিছুটা ধনী দেখতে পারেন। হাইলাইটগুলি পরিবর্তন না করে আরও গা rand় শেডগুলিকে আরও এলোমেলোভাবে বিরক্ত করে তোলে। (এবং অন্ধকারের দোরের উপর নির্ভর করে সংখ্যাটি বাড়িয়ে দিন)
কেন্ট ফ্রেড্রিক

আরজিবি র্যান্ডমনেস @ [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;

মার্টিনের স্পষ্টত অসাধারণ এন্ট্রি দ্বারা অনুপ্রাণিত , এটি এটির থেকে আলাদা take পিক্সেলের একটি অংশ এলোমেলোভাবে সিড করার পরিবর্তে আমি উপরের বাম কোণে আরজিবি (512,512,512) হিসাবে শুরু করি এবং সেখান থেকে প্রতিটি রঙে এলোমেলো পদক্ষেপ গ্রহণ করি। ফলাফলটি টেলিস্কোপের (ইমো) কোনও কিছুর মতো দেখাচ্ছে।

প্রতিটি পিক্সেল এটির উপরে / বামদিকে পিক্সেলের গড় নেয় এবং এটিকে এলোমেলোভাবে যোগ করে adds আপনি pভেরিয়েবল পরিবর্তন করে পরিবর্তনশীলতার সাথে খেলতে পারেন , তবে আমি মনে করি আমি যা ব্যবহার করছি তা হ'ল একটি ভাল ভারসাম্য (মূলত কারণ আমি নীল পছন্দ করি, তাই বেশি ঝাপসা অস্থিরতা ভাল ফলাফল দেয়)।

যখন গড় হয় তখন পূর্ণসংখ্যা বিভাগ থেকে কিছুটা নেতিবাচক পক্ষপাত থাকে। আমি মনে করি এটি কার্যকর হয়, তবে নীচের কোণায় একটি দুর্দান্ত গাening় প্রভাব দেয়।

অবশ্যই, কেবলমাত্র একক ফলাফলের চেয়ে বেশি পাওয়ার জন্য srand()আপনাকে আপনার মূল কার্যক্রমে একটি লাইন যুক্ত করতে হবে।

ব্যান্ড


2
চিত্রটি যদি কিছুটা বড় হয় তবে এটি আলোর রশ্মির মতো দেখায়। ও:
সিজেফুরে

1
@ সিজেফায়ার যদি আপনি চিত্রটি পুরো আকারে দেখেন (ডাউনলোড করুন / ডান ক্লিক করুন এবং চিত্র দেখুন / যা আপনার সিস্টেমে কাজ করে) তবে অতিরিক্ত বিশদ সহ এটি আরও সুন্দর দেখায়।
ট্রাইকোপল্যাক্স

এটিকে কালো দ্বারা বেষ্টিত একটি বৃত্ত করুন এবং এটি একটি গ্রহ করে তুলবে!
খালেদ.কে

1
আমি এটি ব্লেন্ডারে একটি গোলকের চারপাশে মোড়ানোর চেষ্টা করেছি এবং আমি একটি অ্যানিমেশন দিয়েছি। টি এখানে দেখুন: gfycat.com/SameAnotherDinosaur
স্টারবিয়াম্রেনবোলাবস

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

ডাব্লু = 225 সহ তরঙ্গ

w = 360

w = 360 সহ তরঙ্গ waves

w = 5390

ডাব্লু = 5390 সহ তরঙ্গ

তরঙ্গ প্রসারিত হওয়ার সাথে সাথে এখানে একটি জিআইএফ চিত্রগুলির উত্তরসূরি দেখায়। আমি বিভিন্ন আকারের একটি সংখ্যা সরবরাহ করেছি, প্রতিটি 500KB ফাইলের আকার সীমা হিসাবে যতগুলি ফ্রেম দেখায় তা মঞ্জুরি দেয়।

তরঙ্গ বড় জিআইএফ

তরঙ্গ ছোট GIF তরঙ্গ মাঝারি জিআইএফ


আমি যদি এটি ফিট করার উপায় খুঁজে পাই তবে আমি আদর্শভাবে ওয়েভ হস্তক্ষেপ মডেলিং করতে চাই যাতে তরঙ্গগুলি ক্রস করার সময় আরও বাস্তববাদী দেখায়। আমি যদিও প্রতিচ্ছবি দিয়ে সন্তুষ্ট।

মনে রাখবেন যে আমি 3 টি প্রচুর 140 বাইটে তরঙ্গ প্রতিবিম্বকে সত্যই মডেল করি নি। সত্যিই কোনও প্রতিবিম্ব চলছে না, এটি দেখতে এটির মতোই ঘটে। সবার আগে কেউ অনুমান করতে চাইলে আমি ব্যাখ্যাটি লুকিয়ে রেখেছি:

প্রথম প্রতিফলিত তরঙ্গটি মূল পয়েন্টের সমান দূরত্বে, ইমেজের প্রান্তের অন্য দিক থেকে উত্পন্ন তরঙ্গের অনুরূপ। সুতরাং কোড 4 টি প্রান্তের প্রতিটি থেকে প্রতিবিম্বের প্রভাব দিতে প্রয়োজনীয় 4 পয়েন্টের জন্য সঠিক অবস্থান গণনা করে। প্রতিবিম্বিত তরঙ্গটির আরও স্তরগুলি সমস্ত একটি আরও দূরের টাইলের উত্থিত তরঙ্গের সাথে সমান, যদি আপনি চিত্রটিকে বিমানের এক টাইল হিসাবে কল্পনা করেন। কোডটি 189 টি পৃথক বিস্তৃত চেনাশোনাগুলি প্রদর্শন করে 8 স্তরের প্রতিবিম্বের মায়া দেয়, প্রতিটিকে 17 বাই 17 গ্রিডে সঠিক পয়েন্টে স্থাপন করা হয়, যাতে তারা গ্রিডের কেন্দ্রীয় বর্গক্ষেত্রের (অর্থাৎ চিত্র বর্গক্ষেত্রের) মধ্য দিয়ে যায় প্রতিফলনের প্রয়োজনীয় বর্তমান স্তরের ছাপ দেওয়ার জন্য সঠিক সময়। এটি কোড করা সহজ (এবং সংক্ষিপ্ত!) তবে বেশ ধীরে ধীরে চলে ...


3
জিআইএফ এবং ব্যাখ্যা পছন্দ করুন।
ডিএলকাস

Neato! কিন্তু মানুষ, এই জাতীয় এন্ট্রিগুলি আমাকে ভাবায় যে আমার একটি দ্রুত কম্পিউটারের প্রয়োজন (বা আরও ধৈর্য, ​​লোল)। হয় আপনার কম্পিউটারটি অনেক দ্রুত, অথবা এই সমস্ত জিআইএফ ফ্রেম তৈরি করতে আপনাকে কতক্ষণ সময় নিয়েছে তা আমি ভাবতে চাই না।
ড্রিম ওয়ারিয়র

3
পছন্দ করুন এটি আমার ল্যাপটপ যা ঘুমানোর সময় রাতারাতি চলতে আপত্তি মনে করে না ...
ট্রাইকোপ্লাক্স

2
আমি দ্বিতীয় চিত্রটিতে প্যাকম্যানকে দেখছি।
এএল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.