IP Library Granted Patent US 9,189,695
Granted Patent B2
US 9,189,695 · App. 14/293,095 · Granted Nov 17, 2015

Vector texturing for free-form drawing

Inventors: Viet Tran (Irvine, CA); Xuyen Tran (Ho Chi Mlnh, VN)
Assignee: Prime Circa, Inc.
G06K9/18G06T11/203
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 9,189,695
App. No.
14/293,095
Granted
Nov 17, 2015
Kind
B2
Abstract

Systems and methods for applying a vector texture to free-form drawing, writing, etc., and more particularly, for rendering a vector texture to touch-based, free-form drawing, writing, etc.

Claims (41)

1. A system for applying vector-based texturing to free-form digital input, the system comprising:

an input interface for receiving free-form digital input relating to a stroke across a touch-based display screen of a user's finger or a stylus device;

a module for performing vector analysis on the free-form digital input, the module for performing vector analysis comprising a stroke width module for calculating a width for the stroke, wherein the width for the stroke at various touchpoints in a sequence of touchpoints taken along the stroke at predetermined time intervals is determined for each touchpoint according to the following expressions:

currentLength=self.strokeWidth/distanceBetweenPoints(&points[ i ],&points[ i −1]);

and

strokeWidths[ i ]=self.strokeWidth*trigFunction(currentLength);

wherein points[ ] is an array storing the sequence of touchpoints, i is the touchpoint for which stroke width is being determined, i−1 is the predecessor touchpoint, distanceBetweenPoints is a function for determining the distance between two points, received as input parameters, self.strokeWidth is a normalized thickness corresponding to a predetermined thickness, trigFunction is a trigonometric function, and strokeWidth[i] is the calculated stroke width for the touchpoint i; and

an output interface for rendering on the touch-based display screen a vector-based graphical image representative of the received input based on the vector analysis.

2. A method for applying vector-based texturing to free-form digital input, the method comprising:

receiving free-form digital input relating to a stroke across a touch-based display screen of a user's finger or a stylus device;

performing vector analysis on the free-form digital input, comprising constructing a stroke contour by determining, for each touchpoint in a sequence of touchpoints along the stroke, a corresponding left point L i and a corresponding right point R i and constructing a stroke contour connecting the left and right points of the plurality of touchpoints, wherein the left and right points for each touchpoint in the sequence of touchpoints are determined according to the following expressions:

{right arrow over (D)}=points[ i ]−points[ i −1];

{right arrow over (N)}=(−{right arrow over (D)} y,{right arrow over (D)}x );

L i =points[ i]+{right arrow over (N)}*hw ; and

R i =points[ i]−{right arrow over (N)}*hw

wherein points[ ] is an array storing the sequence of touchpoints, i is the touchpoint for which the left L i and right R i points are being determined, i−1 is the predecessor touchpoint, {right arrow over (D)} is a direction vector corresponding to touchpoint i, {right arrow over (N)} is a normal vector corresponding to touchpoint i, and hw is a percentage of a stroke width determined for the stroke at touchpoint i; and

rendering on the touch-based display screen a vector-based graphical image representative of the received input based on the vector analysis.

3. The method of claim 2 , wherein the stroke width determined for the stroke at any given touchpoint i is based at least in part on the speed of the stroke at that touchpoint.

4. The system of claim 1 , wherein the stroke width is based at least in part on a speed at which the stroke was made across the touch-based display screen.

5. A system for applying vector-based texturing to free-form digital input, the system comprising:

an input interface for receiving free-form digital input relating to a stroke across a touch-based display screen of a user's finger or a stylus device;

a module for performing vector analysis on the free-form digital input, the module for performing vector analysis comprising a stroke width module for calculating a width for the stroke, wherein the width for the stroke at various touchpoints in a sequence of touchpoints taken along the stroke at predetermined time intervals is determined for each touchpoint according to the following expressions:

currentLength=self.strokeWidth/distanceBetweenPoints(&points[ i ],&points[ i −1]);

and

strokeWidths[ i ]=self.strokeWidth*trigFunction(pow f (currentLength,wetness);

wherein points[ ] is an array storing the sequence of touchpoints, i is the touchpoint for which stroke width is being determined, i−1 is the predecessor touchpoint, distanceBetweenPoints is a function for determining the distance between two points, received as input parameters, self.strokeWidth is a normalized thickness corresponding to a predetermined thickness, trigFunction is a trigonometric function, wetness is a predetermined wetness value, and strokeWidth[i] is the calculated stroke width for the touchpoint i; and

an output interface for rendering on the touch-based display screen a vector-based graphical image representative of the received input based on the vector analysis.

6. The system of claim 1 , wherein trigFunction is the arctan function.

7. The system of claim 1 , wherein the module for performing vector analysis further comprises a stroke wetness module for calculating how wet a rendered stroke would appear.

8. A system for applying vector-based texturing to free-form digital input, the system comprising:

an input interface for receiving free-form digital input relating to a stroke across a touch-based display screen of a user's finger or a stylus device;

a module for performing vector analysis on the free-form digital input, the module for performing vector analysis comprising a module for constructing a stroke contour that determines, for each touchpoint in a sequence of touchpoints along the stroke, a corresponding left point L i and a corresponding right point R i and constructs a stroke contour connecting the left and right points of the plurality of touchpoints, wherein the left and right points for each touchpoint in the sequence of touchpoints are determined according to the following expressions:

{right arrow over (D)}=points[ i ]−points[ i −1];

{right arrow over (N)}=(−{right arrow over (D)} y,{right arrow over (D)}x );

L i =points[ i]+{right arrow over (N)}*hw ; and

R i =points[ i]−{right arrow over (N)}*hw

wherein points[ ] is an array storing the sequence of touchpoints, i is the touchpoint for which the left L i and right R i points are being determined, i−1 is the predecessor touchpoint, {right arrow over (D)} is a direction vector corresponding to touchpoint i, {right arrow over (N)} is a normal vector corresponding to touchpoint i, and hw is a percentage of a stroke width determined for the stroke at touchpoint i; and

an output interface for rendering on the touch-based display screen a vector-based graphical image representative of the received input based on the vector analysis.

9. The system of claim 8 , wherein the stroke width determined for the stroke at any given touchpoint i is based at least in part on the speed of the stroke at that touchpoint.

10. The system of claim 8 , wherein hw is half of the stroke width determined for touchpoint i.

11. The system of claim 8 , wherein the module for constructing a stroke contour constructs a stroke contour connecting all of the left and right points of the plurality of touchpoints using one or more Bézier curves.

Continuity (2)
Provisional Application 61830836 · Jun 4, 2013
Related Publication 20140355884A1 · Dec 4, 2014