EverGiver

Path 본문

웹 디자인/SVG

Path

친절한개발초보자 2022. 2. 22. 00:42
728x90
Path란

 

  • <path> element는 SVG 기본 도형 라이브러리에서 가장 강력한 엘리먼트이다. 
  • 선과 곡선, 호 등 다양한 형태를 그릴 수 있다.
  • 패스의 모양은 d 속성 하나로 정의된다.
    ("d" 속성은 여러 개의 명령어와 그 파라미터들로 이루어진다.)
  • 각각 명령은 특정 알파벳으로 시작한다.
    - "Move To" 명령을 사용하며, 이 명령은 알파벳 M으로 호출
      (SVG 처리기가 이 문자를 읽게 되면 다른 위치로 이동하라는 명령으로 이해하게 된다.)
  • 모든 명령어는 2가지 변형이 존재하는데, 알파벳이 대문자일 경우, 뒤따르는 좌표는 페이지의 절대 좌표를 참조하며, 소문자 알파벳일 경우 마지막 위치에 대한 상대적 좌표로 참조된다.

 

Line(선) 명령어

 

두 점 사이에 선을 그리는 역할을 한다. 

  • M / m (moveTo)
    - 시작점 지정
    - 두 개의 파라미터로 x와 y 좌표를 받는다.
    - 그리기 커서가 이미 페이지의 다른 곳에 있었더라도 두 점 사이에 점이 그려지지는 않는다.
  • L / l (lineTo)
    - 직선 그리기
    - x, y라는 두 개의 파라미터를 받아서 현재 위치에서 새 위치로 선을 긋는다.
  • H / h (horizontal lineto)
    - 수평선 긋기
    - 현재 점에서 수평선을 그린다.
    - 한 좌표축으로만 이동하므로 하나의 파라미터만을 받는다.
  • V / v (vertical lineto)
    - 수직선 긋기
    - 현재 점에서 수직선을 그린다.
    - 한 좌표축으로만 이동하므로 하나의 파라미터만을 받는다.
  • Z / z (closepath)
    - 시작점까지 연결, 패스 닫기
    - 대문자와 소문자 사이의 차이는 없다.
    <svg class="view03" width="100" height="100">
        <path d="M 20,10 L 80,10 L 90,80 H 10 Z"></path>
        <style>
            .view03 path{
                fill:none;
                stroke:rgb(201, 141, 74);
            }
        </style>
    </svg>

 

곡선 (Curve) 명령어

 

  • C / c (curveto)
    - 곡선 긋기
    - 3차 베지어 곡선은 선을 잇는 두 점에 하나씩 제어점을 가지고 있다.
      (3차 베지에 곡선을 그리려면 총 세 개의 좌표가 필요하다.)
    - 마지막으로 지정된 좌표 (x, y)는 곡선의 끝점이다.
    - 나머지 두 개는 제어점이며, 첫 번째 제어점은 (x1, y1), 두 번째 제어점은 (x2, y2)이다.
    - 제어점은 기본적으로 시작점과 끝점에서 곡선의 방향을 기술한다.
    C x1 y1, x2 y2, x y / c dx1 dy1, dx2 dy2, dx dy
  • S / s (smooth curveto)
    - 곡선 이어 긋기
    - 한 선의 제어점을 다른 선의 제어점과 반대 방향으로 그어서 완만한 경사를 만드는 경우 사용한다.
    - 다른 S나 C 명령어 다음에 올 경우 첫 번째 제어점은 이전에 사용했던 제어점을 뒤집은 것으로 간주된다.
    - S 명령어가 다른 S나 C 명령어 다음에 오지 않을 경우에는 현재 커서 위치가 첫 번째 제어점으로 사용된다.
     S x2 y2, x y / s dx2 dy2, dx dy
     
  •   Q / q (quadratic Bézier curve)
    - 2차원 베지어 곡선 긋기
    - 하나의 제어점이 시작점과 끝점의 방향을 모두 결정한다. 
    - 매개변수로 제어점과 곡선의 끝점 2개를 받는다.
    Q x1 y1, x y / q dx1 dy1, dx dy

  • T / t (smooth quadratic Bézier curveto)
    - 2차원 베지어 곡선 이어 긋기
    - 이전에 사용한 제어점으로부터 새로운 제어점을 만들어낸다.
      (처음에 제어점 하나만을 기술하면 끝점만을 계속 이어서 꽤 복잡한 도형을 만들 수 있다.)
    - QT가 앞에 오면 뒤에 오는 T는 이전에 사용한 제어점으로부터 곡선이 자동 생성 조절점이 생략된다/
    - T는 이전의 명령이 Q 또는 T가 아닌 경우는 제어점이 현재점과 일치한다고 가정하에 직선이 된다.
    T x y / t dx dy

    <svg class="view01" width="100" height="100">
        <!-- <path d="M 0,16 
                    C 16,32 16,0 32,16 
                    S 48,0 64,16 
                    Z">
        </path> -->
        <!-- <path d="M 0,16 
                    S 16,0 32,16
                    S 48,0 64,16 
                    Z">
        </path> -->
        <path d="M 0,16 
                    Q 16,0 32,16
                    T 64,16 
                    Z">
        </path>
        <style>
            .view01 path{
                stroke:#000;
            }
        </style>
    </svg>

 

원호

 

  • A / a (elliptical Arc)
    - 타원이나 호 그리기
      (호는 원이나 타원의 일부분을 말한다.)
    - x, y축 반지름이 주어졌을 때, 두 점을 연결할 수 있는 타원은 2개가 있다.
    - 각각의 타원에서 두 점을 잇는 경로 또한 2개씩 있기 때문에 어떤 상황에서든 네 종류의 호를 그릴 수 있다.
    - A 명령어는 x축, y축 반지름을 매개변수로 받으며 세 번째 매개변수는 호의 회전각을 기술한다.
    - 첫 번째 인수는 큰 호 플래그(large-arc-flag)이며, 중심각이 180도 이상이 될지를 결정한다.
      (호가 주어진 원의 어느 방향을 따라 돌지를 결정한다.)
    - 두 번째 인수는 쓸기 방향 플래그(sweep-flag)이며, 호가 이동해야 할 각이 음인지 양인지를 결정한다.
      (이 각은 본질적으로 두 개의 원 중 어느 쪽을 따를지를 결정한다.)
    - 마지막 두 개의 매개변수는 호가 끝나는 x와 y 좌표를 지정한다.
     A rx ry x축-회전각 큰-호-플래그 쓸기-방향-플래그 x y
     a rx ry x축-회전각 큰-호-플래그 쓸기-방향-플래그 dx dy


728x90

'웹 디자인 > SVG' 카테고리의 다른 글

Animation  (0) 2022.02.28
3D  (0) 2022.02.28
Text  (0) 2022.02.28
Basic Shapes  (0) 2022.02.21
SVG란  (0) 2022.02.21
Comments