# US 2021/0174584 A1 · Polar stroking for vector graphics

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2021/0174584 A1
- Document ID: US20210174584A1
- Status: Published application
- Kind: A1
- Application number: 16/714,621
- Filed: 2019-12-13
- Published: 2021-06-10
- Earliest claimed: 2019-12-10
- Assignees: NVIDIA Corporation
- Applicants: Nvidia Corporation
- Inventors: Mark Kilgard
- Web page: https://patentgrep.com/patent/US20210174584A1

## CPC

- G06T 17/20: Finite element generation, e.g. wire-frame surface description, {tesselation}
- G06T 1/20: Processor architectures; Processor configuration, e.g. pipelining
- G06T 11/23: using straight lines or curves
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL

## Abstract

The disclosure introduces polar stroking for representing paths. A system, method, and apparatus are disclosed for representing and rendering stroked paths employing polar stroking. In one example, a method of approximating a link of a path is provided that includes: (1) determining tangent angle changes of a link of a path, (2) evaluating the link in steps based on the tangent angle changes, and (3) providing a polar stroked representation of the link employing the steps, wherein the evaluating is performed non-recursively. A polar stroking system is also disclosed. In one example, the polar stroking system includes: (1) a path processor configured to decompose a path into links, and (2) a polar stroking processor configured to determine polar stroking intermediates of the links from a characterization of the links and generate, employing the polar stroking intermediates, a polar stroked representation for each of the links.

## Claims

### Claim 1

A method of approximating a link of a path, comprising:
determining tangent angle changes of a link of a path;
evaluating the link in steps based on the tangent angle changes; and
providing a polar stroked representation of the link employing the steps, wherein the evaluating is performed non-recursively.

### Claim 2 (depends on 1)

The method as recited in claim 1, wherein the determining the tangent angle changes includes intersecting a hodograph curve of a generating function of the link with polar lines.

### Claim 3 (depends on 2)

The method as recited in claim 2, wherein at least some of the intersecting is performed in steps of uniform angle changes.

### Claim 4 (depends on 1)

The method as recited in claim 1, further comprising generating a stroked tessellation of the link employing the polar stroked representation.

### Claim 5 (depends on 4)

The method as recited in claim 4, wherein the polar stroked representation is a sequence of polygons.

### Claim 6 (depends on 1)

The method as recited in claim 1, further comprising controlling an operation of a machine based on the polar stroked representation.

### Claim 7 (depends on 6)

The method as recited in claim 6, wherein the link is a segment, and the machine is a Computer Numerical Control (CNC) machine.

### Claim 8 (depends on 1)

The method of claim 1, wherein the evaluating accounts for changes in curvature sign.

### Claim 9 (depends on 1)

The method of claim 1, wherein the link is a rational quadratic Bézier curve.

### Claim 10 (depends on 1)

The method of claim 1, wherein the link is a cubic Bézier curve.

### Claim 11 (depends on 1)

The method of claim 1, wherein the link is a join.

### Claim 12 (depends on 1)

The method of claim 1, wherein the evaluating is performed by shader execution on a GPU.

### Claim 13 (depends on 12)

The method of claim 12, wherein the evaluating is performed by programmable GPU tessellation shader stages.

### Claim 14 (depends on 12)

The method of claim 12, wherein the evaluating is performed by mesh shaders.

### Claim 15 (depends on 1)

The system as recited in claim 1, wherein the link is a cap, a join, or a segment of the path.

### Claim 16

A polar stroking system, comprising:
a path processor configured to decompose a path into links; and
a polar stroking processor configured to determine polar stroking intermediates of the links from a characterization of the links and generate, employing the polar stroking intermediates, a polar stroked representation for each of the links.

### Claim 17 (depends on 16)

The system as recited in claim 16, wherein the characterization includes type, indices, and control points of the link.

### Claim 18 (depends on 17)

The system as recited in claim 17, wherein the polar stoking processor is configured to determine at least some of the polar stroking intermediates from the control points.

### Claim 19 (depends on 18)

The system as recited in claim 18, wherein the polar stroking processor is configured to transform the control points before determining the polar stroking intermediates from the control points.

### Claim 20 (depends on 16)

The system as recited in claim 16, wherein the polar stroking processor is a graphics processing unit (GPU).

### Claim 21 (depends on 20)

The system as recited in claim 20, wherein the determining the polar stroking intermediates is performed by a polar stroking shader implemented on the GPU.

### Claim 22 (depends on 16)

The system as recited in claim 16, wherein the system is a vector graphics rendering system and the polar stroked representations are employed to render a stroked tessellation of the path.

### Claim 23 (depends on 16)

The system as recited in claim 16, wherein the link is a cap, a join, or a path segment.

### Claim 24 (depends on 16)

The system as recited in claim 16, wherein the polar stroked representation for each of the links is a sequence of polygons.

### Claim 25 (depends on 24)

The system as recited in claim 24, wherein the polygons are quadrilaterals.

### Claim 26 (depends on 16)

A computing device comprising the system as recited in claim 16 and a screen configured to display an image of the path based on the polar stroked representations of each of the links.

### Claim 27 (depends on 26)

A computing device as recited in claim 26, wherein the computing device is a smart phone.

### Claim 28 (depends on 16)

A printer comprising the system as recited in claim 16 and a printing mechanism configured to print the path based on the polar stroked representations of each of the links.

### Claim 29

A renderer, comprising:
a central processing unit (CPU) configured to decompose a path into links; and
a graphics processing unit (GPU) configured to generate a stroked tessellation of the path based on a polar stroked representation of each of the links.

### Claim 30 (depends on 29)

The renderer as recited in claim 29, wherein the GPU is further configured to determine polar stroking intermediate values for each of the links and generate the polar stroked representation of each of the links employing corresponding ones of the polar stroking intermediate values.

### Claim 31

The renderer as recited in 29, wherein the GPU includes a programmable graphics pipeline with programmable shader stages and fixed-function stages configured to generate the polar stroked representations, wherein the programmable shader stages include at least one polar stroking shader.

### Claim 32 (depends on 29)

The renderer as recited in claim 29, wherein the polar stroked representation of each of the links is a sequence of quadrilaterals.

### Claim 33

A method of rendering stroked paths, comprising:
obtaining a characterization of at least one link of a path;
computing polar stroking intermediate values of the at least one link from the characterization;
generating, employing the polar stroking intermediates, a sequence of quadrilaterals to represent the at least one link; and
providing a stroked tessellation of the path employing the sequence of quadrilaterals for the at least one link.
