Narysuj znak szacunkowy UE


11

Specyfikacja znaku „szacunkowego” stosowanego w dyrektywie Unii Europejskiej (U + 212e w Unicode, którego nie można po prostu wydrukować dla tego wyzwania) jest dość precyzyjna.

Specyfikacja znaku szacunkowego UE

Aby skopiować pewne ograniczenia z tego pytania : Renderuj symbol do pliku lub ekranu za pomocą grafiki wektorowej lub rastrowej. Jeśli dane wyjściowe są rasteryzowane, obraz musi mieć wymiary 264 x 240 pikseli lub więcej. Nie wolno rysować żadnych innych linii pomocniczych ani wskaźników długości.


9
Dość precyzyjny, ale wciąż nieco niejasny. Czym dokładnie są 0,085, 0,013i 0,025pomiarowe? Czy 0,846przekątna pośrodku ma przechodzić przez epicentrum elipsy utworzonej przez zewnętrzną 1i 0,9?
AdmBorkBork

1
Nie ten sam symbol, ale myślę, że jest to na tyle blisko, aby być uznane za dup: codegolf.stackexchange.com/questions/26689/... . Nie używam jednak mojego młota dup.
Cyfrowa trauma

@TimmyD 0,025 to grubość poprzeczki, która rozciąga się o +/- 0,0125 po obu stronach środka elipsy, zamiast siedzieć na linii środkowej. (Odwróciłem symbol i zaznaczyłem.) 0,013 to promień narożnika (powinno być łatwo znaleźć środek okręgu narożnego). 0,085 to także promień narożnika (pomocna w znalezieniu współrzędnej y okręgu narożnego byłaby dobra).
Poziom Rzeka St

1
Bardziej interesujące, jeśli unikniesz używania liter „E”, „n”, „g”, „l”, „a”, „d” ...
Comintern

Odpowiedzi:


15

VBA, 587560 bajtów

Sub S(a,b,c,d,e,f)
Set v=ActiveSheet.Shapes.AddShape(a,b,c,d,e)
v.Fill.ForeColor.RGB=f
v.Line.Visible=0
If a=5 Then v.Adjustments(1)=.5
End Sub
Sub U():p=91.5:w=-1
S 1,0,0,500,450,w
S 9,0,0,500,450,0
S 9,38.5,13.5,423,423,w
S 1,36,120,29,210,0
S 1,65,80,26.5,290,0
S 1,435,120,29,105,0
S 1,408.5,80,26.5,145,0
q=212.25:S 1,9,q,480,19,0
S 5,p,205.75,317,13,w
S 1,405,231.25,95,131.5,w
r=14.5:S 1,p,70.5,r,30,0
q=85:S 9,p,59.6,q,q,w
S 1,p,349.5,r,30,0
S 9,p,305.4,q,q,w
S 1,395,70.5,r,30,0
S 9,323.5,59.6,q,q,w
q=231.25:S 1,p,q,6.5,6.5,0
S 9,p,q,13,13,w
End Sub

Wywołaj makro U. Zasadniczo dużo rysowania kształtów. Kształt 1 to prostokąt, 5 to zaokrąglony prostokąt, a 9 to owal. Wyjście ma szerokość 500 i wysokość 450.

wprowadź opis zdjęcia tutaj

Edycja : dodano zaokrąglony prostokąt (z regulacją, aby zamieniać końce w półkola), aby uzyskać zaokrąglone rogi na górze paska z jednym rysunkiem kształtu.


Excel pożyczył - Na pewno włożyłeś w to dużo pracy! Możesz upuścić 2bajty, zmieniając Sub U()naSub U
Taylor Scott

Actuallly można dostać to w dół do 535 bajtów, przez co zmienia fsię Optional f=0i usuwania 0 f połączeń, usuwając miejsca w a=5 Then, przesuwając podprogramów do codepane arkusza i usunięciu ActiveSheet.połączenia (oznacza to, że U jest wówczas nazywane jako Sheet1.U) i usunięciu ()inSub U()
Taylor Scott

3

Haml + Sass, 20 + 722 = 742 bajtów

Jestem pewien, że można by grać w golfa o wiele bardziej, ale jestem z tego zadowolony. Demo na CodePen .

Uwaga: Z powodu domyślnych marginesów wymaga to okna przeglądarki o szerokości co najmniej 1000-niektórych pikseli.

Haml

#u
#v
 #w
 #x
 #y
#z

Sass

$w: 1000px
$h: 900px
$a: 183px
$b: 25px
$p: 85px
$q: 13px
$d: 846px
$e: $w - 2*$a
$f: 143px
$s: 50%
$t: $p/5.5
=d($w:$w,$h:$h)
 width: $w
 height: $h
=m($c)
 background-color: $c
=k
 +m(#000)
 position: absolute
 content: ''
=l
 +k
 +m(#fff)
=o($o:$p)
 +d($o,$p)
=r($a)
 border-radius: $a
*
 +k
html,body
 +l
 position: relative
#u
 +d
 clip-path: ellipse($s $s)
#v
 +d($e)
 left: $a
 clip-path: circle(($d/2) at $s $s)
#v::before,#v::after
 +l
 +d($e,($h -$b)/2)
 +r($q)
#v::after
 bottom: 0
#w,#x
 +o($t)
 top: $f
#w::before,#x::before,#y::before
 +l
 +o
 +r($s 0)
#x,#x::before
 right: 0
#x::before
 +r(0 $s 0 0)
#y
 +o($t)
 bottom: $f
 z-index: 9
#y::before
 +r(0 0 0 $s)
#z
 +l
 +d($s,267px)
 top: ($h+$b)/2
 right: 0

3

GLSL + shadertoy.com, 349 345 344 bajtów

#define F float
void mainImage(out vec4 R,vec2 C){F S=min(iResolution.x,iResolution.y/0.9);vec2 p=C/vec2(0.5,0.45)/S-1.;F A=0.94-length(p*vec2(1.22,1));F H=min(min(-p.y-0.025,p.y+0.551),p.x);F B=max(length(p)-1.,min(abs(p.y)-0.025,max(A,H)));F D=max(min(p.x,-p.y),max(-A,0.634-abs(p.x)));R=vec4(vec3(max(H,min(B*D*64.-0.01,min(B,D)))*S/3.),1);}

Można to przetestować, wklejając kod na tej stronie: https://www.shadertoy.com/new

Dane wyjściowe (gdy rozmiar ekranu to 1440 * 900):

wprowadź opis zdjęcia tutaj


Nie jesteś pewien swoich rogów na końcach środkowego paska, nie wyglądają całkiem dobrze.
Joffan

Może powinny mieć trochę inny „rozmiar”, tak naprawdę nie rozumiałem, jaki powinien być rozmiar, więc przybliżyłem to oczami
Nazwa wyświetlana

1
Powinny być łukami kołowymi o promieniu 0,013 (x pełnej szerokości figury).
Joffan
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.