इस सवाल के समान भावना में , आपका मिशन कोड के अधिकांश 1K में सबसे अच्छा दिखने वाला लोगो बनाना है।
नियम:
कोड के अधिकतम 1K (समावेशी), कोई बाहरी डेटा नहीं।
सबसे upvotes के साथ जवाब जीतता है।
मज़े करो!
इस सवाल के समान भावना में , आपका मिशन कोड के अधिकांश 1K में सबसे अच्छा दिखने वाला लोगो बनाना है।
नियम:
कोड के अधिकतम 1K (समावेशी), कोई बाहरी डेटा नहीं।
सबसे upvotes के साथ जवाब जीतता है।
मज़े करो!
जवाबों:
1KB? विलासिता। मैं सभी अनावश्यक व्हाट्सएप को हटाने के बजाय आउटपुट को सुंदर प्रिंट भी कर सकता हूं। (इंडेंटेशन, निश्चित रूप से, टैब का उपयोग करता है, जिसे मार्कडाउन रिक्त स्थान में परिवर्तित करता है, यही कारण है कि चार गिनती लग सकती है वास्तविक 977 से अधिक अनावश्यक व्हाट्सएप को हटाने से यह 861 तक गिर जाता है)।
एक दिशा में अंगूठियां खींचकर, फिर एक क्लिप लगाने और उन्हें दूसरी दिशा में खींचने से ओवरलैप को सही ढंग से संभाला जाता है। रंगों और अनुपातों को एक आधिकारिक दस्तावेज़ से निकाला जाता है जो किसी कारण से हलकों के बजाय बेज़ियर घटता का उपयोग करता है।
<?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: डी तक लाने में कामयाब रहे
केवल WebKit ब्राउज़रों के लिए उपयुक्त है। क्रोम ठीक है। फ़ायरफ़ॉक्स एक गड़बड़। इसे क्रॉस ब्राउज़र बनाने में ध्यान देना चाहिए।
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/
फ़ायरफ़ॉक्स के साथ-साथ क्रोम में भार, लेकिन FF में संसाधनों पर भारी है। उपयोग requestAnimationFrame()
करने से थोड़ी मदद मिली, लेकिन पर्याप्त नहीं।
ध्यान दें कि बर्फ नीचे की ओर रहती है, इस प्रकार धीमी वृद्धि को देखने के लिए नीचे स्क्रॉल करें। शुरुआत में जमीन पर कुछ ओवरपैनिंग थी, लेकिन इसे 1024 chr में फिट नहीं किया जा सका।
मैथेमेटिका में मेरे उत्तर से । प्रश्नोत्तर :
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 डी-ईश" है यहां एक वास्तविक 2 डी रेंडरिंग है जो कि मेरे रिफैक्टिंग के साथ जिवेंट के कोड के माध्यम से भी जुड़ा हुआ धागा है:
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:
नमूना उत्पादन:
शीतकालीन ओलंपिक? नियमित रिंग के बजाय कुछ फ्रैक्टल बर्फ के टुकड़े कैसे।
केंद्र शाखा के लिए पुनरावृत्ति बहुत स्पष्ट है: (डीएक्स, डाई) = 0.5 (डीएक्स, डाई)। बाईं और दाईं शाखाएं मैट्रिक्स गुणा द्वारा रोटेशन पर आधारित हैं:
x = x cos (a) - y sin (a)
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)
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"));
}
}
फिर, एक C64 उत्तर, लेकिन इस बार मुझे स्प्राइट्स का उपयोग करने की अनुमति है ! वाह!
मुझे याद है कि यदि आप स्प्राइट्स का उपयोग करना चाहते हैं, तो आप बहुत सारे उबाऊ 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 साल बाद याद है :) यह पता चला है कि यह VIC-II (वीडियो इंटरफ़ेस नियंत्रक) का आधार पता है:
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
डबल चौड़ाई के लिए बिट सेट कर सकते हैं । (बिट #x के लिए स्प्राइट #x)।
आकार: 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
चार गुना करने के लिए उपयोग की जाने वाली शैली से परिभाषित करके छोटा किया जाता है।
C ++ 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)
मुझे ऐसा लगता है कि मैं पार्टी में थोड़ा लेट हो गया हूं, लेकिन हो सकता है कि मैं इस साइट पर पहले GLSL सबमिशन के साथ बना सकता हूं। इसका उपयोग स्क्रीन-फिलिंग आदिम के लिए टुकड़े टुकड़े करने वाले के रूप में किया जाता है, और इसमें व्यूपोर्ट रिज़ॉल्यूशन की अपेक्षा की जाती हैiResolution
वर्दी ।
रंग और स्थिति "उधार" हैं पीटर टेलर द्वारा प्रस्तुत । मुझे 1024 वर्णों से नीचे जाने के लिए कुछ चर नामों को छोटा करना था, लेकिन मुझे आशा है कि यह अभी भी पठनीय है।
इसे Shadertoy पर देखें (यदि आपका ब्राउज़र WebGL का समर्थन करता है)।
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
।
एक HTML तत्व को देखते हुए, यह फ़ंक्शन 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}); }
यह इतना छोटा था कि जब तक मैंने यह विवरण नहीं जोड़ा तब तक वेबसाइट ने इसे अपलोड करने से इनकार कर दिया। लोगो ओलंपिक खेलों का प्रतिनिधित्व करता है।
$ $ $
$ $
कल्पना के किसी भी खिंचाव से छोटा नहीं है, लेकिन 1k के तहत संभव के रूप में अभी तक पढ़ने योग्य है।
#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;
}
संपादित करें: अपडेट किए गए रंग @Peter टेलर के SVG सबमिशन के आधार पर।
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);
जावा स्विंग GUI UltraGolfed संस्करण (696 चरस) के आधार पर एक समाधान बनाया गया
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