# Representation ## Overview SketchKit uses a unified representation for sketches, making it easy to work with various datasets.
All sketches are converted into the **Sketch standard format**, which provides a structured way to access paths, curves and points. ## Core Concepts A `Sketch` is composed of several levels of hierarchy, which contains a list of `Path`s.
A `Path` contains a list of `Curve`s.
And each `Curve` is a cubic bezier curve with start and end vertices and two control points.
A `Vertex` is a point with many other drawing attributes than naive `Point` (which only has x,y position.) ### Sketch - The top-level object representing a full sketch. - Contains multiple paths. ### Path - A sequence of one or more curves that form a continuous stroke. - e.g. A single hand-drawn line ### Curve - A cubic Bézier curve connecting two vertices. - e.g. cutting a path into multiple parts, each part represents a curve - Defined by: - Start Vertex - End Vertex - Control Point 1 - Control Point 2 ### Vertex - A specialized point with additional drawing attributes. - Attributes include: - `pressure`: pen pressure at this point - `thickness`: stroke width at this point - Other style information - e.g. every curve’s start and end points are vertices. ### Point - The most basic element in a sketch. - Stores the 2D position `(x, y)` of a point. - e.g. mostly serve as **control points** for cubic Bézier curves, defining the curve's shape. ## Visualization The structure can be visualized as follows: ```python Sketch - Path - Curve - Start Vertex - End Vertex - Control Point 1 - Control Point 2 - Curve ... - Path ... ```