IP Library › Granted Patent US 8,773,432
Granted Patent B2
US 8,773,432 · App. 12/201,347 · Granted Jul 8, 2014

Triangulation for accelerated multi-resolution rendering of stroked paths

Inventor: Donald P. Brown (Bothell, WA)
Assignee: Adobe Systems Incorporated
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,773,432
App. No.
12/201,347
Granted
Jul 8, 2014
Kind
B2
Abstract

A method, system, and computer-readable storage medium are disclosed for generating a multi-resolution triangulation of a stroked path. In one embodiment, one or more core triangles in a triangulation of a stroked path may be generated. A plurality of refinement triangles in the triangulation of the stroked path may be generated until a refinement threshold is met. The plurality of refinement triangles may include a plurality of sets of triangles, wherein each set is generated for a particular level of refinement. The stroked path may be rendered to an imaging device based on the one or more core triangles and the plurality of refinement triangles. The triangulation may be generated in a manner that is efficient and computationally stable.

Claims (67)

1. A method, comprising:

executing computer program instructions on a processor of a computer system to perform:

identifying endpoints of a stroked path;

determining offset points that are offset from the endpoints of the stroked path;

generating one or more core triangles using the determined offset points as vertices of the core triangles in a triangulation of the stroked path to approximate a stroke region of the stroked path, the one or more core triangles in the triangulation being generated without computing an intermediate stroke envelope; and

generating a plurality of refinement triangles in the triangulation of the stroked path until a refinement threshold for a boundary of the stroked region is met.

2. The method as recited in claim 1 , further comprising:

storing the one or more core triangles and the plurality of refinement triangles in an order of refinement.

3. The method as recited in claim 1 , wherein generating the plurality of refinement triangles in the triangulation of the stroked path comprises:

generating a first portion of the plurality of refinement triangles comprising at least one edge approximating an offset curve of the stroked path;

determining that the at least one edge approximating the offset curve of the stroked path fails to meet the refinement threshold; and

generating a second portion of the plurality of refinement triangles in response to determining that the at least one edge approximating the offset curve of the stroked path fails to meet the refinement threshold.

4. The method as recited in claim 3 , wherein the first portion of the plurality of refinement triangles is stored before the second portion of the plurality of refinement triangles in a data structure.

5. The method as recited in claim 1 , further comprising:

storing the one or more core triangles and the plurality of refinement triangles in an order of refinement; and

storing a value indicative of a refinement level of the triangulation of the stroked path with the one or more core triangles and the plurality of refinement triangles.

6. The method as recited in claim 5 , further comprising:

determining a new refinement level for displaying the stroked path;

retrieving the one or more core triangles;

retrieving a portion of the plurality of refinement triangles based on the new refinement level; and

rendering the stroked path to the imaging device based on the one or more core triangles and the portion of the plurality of refinement triangles.

7. The method as recited in claim 1 , further comprising rendering the stroked path to an imaging device based on the one or more core triangles and the plurality of refinement triangles in the triangulation of the stroked path.

8. The method as recited in claim 1 , wherein the plurality of refinement triangles comprise a first portion of the plurality of refinement triangles generated at a first refinement level and a second portion of the plurality of refinement triangles generated at a next refinement level, wherein each refinement triangle in the second portion shares an edge with an exterior edge of one refinement triangle in the first portion, and wherein the triangulation of the stroked path is watertight.

9. The method as recited in claim 1 , wherein the offset points lie along lines perpendicular to tangent vectors at the endpoints of the stroked path.

10. A computer-readable storage memory comprising stored program instructions that are computer-executable to implement:

identifying endpoints of a stroked path;

determining offset points that are offset from the endpoints of the stroked path;

generating one or more core triangles using the determined offset points as vertices of the core triangles in a triangulation of the stroked path to approximate a stroke region of the stroked path, the one or more core triangles in the triangulation being generated without computing an intermediate stroke envelope; and

generating a plurality of refinement triangles in the triangulation of the stroked path until a refinement threshold for a boundary of the stroked region is met.

11. The computer-readable storage memory as recited in claim 10 , wherein generating the plurality of refinement triangles in the triangulation of the stroked path comprises:

generating a first portion of the plurality of refinement triangles comprising at least one edge approximating an offset curve of the stroked path;

determining that the at least one edge approximating the offset curve of the stroked path fails to meet the refinement threshold; and

generating a second portion of the plurality of refinement triangles in response to determining that the at least one edge approximating the offset curve of the stroked path fails to meet the refinement threshold.

12. The computer-readable storage memory as recited in claim 11 , wherein the first portion of the plurality of refinement triangles is stored before the second portion of the plurality of refinement triangles in a data structure.

13. The computer-readable storage memory as recited in claim 10 , wherein the program instructions are further computer-executable to implement:

storing the one or more core triangles and the plurality of refinement triangles in an order of refinement; and

storing a value indicative of a refinement level of the triangulation of the stroked path with the one or more core triangles and the plurality of refinement triangles.

14. The computer-readable storage memory as recited in claim 13 , wherein the program instructions are further computer-executable to implement:

determining a new refinement level for displaying the stroked path;

retrieving the one or more core triangles;

retrieving a portion of the plurality of refinement triangles based on the new refinement level; and

rendering the stroked path to the imaging device based on the one or more core triangles and the portion of the plurality of refinement triangles.

15. The computer-readable storage memory as recited in claim 10 , wherein the program instructions are further computer-executable to implement rendering the stroked path to an imaging device based on the one or more core triangles and the plurality of refinement triangles in the triangulation of the stroked path.

16. The computer-readable storage memory as recited in claim 10 , wherein the plurality of refinement triangles comprise a first portion of the plurality of refinement triangles generated at a first refinement level and a second portion of the plurality of refinement triangles generated at a next refinement level, wherein each refinement triangle in the second portion shares an edge with an exterior edge of one refinement triangle in the first portion, and wherein the triangulation of the stroked path is watertight.

17. The computer-readable storage memory as recited in claim 9 , wherein the offset points lie along lines perpendicular to tangent vectors at the endpoints of the stroked path.

18. A system, comprising:

at least one processor configured to execute stored program instructions that are executable to:

identify endpoints of a stroked path;

determine offset points that are offset from the endpoints of the stroked path;

generate one or more core triangles using the determined offset points as vertices of the core triangles in a triangulation of the stroked path to approximate a stroke region of the stroked path, the one or more core triangles in the triangulation being generated without computing an intermediate stroke envelope; and

generate a plurality of refinement triangles in the triangulation of the stroked path until a refinement threshold for a boundary of the stroked region is met.

19. The system as recited in claim 18 , wherein the program instructions are further executable by the at least one processor to:

store the one or more core triangles and the plurality of refinement triangles in an order of refinement.

20. The system as recited in claim 18 , wherein to generate the plurality of refinement triangles in the triangulation of the stroked path, the program instructions are further executable by the at least one processor to:

generate a first portion of the plurality of refinement triangles that comprises at least one edge approximating an offset curve of the stroked path;

determine that the at least one edge approximating the offset curve of the stroked path fails to meet the refinement threshold; and

generate a second portion of the plurality of refinement triangles in response to determining that the at least one edge approximating the offset curve of the stroked path fails to meet the refinement threshold.

21. The system as recited in claim 20 , wherein the first portion of the plurality of refinement triangles is stored before the second portion of the plurality of refinement triangles in a data structure.

22. The system as recited in claim 18 , wherein the program instructions are further executable by the at least one processor to:

store the one or more core triangles and the plurality of refinement triangles in an order of refinement; and

store a value indicative of a refinement level of the triangulation of the stroked path with the one or more core triangles and the plurality of refinement triangles.

23. The system as recited in claim 22 , wherein the program instructions are further executable by the at least one processor to:

determine a new refinement level for the stroked path;

retrieve the one or more core triangles; and

retrieve a portion of the plurality of refinement triangles based on the new refinement level.

24. The system as recited in claim 18 , wherein the plurality of refinement triangles comprise a first portion of the plurality of refinement triangles generated at a first refinement level and a second portion of the plurality of refinement triangles generated at a next refinement level, wherein each refinement triangle in the second portion shares an edge with an exterior edge of one refinement triangle in the first portion, and wherein the triangulation of the stroked path is watertight.

25. The system as recited in claim 18 , wherein the offset points lie along lines perpendicular to tangent vectors at the endpoints of the stroked path.

Assignments (2)
CHANGE OF NAME Recorded Apr 8, 2019
From: ADOBE SYSTEMS INCORPORATED
To: ADOBE INC.
Reel/Frame 048867/0882 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 29, 2008
From: BROWN, DONALD P.
To: ADOBE SYSTEMS INCORPORATED
Reel/Frame 021461/0906 →
Continuity (2)
Continuation In Part 12105497 · Apr 18, 2008
Related Publication 20130120391A1 · May 16, 2013