Przejdź do treści

Centrum Kształcenia Zawodowego i Ustawicznego w Mrągowie

SVG: Piłka do piłki nożnej

piątek,

SVG: Piłka do piłki nożnej

W formacie SVG współrzędne domyślnie obliczane są względem lewego górnego rogu grafiki. Aby uniknąć dodatkowego przeliczania współrzędnych punktów, elementy składowe obrazu zgrupowano (element g) i przesunięto (translate(110,110)) na środek grafiki. Zwróć uwagę, że oś Y nadal jest skierowana do dołu.

Pierwszy etap projektu to utworzenie koła (circle) i wyznaczenie współrzędnych kluczowych punktów. Ich wartości wyznaczono wykorzystując równanie parametryczne okręgu za pomocą poniższych formuł:

  • x = r * cos α;
  • y = r * sin α.

Parametr r to promień okręgu, w grę wchodzą trzy okręgi o promieniach: 40, 80 i 100 pikseli. Ustalenie współrzędnych pierwszych punktów nie wymaga obliczeń, będzie to punkt o współrzędnych (długość promienia, 0). Kolejne punkty dzielą okrąg na pięć równych części, dlatego kąt α będzie przyjmował wartości będące wielokrotnościami 72° (360°/5), czyli 72°, 144°, 216° oraz 288°. Do obliczeń można wykorzystać jakieś narzędzie, możesz skorzystać z przykładowej formuły dla kalkulatora Google: cos((3*72)deg) * 100 dla współrzędnej x czwartego poszukiwanego punktu okręgu o promieniu 100. Dla współrzędnej y należy zmienić cos na sin, dla innych punktów wystarczy w formule zmienić liczbę 3 oraz dla innych okręgów promień na właściwą wartość. W projekcie przyjęto przybliżenia otrzymanych wartości, ułatwia to pracę, a w tym przypadku trudno zauważyć różnicę 0,1 piksela nawet po ekstremalnym powiększeniu.

Punkty

Pięciokąt

Piłka

W kolejnym kroku na środku koła za pomocą elementu polygon utworzono pięciokąt oraz dodano odcinki (elementy line) łączące środek koła z jego obwodem. Ostatnie detale widoczne na grafice otrzymano za pomocą trójkątów równoramiennych, w finalnej wersji zostały one przekształcone do właściwego kształtu za pomocą mechanizmu przycinania.

Po utworzeniu pierwszego trójkąta za pomocą elementu polygon przeniesiono jego kod do znacznika <defs>, elementy, które są zawarte w <defs> nie są bezpośrednio renderowane, na podstawie identyfikatorów (atrybut id) można się do nich odwoływać. Trójkąty wstawiono do dokumentu jako elementy <use> wskazujące na właściwy identyfikator (href="#tri"). Cztery z nich zostały obrócone o właściwy kąt względem środka koła (np. transform="rotate(72)").

Skrótowo rzecz biorąc, przycinanie polega na wyświetlaniu części wspólnej elementu oraz zdefiniowanej specjalnie ścieżki przycinania (clipPath). W odcięciu wykonanym w prezentowanym przykładzie jako ścieżkę odcinania wykorzystano koło. Zwróć uwagę, że ma ono zwiększony promień w stosunku do koła widocznego na grafice, wynika to z własności obrysu – jego część znajduje się poza obszarem kształtu i identyczne koło jako wzorzec odcięcia spowodowałoby modyfikację konturu. Odcięcie deklaruje się za pomocą atrybutu clip-path zawierającego identyfikator ścieżki przycinania, np. clip-path="url(#clip)".

Poniżej znajduje się kod projektu zapisany formacie SVG. Możesz go wkleić do edytora tekstowego (np. notatnika) i zapisać z rozszerzeniem svg lub wstawić do kodu strony internetowej.

<svg width="220" height="220" transform="scale(1,-1)" 
  xmlns="http://www.w3.org/2000/svg">
  <defs>
      <polygon id="tri" points="80,0 100,40 100,-40" />
      <clipPath id="clip">
        <circle cx="0" cy="0" r="101" fill="none" />
      </clipPath>
  </defs>
  <g transform="translate(110,110)" clip-path="url(#clip)"
     stroke="#353535" stroke-width="2">
    <circle cx="0" cy="0" r="100" fill="#eee" />
    <line x1="0" y1="0" x2="100" y2="0" />
    <line x1="0" y1="0" x2="31" y2="95" />
    <line x1="0" y1="0" x2="-81" y2="59" />
    <line x1="0" y1="0" x2="-81" y2="-59" />
    <line x1="0" y1="0" x2="31" y2="-95" />
    <polygon points="40,0 12,38 -32,24 -32,-24 12,-38" />
    <use href="#tri" />
    <use href="#tri" transform="rotate(72)" />
    <use href="#tri" transform="rotate(144)" />
    <use href="#tri" transform="rotate(216)" />
    <use href="#tri" transform="rotate(288)" />
  </g>
</svg>

Dla przypomnienia:

  • w formacie SVG współrzędne liczone są od lewego górnego rogu obrazu;
  • rozróżniane są wielkie i małe litery;
  • w przypadku błędów składniowych grafika się nie wyświetla;
  • brak określenia jednostki przy wymiarach oznacza, że przyjmowane są piksele;
  • element <circle> to koło, jego atrybuty cx i cy to współrzędne środka, r określa promień;
  • element <line> to odcinek, atrybuty: x1 i y1 – współrzędne początku, x2 i y3 – współrzędne końca;
  • element <polygon> to wielokąt, atrybut points zawiera współrzędne wierzchołków.
Artykuł: Harmonogram egzaminów maturalnych

Harmonogram egzaminów maturalnych

Artykuł: Staże w Hiszpanii

Staże w Hiszpanii

Artykuł: Conformité Européenne

Conformité Européenne

Artykuł: Display Stream Compression

Display Stream Compression

Artykuł: High Dynamic Range

High Dynamic Range

Nasze technikum

Technik informatyk

Szkoły dla dorosłych

Nasza szkoła

Pełna oferta edukacyjna

Oferta szkoły