এই প্রশ্নের মতোই একই আত্মায় আপনার মিশনটি সর্বাধিক 1K কোডে সর্বাধিক দেখা লোগো তৈরি করা।
নিয়মাবলী:
কোডের সর্বাধিক 1K (অন্তর্ভুক্ত), কোনও বাহ্যিক ডেটা নেই।
সর্বাধিক upvotes সহ উত্তর জিতেছে।
আনন্দ কর!
এই প্রশ্নের মতোই একই আত্মায় আপনার মিশনটি সর্বাধিক 1K কোডে সর্বাধিক দেখা লোগো তৈরি করা।
নিয়মাবলী:
কোডের সর্বাধিক 1K (অন্তর্ভুক্ত), কোনও বাহ্যিক ডেটা নেই।
সর্বাধিক upvotes সহ উত্তর জিতেছে।
আনন্দ কর!
উত্তর:
1kb? লাক্সারি। আমি সমস্ত অপ্রয়োজনীয় শ্বেতস্থান অপসারণের চেয়ে আউটপুটটিকেও বেশ মুদ্রণ করতে পারি। (ইন্ডেন্টেশন অবশ্যই ট্যাব ব্যবহার করে যা মার্কডাউন স্পেসে রূপান্তরিত করে, তাই চরের গণনাটি প্রকৃত 977 এর চেয়ে বেশি বলে মনে হতে পারে unnecessary
ওভারল্যাপগুলি রিংগুলি এক দিকে আঁকিয়ে সঠিকভাবে পরিচালনা করা হয়, তারপরে একটি ক্লিপ প্রয়োগ করে এবং এটিকে অন্য দিকে আঁকতে হয়। রঙগুলি এবং অনুপাতগুলি একটি সরকারী দস্তাবেজ থেকে নেওয়া হয় যা কোনও কারণে বৃত্তের চেয়ে বাজিয়ার বক্ররেখা ব্যবহার করে।
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="504" height="228">
<defs>
<clipPath id="t">
<rect width="504" height="114" />
</clipPath>
</defs>
<g fill="none" stroke-width="12">
<g id="u" transform="translate(82,82)" stroke="#0b8ed8">
<g id="O">
<circle r="72" stroke="#fff" stroke-width="20" />
<circle r="72" />
</g>
</g>
<g id="y" transform="translate(167,146)" stroke="#f9a91f">
<use xlink:href="#O" />
</g>
<g id="k" transform="translate(252,82)" stroke="#231f20">
<use xlink:href="#O" />
</g>
<g id="g" transform="translate(337,146)" stroke="#009e59">
<use xlink:href="#O" />
</g>
<g transform="translate(422,82)" stroke="#ee2049">
<use xlink:href="#O" />
</g>
<g clip-path="url(#t)">
<use xlink:href="#g" />
<use xlink:href="#k" />
<use xlink:href="#y" />
<use xlink:href="#u" />
</g>
</g>
</svg>
ক্যানভাস নিয়ে খেলছি।
এটি 1024 বা 1000 এর K
জন্য রয়েছে কিনা তা নিশ্চিত নয় তবে এটি 1000 982 940 এ নামিয়ে আনতে পরিচালিত : ডি
কেবল ওয়েবকিট ব্রাউজারগুলির জন্য উপযুক্ত। ক্রোম ঠিক আছে। ফায়ারফক্স একটি জগাখিচুড়ি। এটি ক্রস ব্রাউজারে তৈরি করতে পারে।
var w=window;w.onload=function(){function e(e,t){return r()*(t-e+1)+e}function d(e,t){function r(e,t,r,i){c.beginPath();c[u]="xor";c.strokeStyle="#"+e;c.arc(t,r,66,n*i[0],n*i[1]);c.stroke();c[u]="destination-atop";c.arc(t,r,66,n*i[1],n*i[0]);c.stroke()}var i=79+e,s=66+t,o=158,a=[2,1.2],f=[1.8,.8];c.lineWidth=13;r("007a9c",e,t,f);r("ffa100",i,s,a);r("000",e+=o,t,f);r("009b3a",i+=o,s,a);r("e10e49",e+=o,t,f)}var t=Math,n=t.PI,r=t.random,i,s,o=0,u="globalCompositeOperation",a=document.getElementById("c"),f=w.innerWidth,l=w.innerHeight,c=a.getContext("2d"),h=9,p=[];a.width=f;a.height=l;for(i=0;i<l;++i){p.push({x:r()*f,y:r()*l,r:e(1,3),d:e(1,l)})}setInterval(function(){c.clearRect(0,0,f,l-h);d(f/2-200,l-200);c[u]="xor";c.fillStyle="#fff";c.beginPath();o+=e(0,7)?.01:-.01;for(i=0;i<l-h;++i){s=p[i];c.moveTo(s.x,s.y);c.arc(s.x,s.y,s.r,0,n*2);s.y+=t.cos(o+s.d)+1+s.r/9;s.x+=(i%2?1:-1)*t.sin(o)*.4;if(s.x>f+7||s.x<-7||s.y>l-(h-1.2)){p[i]={x:r()*f,y:-9,r:s.r,d:s.d}}}c.fill();if(h<l/1.7)h+=l/9e3},32)}
940: এটিকে মুড়িয়ে ফেলা onload
এবং body
ট্যাগ + সারিবদ্ধ বাগ এবং ফায়ারফক্স ফিক্সের শেষে সন্নিবেশ করা স্ক্রিপ্টের উপর নির্ভর করুন ।
function e(e,t){return r()*(t-e+1)+e}function d(e,t){function r(e,t,r,i){c.beginPath();c[u]="xor";c.strokeStyle="#"+e;c.arc(t,r,66,n*i[0],n*i[1]);c.stroke();c[u]="destination-over";c.arc(t,r,66,n*i[1],n*i[0]);c.stroke()}var i=79+e,s=66+t,o=158,a=[2,1.2],f=[1.8,.8];c.lineWidth=13;r("007a9c",e,t,f);r("ffa100",i,s,a);r("000",e+=o,t,f);r("009b3a",i+=o,s,a);r("e10e49",e+=o,t,f)}var w=window,t=Math,n=t.PI,r=t.random,i,s,o=0,u="globalCompositeOperation",a=document.getElementById("c"),f=w.innerWidth,l=w.innerHeight,c=a.getContext("2d"),h=9,p=[];a.width=f;a.height=l;for(i=0;i<l;++i,p.push({x:r()*f,y:r()*l,r:e(1,3),d:e(1,l)}));setInterval(function(){c.clearRect(0,0,f,l-h);d(f/2-158,l-200);c[u]="xor";c.fillStyle="#fff";c.beginPath();o+=e(0,7)?.01:-.01;for(i=0;i<l-h;++i){s=p[i];c.moveTo(s.x,s.y);c.arc(s.x+=(i%2?.4:-.4)*t.sin(o),s.y+=t.cos(o+s.d)+1+s.r/9,s.r,0,n*2);if(s.y>l-(h-1.2)){p[i].x=r()*f;p[i].y=-9}}c.fill();if(h<l/1.7)h+=l/9e3},32)
http://jsfiddle.net/Ifnak/XSBLg/embedded/result/
http://jsfiddle.net/Ifnak/4fSWm/5/embedded/result/
ফায়ারফক্সে ক্রোমের পাশাপাশি লোড, তবে এফএফের সংস্থানগুলির তুলনায় এটি ভারী। ব্যবহার requestAnimationFrame()
কিছুটা সহায়তা করেছে, কিন্তু যথেষ্ট নয়।
নোট করুন যে তুষার নীচে রয়েছে, সুতরাং ধীর বৃদ্ধি দেখতে স্ক্রোল করুন। শুরুতে মাটিতে কিছুটা অতিরিক্ত চাপ পড়েছিল, তবে এটি 1024 ক্রিয়ারে ফিট করতে পারেনি।
ম্যাথমেটিকা.এসই প্রশ্নোত্তরে আমার উত্তর থেকে :
ring[x_, y_, v_, t_] :=
Table[
{1.2 y, -v x, 0} + {Cos@i, Sin@i}.{{0, -1, 0}, {1, 0, 1/4 - v/2}},
{i, 0, 2 π, π/200}
] ~Tube~ t
Graphics3D[
Riffle[
{Cyan, Yellow, Darker @ Gray, Green, Red},
Array[ring[Sqrt@3/2, #, # ~Mod~ 2, 0.17] &, 5, 0] ],
Boxed -> False,
ViewPoint -> {0, 0, ∞}
]
সম্পাদনা করুন: সংস্করণ 10-এ ডিফল্ট আলোক শৈলীর পরিবর্তন হয়েছে; উপরের গ্রাফিকটি রেন্ডার করতে অপশনটি যুক্ত Lighting -> "Classic"
করতে হবে Graphics3D
।
ফ্ল্যাট দ্বি-মাত্রিক প্রভাবের জন্য আলোতে আরও খেলুন:
Graphics3D[
Riffle[
Glow /@ {Hue[.59], Hue[.13], Black, Hue[.3, 1, .7], Hue[0, 1, .85]},
Array[ring[Sqrt@3/2, #, # ~Mod~ 2, 0.13] &, 5, 0] ],
Boxed -> False,
ViewPoint -> {0, 0, ∞},
Lighting -> None
]
অলিভারের জন্য যিনি বলেছিলেন যে আমার প্রথম ফলাফলটি "খুব 3 ডি-ইশ" ছিল এখানে লিখিত থ্রেড থেকে আমার রিফ্যাক্টরিংয়ের সাথে জেভিংসেন্টের কোডের মাধ্যমে একটি আসল 2D রেন্ডারিং রয়েছে:
ringSegment[mid_, deg_, color_] := {CapForm["Butt"],
Thickness[0.042], White, Circle[mid, 1, deg],
Thickness[0.03], RGBColor @@ (color/255), Circle[mid, 1, deg + {-0.1, 0.1}]}
blue = { 0, 129, 188};
yellow = {255, 177, 49};
black = { 35, 34, 35};
green = { 0, 157, 87};
red = {238, 50, 78};
Graphics @ GraphicsComplex[
{{2.5, 0}, {1.3, -1}, {0, 0}, {5, 0}, {3.8, -1}},
ringSegment @@@
{{1, {0, 5/4 π}, black},
{2, {0, π}, yellow},
{3, {0, 2 π}, blue},
{2, {-π 9/8, 1/4 π}, yellow},
{4, {0, 5/4 π}, red},
{5, {0, 7/8 π}, green},
{1, {5/4 π, 5/2 π}, black},
{5, {7/8 π, 2 π}, green},
{4, {-3/4 π, 1/4 π}, red}}
]
দুঃখের বিষয়, একটি নির্দিষ্ট রাষ্ট্রপ্রধানকে এখনও অবধি বেশিরভাগ অলিম্পিক খবরের শিরোনামের বিষয় বলে মনে হচ্ছে। সুতরাং, 2014 গেমসের জন্য এখানে আমার ফ্রিস্টাইল লোগো (মাস্কট?) রয়েছে।
w=?$;"UW[NASY_LAQVgKAPSlKAOKGLnHAOIHMnHAOHILpHANHJLqFAOFLKAVMAVMAWKAWLAWKAMIHFGK
NFMLAMGOFFGAGJPGFIAHGFFOWPPAIGFFKQFOKMJHAIJJQGNLGFMAJIJNFIGHFHSGASMMFHHASHGGPK
MFJHTKARJSKAMGFOPJAPPOJAPRKLAQRJLAQTHLAR^LFARaARaAR]HFASZAS[FFRGAT_QGAUZGFFG
U]AQGITAPHKPANKKSALMNSGGAJPOP".codepoints{|r|r-=69;$><<(r<0??\n:(w=w==?$?' ':?$)*r)}
আউটপুট: (ব্যাক আপ এবং স্কিনিন্ট। আদিম রেন্ডারিংয়ের জন্য দুঃখিত তবে তিনি এর চেয়ে ভাল হওয়ার যোগ্য নন)
convert \
-size 330x150 xc:white -strokewidth 10 -fill none \
-stroke \#0885c2 -draw 'arc 100,100 10,10 0,360' \
-stroke black -draw 'arc 210,100 120,10 0,360' \
-stroke \#ed334e -draw 'arc 320,100 230,10 0,360' \
-stroke \#fbb132 -draw 'arc 155,140 65,50 0,360' \
-stroke \#1c8b3c -draw 'arc 265,140 175,50 0,360' \
-stroke \#0885c2 -draw 'arc 100,100 10,10 -20,10' \
-stroke black -draw 'arc 210,100 120,10 -20,10' -draw 'arc 210,100 120,10 90,120' \
-stroke \#ed334e -draw 'arc 320,100 230,10 90,120' \
x:
নমুনা আউটপুট:
শীতের অলিম্পিকস? নিয়মিত রিংয়ের পরিবর্তে কিছু ফ্র্যাক্টাল স্নোফ্লেক্স সম্পর্কে কীভাবে।
কেন্দ্র শাখার জন্য পুনরাবৃত্তি বেশ স্পষ্ট: (dx, dy) = 0.5 (dx, dy)। বাম এবং ডান শাখাগুলি ম্যাট্রিক্সের গুণ দ্বারা ঘূর্ণনের উপর ভিত্তি করে:
x = x cos (a) - y পাপ (ক)
y = x sin (a) + y cos (a)
1/4 = 0.5 কোস (60) এবং 7/16 হ'ল 0.5 পাপ (60) এর একটি ভাল অনুমান।
uses graph;
var gd, gm : integer;
var n:integer;
Procedure tree(x,y,dx,dy: integer);
begin
if dx*dx+dy*dy>0 then begin
line(x, y, x+dx, y+dy);
tree(x+dx, y+dy, dx div 2, dy div 2);
tree(x+dx, y+dy, dx div 4 + dy*7 div 16, dy div 4 - dx*7 div 16);
tree(x+dx, y+dy, dx div 4 - dy*7 div 16, dy div 4 + dx*7 div 16);
end;
end;
begin
gd := D4bit;
gm := m640x480;
initgraph(gd,gm,'');
setbkcolor(white); clearviewport;
setbkcolor(black); setlinestyle(0,0,3);
For n:=-1 to 1 do begin
setColor(yellow);
tree(215,240-120*n,0,120*n);
setColor(lightgreen);
tree(425,240-120*n,0,120*n);
setColor(black);
tree(320,120-120*n,0,120*n);
setColor(lightred);
tree(530,120-120*n,0,120*n);
setColor(lightblue);
tree(110,120-120*n,0,120*n);
end;
readln;
closegraph;
end.
। ।
আমার এসভিজি উত্তরের মতো, তবে
নোট করুন যে আমি কিছু আকর্ষণীয় কৌশল সম্ভাবনা সত্ত্বেও এটি গল্ফ করার চেষ্টা করিনি ( -57*~dir
পরিবর্তে এর মতো 57*(1+dir)
It's এটি 923 অক্ষরে, তবে গল্ফটি খুব সহজেই 624 এ নেমে যায়)।
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class Rings {
public static void main(String[] args) throws Exception {
int[] pal = new int[] {0x0b8ed8, 0xf9a91f, 0x231f20, 0x009e59, 0xee2049};
BufferedImage img = new BufferedImage(505, 229, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = img.createGraphics();
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
for (int dir = -1; dir < 2; dir += 2) {
g.setClip(0, 57 * (1 + dir), 520, 114);
for (int ring = 2 - 2 * dir; ring != 2 + 3 * dir; ring += dir) {
for (int subring = 0; subring < 2; subring++) {
g.setColor(new Color(pal[ring] | (subring - 1)));
g.setStroke(new BasicStroke(20 - 8 * subring));
g.drawOval(10 + 85 * ring, 10 + 64 * (ring & 1), 144, 144);
}
}
}
ImageIO.write(img, "PNG", new File("rings.png"));
}
}
আবার, একটি সি 64 উত্তর, তবে এবার আমাকে স্প্রাইট ব্যবহার করার অনুমতি দেওয়া হচ্ছে ! হ্যাঁ!
আমার মনে আছে আপনি স্প্রাইট ব্যবহার করতে চাইলে আপনি প্রচুর বোরিং DATA
স্টেটমেন্ট দিয়ে আপনার প্রোগ্রামটি শুরু করবেন । একটি "উচ্চ রেজোলিউশন" (24x21 পিক্সেল) একরঙা স্প্রাইট প্যাটার্ন সংজ্ঞায়িত করতে আপনার প্রয়োজন 63 বাইট। প্রকৃতপক্ষে একটি অনলাইন স্প্রাইট সম্পাদক রয়েছে যা আপনার জন্য ডেটা গণনা করে, তাই:
10 DATA 0,254,0,3,255,128,7,255,192,15,131,224,30,0,240,60,0,120,56,0,56,120,0
20 DATA 60,112,0,28,112,0,28,112,0,28,112,0,28,112,0,28,120,0,60,56,0,56,60,0
30 DATA 120,30,0,240,15,131,224,7,255,192,3,255,128,0,254,0
রঙ এবং অবস্থানের জন্য আমার আরও কিছু ডেটা দরকার । মূল অলিম্পিক গেমসের লোগো প্রশ্নের আমার উত্তর থেকে আমি কেবল এটি অনুলিপি করেছি :
40 DATA 6,0,0,0,2,0,2,4,0,7,1,1,5,3,1
তারপরে, আপনি সাধারণত সেট করতেন V=53248
। এটি 53248
অবশ্যই একটি গুরুত্বপূর্ণ সংখ্যা হবে, কারণ আমি এখনও 25 বছর পরে এটি মনে করি :) এটি প্রমাণ করে যে এটি ভিআইসি -২ (ভিডিও ইন্টারফেস নিয়ন্ত্রণকারী) এর মূল ঠিকানা:
50 V=53248
তারপরে আমি ঠিকানায় শুরু মেমরিটিতে স্প্রাইট প্যাটার্নটি পড়ি 832
। এটি কেবল একটি স্মৃতি অবস্থানে লিখতে অদ্ভুত লাগে, কোনও বরাদ্দ নেই new
, না, এর মতো কিছুই নয় :) শুরু করার ঠিকানাটি 64 এর একাধিক হওয়া দরকার।
60 FOR I=0 TO 62
70 READ D:POKE 832+I,D
80 NEXT I
আমি সমস্ত স্প্রাইটের জন্য একই প্যাটার্নটি ব্যবহার করব।
90 FOR I=0 TO 4
100 READ C,X,Y
C
এটি হল রঙ কোড X
এবং Y
এটি বৃত্তগুলির অনুভূমিক এবং উল্লম্ব অবস্থান।
আরও কয়েকটি POKE
গুলি প্রয়োজন:
110 POKE V+I*2,150+X*11
120 POKE V+I*2+1,130+Y*10
V+0
, V+2
, V+4
, ইত্যাদি ... প্রতিটি পরী এর অনুভূমিক অবস্থানে, যখন হয় V+1
, V+3
, V+5
... উল্লম্ব হয়। স্প্রাইট রঙগুলি রেজিস্টার থেকে শুরু V+39
:
130 POKE V+39+I,C
স্প্রাইট ডেটা পয়েন্টারগুলি শুরু হয় 2040
, এবং যেহেতু ডেটা শুরু হয় 832
, আমরা 832/64
= পাই 13
, তাই:
140 POKE 2040+I,13
150 NEXT I
স্প্রিটস চালু করতে আমি 0-4
রেজিস্টারের বিট সেট করেছিলাম V+21
। আমি ব্যাকগ্রাউন্ডটি সাদাতেও পরিবর্তন করেছি, যাতে আমরা নীল বৃত্তটি দেখতে পারি।
160 POKE 53281,1
170 POKE V+21,31
এটাই!
V+23
দ্বিগুণ উচ্চতার V+29
জন্য এবং ডাবল প্রস্থের বিট সেট করতে পারেন । (স্প্রেট # এক্স এর জন্য বিট # এক্স)।
আকার: 876 বাইট (12 লাইন, 72 টি অক্ষরের সাথে লাইন এবং লাইনের শেষ)
\documentclass{standalone}\usepackage{tikz}\def\W{3.762bp}\def\R{71.682
bp}\def\D{12.9041bp}\usetikzlibrary{calc,hobby}\def\Y{-71.7013bp}\def\X
{169.5538bp}\begin{document}\tikz[use Hobby shortcut,every path/.style=
{line width=\W,double distance=\D, white}]{\def\Z{coordinate}\path(0,0)
\Z(A)++(\X,0)\Z(C)++(\X,0)\Z(E)($(A)!.5!(C)$)++(0,\Y)\Z(B)++(\X,0)\Z(D)
;\def~#1#2{\definecolor{#1}{cmyk}{#2}} ~A{1,.25,0,0}~B{0,.342,.91,0}~C{
0,0,0,1}~D{1,0,.91,.06}~E{0,.94,.65,0}\def~#1#2#3#4{\draw[save Hobby p%
ath={#1},double=#1,overlay](#1)+([closed] 225:\R)..+([#2]315:\R)..+([#3
]45:\R)..+([#4]135:\R); \path let\n!={\R+\D/2}in(#1)+(-\n!,0)+(\n!,0)+(
0,-\n!)+(0,\n!);}\def\0#1{\draw[double=#1,restore and use Hobby path={%
#1}{disjoint,invert soft blanks}];}~A{}{blank=soft}{}~B{}{}{blank=soft}
~C{}{blank=soft}{}\0B\0A~E{blank=soft}{}{}~D{}{}{}\0C\0E}\end{document}
আকার: এক লাইনে 817 বাইট এবং দুটি অপ্টিমাইজেশন সহ:
tikz
শ্রেণীর বিকল্প , গম উইজার্ডের মন্তব্যstandalone
দেখুন ।soft=blank
শৈলীর সংজ্ঞা দিয়ে একাধিক ব্যবহার সংক্ষিপ্ত করা যেতে পারে b
।\documentclass[tikz]{standalone}\def\W{3.762bp}\def\R{71.682bp}\def\D{12.9041bp}\usetikzlibrary{calc,hobby}\def\Y{-71.7013bp}\def\X{169.5538bp}\begin{document}\tikz[use Hobby shortcut,every path/.style={line width=\W,double distance=\D,white},b/.style={blank=soft}]{\def\Z{coordinate}\path(0,0)\Z(A)++(\X,0)\Z(C)++(\X,0)\Z(E)($(A)!.5!(C)$)++(0,\Y)\Z(B)++(\X,0)\Z(D);\def~#1#2{\definecolor{#1}{cmyk}{#2}} ~A{1,.25,0,0}~B{0,.342,.91,0}~C{0,0,0,1}~D{1,0,.91,.06}~E{0,.94,.65,0}\def~#1#2#3#4{\draw[save Hobby path={#1},double=#1,overlay](#1)+([closed]225:\R)..+([#2]315:\R)..+([#3]45:\R)..+([#4]135:\R); \path let\n!={\R+\D/2}in(#1)+(-\n!,0)+(\n!,0)+(0,-\n!)+(0,\n!);}\def\0#1{\draw[double=#1,restore and use Hobby path={#1}{disjoint,invert soft blanks}];}~A{}b{}~B{}{}b~C{}b{}\0B\0A~E b{}{}~D{}{}{}\0C\0E}\end{document}
নিম্নলিখিত লম্বা সংস্করণটি সম্ভবত বুঝতে সহজ।
রিংগুলির ওভারল্যাপিংটি প্রথমে ফাঁকা অংশগুলির সাথে রিংগুলি অঙ্কন করে পরিচালনা করা হয়। তারপরে পরবর্তী পর্যায়ে, রিংগুলি আবার টানা হবে, তবে এবার ফাঁকা খণ্ডগুলি পূর্ণ হয়ে গেছে এবং অন্যান্য রিংয়ের ইতিমধ্যে আঁকানো বিভাগগুলি অপরিবর্তিত রয়েছে। তাই ক্লিপিং মোটেই ব্যবহৃত হয় না।
সাদা মার্জিনের সাথে রিংটি একটি ডাবল লাইনের সাথে বৃত্ত দ্বারা টানা হয়। রেখার মধ্যবর্তী অঞ্চলটি রিংয়ের রঙ দিয়ে পূর্ণ হয় এবং পাতলা ডাবল রেখাগুলি বাইরের এবং অভ্যন্তরের সাদা মার্জিন তৈরি করে।
রঙিন এবং মাত্রা সরকারী নথির 5 পৃষ্ঠার পিডিএফ পৃষ্ঠার বিবরণ থেকে নেওয়া হয়েছে ( পিটার টেলারের উত্তর দেখুন )।
\nofiles % .aux file is not needed
\documentclass[tikz]{standalone}
\usetikzlibrary{calc}
\usetikzlibrary{hobby}
\newcommand*{\xshift}{169.5538bp}
\newcommand*{\yshift}{-71.7013bp}
\newcommand*{\radius}{71.6821bp}
\newcommand*{\whitelinewidth}{3.762bp}
\newcommand*{\colorlinewidth}{12.9041bp}
\definecolor{color@A}{cmyk}{1, .25, 0, 0}
\definecolor{color@B}{cmyk}{0, .342, .91, 0}
\definecolor{color@C}{cmyk}{0, 0, 0, 1}
\definecolor{color@D}{cmyk}{1, 0, .91, .06}
\definecolor{color@E}{cmyk}{0, .94, .65, 0}
\begin{document}
\begin{tikzpicture}[
use Hobby shortcut,
every path/.style = {
line width = \whitelinewidth,
double distance = \colorlinewidth,
white,
},
]
% define center coordinates for the five rings
\path
(0,0) coordinate (center@A)
++(\xshift, 0) coordinate (center@C)
++(\xshift, 0) coordinate (center@E)
($(center@A)!.5!(center@C)$) ++(0, \yshift) coordinate (center@B)
++(\xshift, 0) coordinate (center@D)
;
% \drawring draws the first part of the ring with blank parts
\newcommand*{\drawring}[4]{%
\draw[
save Hobby path = {path@#1},
double = {color@#1},
overlay,
]
(center@#1)
+([closed] 225:\radius) .. +([#2] 315:\radius) ..
+([#3] 45:\radius) .. +([#4] 135:\radius)
;
}
% \finishring draws the blank parts of the rings
\newcommand*{\finishring}[1]{%
\draw[
double = {color@#1},
restore and use Hobby path = {path@#1}{
disjoint,
invert soft blanks
},
];
}
\drawring{A}{}{blank=soft}{}
\drawring{B}{}{}{blank=soft}
\drawring{C}{}{blank=soft}{}
\finishring{B}
\finishring{A}
\drawring{E}{blank=soft}{}{}
\drawring{D}{}{}{}
\finishring{C}
\finishring{E}
% set calculated bounding box
\useasboundingbox
let \n{r} = {\radius + \colorlinewidth/2}
in
(center@A) +(-\n{r}, \n{r}) % upper left corner
(center@B -| center@E) +(\n{r}, -\n{r}) % lower right corner
;
\end{tikzpicture}
\end{document}
\documentclass[tikz]{standalone}
আপনি এই টিপটির জন্য ধন্যবাদ ব্যবহার করতে পারেন ।
b
লম্বা এড়াতে শৈলীর সংজ্ঞা দিয়ে আরও সংক্ষিপ্ত করে দেওয়া blank=soft
হয়েছে।
সি ++ 1024 বাইট
আপডেট করা হয়েছে: এখন অ্যান্টিআলাইজিং সহ। কোডটি কিছুটা ডি-গল্ফ করা হয়েছে যখন এখনও 1K তে ফিট করে।
আউটপুট ফাইল লেখার জন্য অস্ট্রিমে ফাংশন ব্যতীত অন্য কোনও গ্রন্থাগার ফাংশন ব্যবহার করবেন না।
#include <fstream>
namespace {
typedef double d;
int w=512;
d a=1./6,g=1./w,h=1./72,j=h+g,k=h-g,r=5./36;
struct p{d x,y;}ps[]={{5*a,a},{4*a,2*a},{3*a,a},{2*a,2*a},{a,a}};
struct c{unsigned char r,g,b;}cs[]={{237,51,78},{28,139,60},{0,0,0},{251,177,50},{8,133,194}};
d abs(d x) {return x<0?-x:x;}
d sqrt(d x) {
d e=1e-6,y=1;
for(;abs(y*y-x)>e;y=.5*(y+x/y));
return y;
}
d dist(p c,p z) {
d u=z.x-c.x,v=z.y-c.y;
return abs(r-sqrt(u*u+v*v));
}
c lerp(c a,c b,d t) {
auto l=[=](d a,d b){return a+(b-a)*t;};
return {l(a.r,b.r),l(a.g,b.g),l(a.b,b.b)};
}
d smoothstep(d z) {
z=(z-j)/(k-j);
z=z<0?0:z>1?1:z;
return z*z*(3-2*z);
}
c color(p z) {
c o{255,255,255};
for(int i=0,j;i<5;++i){
j=z.y<.25?i:4-i;
o=lerp(o,cs[j],smoothstep(dist(ps[j],z)));
}
return o;
}
}
int main() {
std::ofstream o("r.ppm",std::ofstream::binary);
o<<"P6 "<<w<<" "<<w/2<<" 255\n";
for(int y=0;y<w/2;++y)
for(int x=0;x<w;++x)
o.write((char*)&color(p{x*g,y*g}),3);;
}
একটি .ppm ফাইল আউটপুট দেয়:
CRAN-R পরিসংখ্যান ব্যবহার করে।
l=c(1,9);plot(3:7,c(6,4,6,4,6),col=c(4,7,1,3,2),cex=10,ylim=l,xlim=l)
আমার মনে হচ্ছে আমি পার্টিতে কিছুটা দেরি করেছি, তবে সম্ভবত আমি এই সাইটে প্রথম জিএলএসএল জমা দিয়ে এর জন্য প্রস্তুত করতে পারি। এটি স্ক্রিন-ফিলিং আদিমের জন্য খণ্ড শেডার হিসাবে ব্যবহৃত হতে বোঝায় এবং iResolution
ইউনিফর্মে ভিউপোর্টের রেজোলিউশন আশা করে ।
রঙ এবং অবস্থানগুলি পিটার টেলারের জমা থেকে "ধার করা" । 1024 টি অক্ষরের নীচে নামার জন্য আমাকে কিছু পরিবর্তনশীল নাম ছোট করতে হয়েছিল তবে আমি আশা করি এটি এখনও পঠনযোগ্য।
এটি শ্যাডার্টোয়ে দেখুন (যদি আপনার ব্রাউজারটি ওয়েবজিএল সমর্থন করে)।
uniform vec3 iResolution;
float circle(vec2 pos, float r) {
return clamp(r - distance(gl_FragCoord.xy, pos), 0., 1.);
}
float ring(vec2 pos, float r, float d) {
return circle(pos, r + d) * (1. - circle(pos, r - d));
}
void paint(vec3 color, float a) {
gl_FragColor.rgb = mix(gl_FragColor.rgb, color, a);
}
void main() {
struct r_t {
vec2 pos;
vec3 col;
} rs[5];
rs[0] = r_t(vec2( 82, 146), vec3(.04, .56, .85));
rs[1] = r_t(vec2(167, 82), vec3(.98, .66, .12));
rs[2] = r_t(vec2(252, 146), vec3(.14, .12, .13));
rs[3] = r_t(vec2(337, 82), vec3(.00, .62, .35));
rs[4] = r_t(vec2(422, 146), vec3(.93, .13, .29));
float s = min(iResolution.x / 504., iResolution.y / 228.);
vec2 b = (iResolution.xy - vec2(504, 228) * s) * .5;
bool rev = gl_FragCoord.y > iResolution.y * .5;
gl_FragColor.rgb = vec3(1);
for (int i = 0; i < 5; ++i) {
r_t r = rev ? rs[4 - i] : rs[i];
paint(vec3(1), ring(r.pos * s + b, 72. * s, 11. * s));
paint(r.col, ring(r.pos * s + b, 72. * s, 6. * s));
}
}
আমি আমার আসল উত্তরটি এমন একটি দ্বারা প্রতিস্থাপন করেছি যা অঞ্চলগুলি এবং তাদের ছেদগুলিতে আঁকবে। কোডের আকারটি 973 বাইট, অবরুদ্ধ।
অঞ্চল 1-5 রিং হয়। রিংগুলির অভ্যন্তরীণ ব্যাসার্ধ 2.5 ইউনিট থাকে; বাইরের ব্যাসার্ধটি 3 ইউনিট। অভ্যন্তরীণ থেকে বাহ্যিক অনুপাতের অনুপাত এবং পদ্ধতির সাধারণ যুক্তি এখানে পাওয়া যাবে ।
i = Implicit Region;
R1 = i[6.25 <= (x + 6.4)^2 + y^2 <= 9 , {x, y}];
R2 = i[6.25 <= x^2 + y^2 <= 9 , {x, y}];
R3 = i[6.25 <= (x - 6.4)^2 + y^2 <= 9 , {x, y}];
R4 = i[6.25 <= (x + 3.2)^2 + (y + 3)^2 <= 9 , {x, y}];
R5 = i[6.25 <= (x - 3.2)^2 + (y + 3)^2 <= 9 , {x, y}];
আমরা যদি এই রিংগুলি তাত্ক্ষণিকভাবে প্লট করি তবে সেগুলি ইন্টারলক হয় না। লক্ষ্য করুন যে হলুদ রিংটি নীল এবং কালো রিংয়ের শীর্ষে রয়েছে; সবুজ রিংটি কালো এবং লাল উভয় রিংয়ের শীর্ষে রয়েছে।
Show[{RegionPlot[R1, PlotStyle -> Blue, BoundaryStyle -> Blue],
RegionPlot[R2, PlotStyle -> Black, BoundaryStyle -> Black],
RegionPlot[R3, PlotStyle -> Red, BoundaryStyle -> Red],
RegionPlot[R4, PlotStyle -> Yellow, BoundaryStyle -> Yellow],
RegionPlot[R5, PlotStyle -> Green, BoundaryStyle -> Green]
}, PlotRange -> All, PerformanceGoal -> "Quality",
ImageSize -> Large, AspectRatio -> 1/2,
Frame -> False]
6, 8, 10 এবং 12 অঞ্চলগুলি আয়তক্ষেত্র যা দুটি রিংয়ের কোন ছেদকে ফোকাস করতে হবে তা নির্দিষ্ট করে।
অঞ্চলগুলি 7, 9, 11 এবং 13 হ'ল "রিং ওভারল্যাপগুলি" যেখানে নীচের অংশের রিংটি শীর্ষে থাকা উচিত।
R6 = Rectangle[{-5, -1}, {-2, 1}];
R7 = RegionIntersection[R1, R4, R6];
R8 = Rectangle[{2, -1}, {4, 1}];
R9 = RegionIntersection[R2, R5, R8];
R10 = Rectangle[{-2, -3}, {2, -2}];
R11 = RegionIntersection[R2, R4, R10];
R12 = Rectangle[{5, -3}, {7, -2}];
R13 = RegionIntersection[R3, R5, R12];
Show[{RegionPlot[R1, PlotStyle -> Blue, BoundaryStyle -> Blue],
RegionPlot[R2, PlotStyle -> Black, BoundaryStyle -> Black],
RegionPlot[R3, PlotStyle -> Red, BoundaryStyle -> Red],
RegionPlot[R4, PlotStyle -> Yellow, BoundaryStyle -> Yellow],
RegionPlot[R5, PlotStyle -> Green, BoundaryStyle -> Green],
RegionPlot[R7, PlotStyle -> Blue, BoundaryStyle -> Blue],
RegionPlot[R9, PlotStyle -> Black, BoundaryStyle -> Black],
RegionPlot[R11, PlotStyle -> Black, BoundaryStyle -> Black],
RegionPlot[R13, PlotStyle -> Red, BoundaryStyle -> Red]},
PlotRange -> All, PerformanceGoal -> "Quality",
ImageSize -> Large, AspectRatio -> 1/2,
Frame -> False]
নীচেরগুলি ছেদ অঞ্চলগুলিকে হাইলাইট করে যেখানে রঙগুলি "উল্টানো" হয়েছিল। BoundaryStyle
7, 9, 11 এবং 13-এ অঞ্চল পরিবর্তন করে এটি সম্পন্ন হয়েছিল White
।
এইচটিএমএল উপাদান দেওয়া, এই ফাংশনটি রিংগুলিকে 3 ডি অবজেক্ট হিসাবে তৈরি করবে এবং তারপরে উপাদানটিতে স্থির চিত্র পেশ করবে। ব্রাউজারগুলিতে কাজ করে যা ওয়েবজিএল সমর্থন করে। বেহালা
function Logo(l){
var s, c, r;
s = new THREE.Scene();
c = new THREE.PerspectiveCamera(45, 4/3, 1, 500);
c.position.set(75,0,300);
c.lookAt(new THREE.Vector3(0,0,0));
var rings = [
new THREE.Mesh(ring(), mat(0x0885c2)),
new THREE.Mesh(ring(), mat(0xfbb132)),
new THREE.Mesh(ring(), mat(0x000000)),
new THREE.Mesh(ring(), mat(0x1c8b3c)),
new THREE.Mesh(ring(), mat(0xed334e))
];
for(var i = 0; i < rings.length; i++){
s.add(rings[i]);
rings[i].position.set(i*55-125,-(i%2)*50,0);
rings[i].rotation.set(0,(i%2*2-1)*.18,0,'xyz');
}
r = new THREE.WebGLRenderer();
r.setSize(400, 300);
l.appendChild(r.domElement);
r.render(s, c);
}
function ring(){ return new THREE.TorusGeometry(50, 8, 16, 32); }
function mat(color){ return new THREE.MeshBasicMaterial({color: color}); }
এটি এত সংক্ষিপ্ত ছিল যে ওয়েবসাইটটি এটি আপলোড করতে অস্বীকার করেছিল যতক্ষণ না আমি এই বিবরণটি যোগ করি। লোগোটি অলিম্পিক গেমসের প্রতিনিধিত্ব করে।
$ $ $
$ $
কল্পনার কোনও প্রসারিত দ্বারা ছোট নয়, তবে যতটা সম্ভব অল্প-এখনও পাঠযোগ্য এবং এখনও 1 কে এর নিচে রাখা হয়েছে।
#include <SFML/Graphics.hpp>
using namespace sf;
int main() {
CircleShape circles[5];
Color backcolor(255,255,255);
Color colors[5] = {
Color(0x0b,0x8e,0xd8),
Color(0xf9,0xa9,0x1f),
Color(0x23,0x1f,0x20),
Color(0x00,0x9e,0x59),
Color(0xee,0x20,0x49),
};
for (int i = 0; i < 5; i++) {
circles[i] = CircleShape(144, 60);
circles[i].setPosition(15+160*i, 46+160*(i&1));
circles[i].setFillColor(Color::Transparent);
circles[i].setOutlineColor(colors[i]);
circles[i].setOutlineThickness(-16);
}
RenderWindow window(VideoMode(960, 540), L"Olympic Logo", Style::Close);
while (window.isOpen()) {
Event event;
while (window.pollEvent(event))
if (event.type == Event::Closed)
window.close();
window.clear(backcolor);
for (int i = 0; i < 5; i++)
window.draw(circles[i]);
window.display();
}
return 0;
}
সম্পাদনা: @ পিটার টেলরের এসভিজি জমা দেওয়ার ভিত্তিতে আপডেট হওয়া রঙগুলি colors
Canvas.Pen.Width := 10;
Canvas.Brush.Style:=bsClear;//To prevent solid background
Canvas.Pen.Color:=clBlue; Canvas.Ellipse(20,30,220,230);
Canvas.Pen.Color:=clBlack; Canvas.Ellipse(240,30,440,230);
Canvas.Pen.Color:=clRed; Canvas.Ellipse(460,30,660,230);
Canvas.Pen.Color:=clYellow; Canvas.Ellipse(130,130,330,330);
Canvas.Pen.Color:=clGreen; Canvas.Ellipse(350,130,550,330);
একটি জাভা সুইং জিইউআই আল্ট্রা গল্ফ সংস্করণ (6৯6 চারা) এর ভিত্তিতে একটি সমাধান তৈরি করেছে
import java.awt.Color;import java.awt.Graphics;import javax.swing.JFrame;import javax.swing.JPanel;class A extends JFrame{public A(){JPanel j=new JPanel(){protected void paintComponent(Graphics g){;((java.awt.Graphics2D)g).setStroke(new java.awt.BasicStroke(3));g.setColor(new Color(0xb,0x8e,0xd8));g.drawOval(10, 10, 80, 80);g.setColor(new Color(0xf9,0xa9,0x1f));g.drawOval(50,40,80,80);g.setColor(new Color(0x23,0x1f,0x20));g.drawOval(90, 10, 80, 80);g.setColor(new Color(0,0x9e,0x59));g.drawOval(130,40,80,80);g.setColor(new Color(0xee,0x20,0x49));g.drawOval(170, 10, 80, 80);}};j.setBounds(0,0,600,400);setSize(600,400);add(j);}public static void main(String[]a){new A().setVisible(true);}}
সেমিউনপ্রেসড এক: (971)
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
class A extends JFrame
{
public A()
{
JPanel j = new JPanel(){
protected void paintComponent(Graphics g)
{;
((java.awt.Graphics2D)g).setStroke(new java.awt.BasicStroke(3));
g.setColor(new Color(0xb,0x8e,0xd8));
g.drawOval(10, 10, 80, 80);
g.setColor(new Color(0xf9,0xa9,0x1f));
g.drawOval(50,40,80,80);
g.setColor(new Color(0x23,0x1f,0x20));
g.drawOval(90, 10, 80, 80);
g.setColor(new Color(0,0x9e,0x59));
g.drawOval(130,40,80,80);
g.setColor(new Color(0xee,0x20,0x49));
g.drawOval(170, 10, 80, 80);}};
j.setBounds(0,0,600,400);
setSize(600,400);
add(j);
}
public static void main(String[]a)
{
new A().setVisible(true);
}
}
প্রতিটি রিংটি অভ্যন্তরীণ / বাহ্যিক বৃত্ত দ্বারা গঠিত, তারপরে বন্যায় ভরা।
ছেদগুলি নিজেই খুঁজে পেতে এবং সেগুলি পৃথকভাবে পূরণ করতে হয়েছিল (যাতে আপনি এখনও তাদের মধ্যে কিছু লাইন দেখতে পারেন)।
1 INK 0: PAPER 15: CLS: LET r=50
2 FOR x=1 TO 3
3 CIRCLE x*100,100,r: CIRCLE x*100,100,r-10
4 IF x<3 THEN CIRCLE (x*100)+50,150,r: CIRCLE (x*100)+50,150,r-10
5 NEXT x
6 INK 0: FILL 165,130: FILL 195,145: FILL 200,55: FILL 215,145: FILL 245,105
7 INK 9: FILL 100,55: FILL 130,130: FILL 145,105
8 INK 10: FILL 270,135: FILL 295,145: FILL 300,55
9 INK 12: FILL 205,145: FILL 215,120: FILL 250,195: FILL 255,105: FILL 280,120
10 INK 14: FILL 105,145: FILL 110,125: FILL 150,195: FILL 155,105: FILL 190,130