US20210312590A1 - Graphics processing using matrices of transformations - Google Patents
Graphics processing using matrices of transformations Download PDFInfo
- Publication number
- US20210312590A1 US20210312590A1 US16/838,864 US202016838864A US2021312590A1 US 20210312590 A1 US20210312590 A1 US 20210312590A1 US 202016838864 A US202016838864 A US 202016838864A US 2021312590 A1 US2021312590 A1 US 2021312590A1
- Authority
- US
- United States
- Prior art keywords
- repetition
- base art
- affine transformation
- transformation matrix
- pattern
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000009466 transformation Effects 0.000 title claims abstract description 250
- 238000012545 processing Methods 0.000 title claims abstract description 42
- 238000000844 transformation Methods 0.000 title abstract description 18
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 claims abstract description 156
- 239000011159 matrix material Substances 0.000 claims abstract description 150
- 238000000034 method Methods 0.000 claims description 52
- 239000013598 vector Substances 0.000 claims description 16
- 238000013519 translation Methods 0.000 claims description 11
- 238000009877 rendering Methods 0.000 claims description 9
- 238000010008 shearing Methods 0.000 claims description 4
- 230000004044 response Effects 0.000 claims 1
- 230000010076 replication Effects 0.000 abstract description 19
- 230000008569 process Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 16
- 230000004048 modification Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000008846 dynamic interplay Effects 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 238000004513 sizing Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T3/4038—Image mosaicing, e.g. composing plane images from plane sub-images
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G06T3/0006—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/02—Affine transformations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T3/4084—Scaling of whole images or parts thereof, e.g. expanding or contracting in the transform domain, e.g. fast Fourier transform [FFT] domain scaling
Definitions
- graphics processing systems provide the user with the ability to manipulate multiple instances of computer graphic to create a complex final output.
- the graphics processing software may store copies of the original computer graphic for each instance.
- each copy of the original computer graphic must be accessed and modified. This approach of storing and operating on separate copies of the original graphic has been successful when the number of replications and modifications is small.
- Embodiments of the present invention relate to, among other things, a graphics processing system that employs affine transformation matrices of transformations for computer graphics replication and modification.
- the graphics processing system takes a transformation and parses out operations that can be easily translated into an affine transformation matrix.
- the affine transformation matrix represents operations (from the transformation) to perform on the base art to create a repetition.
- the graphics processing system When constructing the affine transformation matrix, the graphics processing system generates values for coefficients in the affine transformation matrix.
- the graphics processing system multiplies the affine transformation matrix with the base art to create a repetition of the base art in the final graphic.
- a transformation requires more than one affine transformation matrix.
- the graphics processing system can employ several affine transformation matrices for a transformation by multiplying them one-by-one with the base art to create repetitions, accounting for the order of operations to create the transformation. Moreover, in some configurations, the repetitions are nested, with a prior repetition being used as base art to create a second repetition.
- FIG. 1 is a block diagram illustrating an exemplary system in accordance with some implementations of the present disclosure
- FIG. 2 is a flow diagram showing a method for generating a repetition in accordance with some implementations of the present disclosure
- FIG. 3 is a flow diagram showing a method for generating a grid pattern repetition in accordance with some implementations of the present disclosure
- FIG. 4 is a flow diagram showing a method for generating a radial pattern repetition in accordance with some implementations of the present disclosure
- FIG. 5 is a flow diagram showing a method for generating a concentric pattern repetition in accordance with some implementations of the present disclosure
- FIG. 6 is a flow diagram showing a method for generating a symmetry pattern repetition in accordance with some implementations of the present disclosure
- FIG. 7 is a flow diagram showing a method for generating a path pattern repetition in accordance with some implementations of the present disclosure
- FIG. 8 is a computer graphic providing an example of a base art used to generate the repetitions shown in FIGS. 9-13 ;
- FIG. 9 is a computer graphic providing an example of a grid pattern repetition generated in FIG. 3 ;
- FIG. 10 is a computer graphic providing an example of a radial pattern repetition generated in FIG. 4 ;
- FIG. 11 is a computer graphic providing an example of a concentric pattern repetition generated in FIG. 5 ;
- FIG. 12 is a computer graphic providing an example of a symmetry pattern repetition generated in FIG. 6 ;
- FIG. 13 is a computer graphic providing an example of a path pattern repetition generated in FIG. 7 ;
- FIG. 14 is a computer graphic providing an example of nested repetitions showing four layers of nested repetitions
- FIG. 15 is a computer graphic providing an example of nested repetitions showing six layers of repetitions.
- FIG. 16 is a block diagram of an exemplary computing environment suitable for use in implementations of the present disclosure.
- Computer graphics replication and manipulation is often accomplished by conventional graphics processing systems creating copies of the original computer graphic and modifying each one. Each copy is stored as a raster image or vector graphics, both of which occupy significant memory space.
- the goal of such graphics processing systems is to facilitate complex graphics replications and manipulations that are scalable, nested, and performed in a short period of time (e.g., a few milliseconds).
- a short period of time e.g., a few milliseconds.
- Embodiments of the present invention are directed to a graphics processing system that addresses these challenges by providing a solution that efficiently expresses instances of a computer graphic (and any transformations to them) in a memory-compact data structure such as a matrix.
- the graphics processing system builds affine transformation matrices to be applied to base art. While conventional search systems typically generate individual copies of the base art for each replication, the graphics processing system described herein forms matrices of desired graphics replications that are all applied to a single instance of the base art.
- a transformation to a base art is processed to generate one or more affine transformation matrices for repetitions from parsed operations. For instance, an affine transformation matrix can be generated for each transformation resulting in a repetition. For each transformation, the affine transformation matrix encapsulates the operations performed on a base art to create the repetition. Each affine transformation matrix is applied to the base art to create a repetition.
- the graphics processing system employs the affine transformation matrix to generate repetitions in a variety of patterns. For a given transformation, the graphics processing system identifies operations and operation configuration data, which are values relevant to each operation. Based on the type of operation, the graphics processing system generates coefficients that reside in particular positions within the affine transformation matrix. The affine transformation matrix is multiplied with the coordinates of base art to generate a repetition.
- each repetition may require more than one affine transformation matrix to achieve the desired repetition.
- the order of application of multiple affine transformation matrices to the base art is also modified depending on the repetition pattern selected.
- the multiple affine transformation matrices are multiplied to create one affine transformation matrix.
- the order of multiplying the matrices affects the order in which the corresponding operations are applied to a base art.
- the graphics processing system employs the affine transformation matrices one-by-one to create multiple repetitions by multiplying the affine transformation matrix with the coordinates of the base art.
- affine transformation matrices allow the graphics processing system to express creating multiple instances of a computer graphic without storing a copy of the base art for each and every repetition.
- the affine transformation matrices express multiple operations to perform on a given instance of a base art.
- the graphics processing system generates affine transformation matrices that can be applied to previous repetitions, thereby allowing a high level of nested repetitions to be represented by a series of affine transformation matrices instead of exponentially increasing storage of base art copies in memory.
- each matrix can be stored using very few bits, which is highly memory efficient, and allows for easy implementation during final graphic rendering to further improve efficiency. Additionally, the graphics processing system can consolidate the multiplication of multiple affine transformation matrices with the coordinates of the base art, which helps modern processors and compilers to optimize for performance. Likewise, the use of affine transformation matrices provides a number of other benefits: reducing the file size of a computer graphic storing repetitions of the base art, cutting down on the time needed to generate a repetition, and decreasing the time spent parsing operations to perform on the base art to create a repetition.
- FIG. 1 is a block diagram illustrating an exemplary system 100 for creating repetitions using operations and matrices derived from transformations in accordance with implementations of the present disclosure. It should be understood that this and other arrangements described herein are set forth only as examples. Other arrangements and elements (e.g., machines, interfaces, functions, orders, and groupings of functions, etc.) can be used in addition to or instead of those shown, and some elements may be omitted altogether. Further, many of the elements described herein are functional entities that may be implemented as discrete or distributed components or in conjunction with other components, and in any suitable combination and location. Various functions described herein as being performed by one or more entities may be carried out by hardware, firmware, and/or software. For instance, various functions may be carried out by a processor executing instructions stored in memory.
- the system 100 is an example of a suitable architecture for implementing certain aspects of the present disclosure.
- the system 100 includes repetition device 102 that includes an operation module 104 , a matrix module 106 , and an application module 108 .
- the repetition device 102 shown in FIG. 1 can comprise a computer device, such as the computing device 1600 of FIG. 16 , discussed below.
- the replication device 102 may be provided, for instance, by a user device, a server device, or any combination thereof. While the repetition device 102 is shown as a single device in FIG. 1 , it should be understood that the repetition device 102 may comprise multiple devices cooperating in a distributed environment.
- the repetition device 102 could be provided by multiple server devices collectively providing the functionality of the repetition device 102 as described herein.
- other components not shown may also be included within the network environment.
- the devices can communicate via a network (not shown), which may include, without limitation, one or more local area networks (LANs) and/or wide area networks (WANs).
- LANs local area networks
- WANs wide area networks
- Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet. It should be understood that any number of devices and networks may be employed within the system 100 within the scope of the present invention.
- the repetition device 102 generally operates to receive a transformation 110 and a base art 116 and generate a repetition 114 by applying the transformation 110 to the base art 116 .
- Base art 116 is the original computer graphic that is transformed to display as a repetition on the screen.
- base art 116 may be stored as a raster image or vector graphics.
- a raster image for instance, includes images stored as colored pixels capable of being displayed.
- Vector graphics for instance, includes artwork expressed as vectors and mathematical calculations that the GPU uses to render an image.
- a repetition 114 of base art appears as a modified replication of the base art 116 on a display screen.
- repetitions 114 are generated by applying an affine transformation matrix to the base art 116 .
- nested repetitions where a prior repetition is used as base art to generate successive levels of repetition, are also possible. For instance, if a symmetry pattern repetition is applied to the base art to create a first level of repetition, then a radial pattern repetition of the symmetry pattern repetition would be a second level of repetition.
- the repetition device 102 operates to construct one or more affine transformation matrices from the transformation 110 and employ the affine transformation matrices when creating the repetition 114 . As part of this process, the repetition device 102 generates operations from the transformation 110 and employs those operations in building the affine transformation matrix(ices). As shown in FIG. 1 , the repetition device 102 includes an operation module 104 , matrix module 106 , and application module 108 . In some configurations, the transformation 110 refers to one or more operations that modify base art to create a repetition of base art. In further embodiments, transformations of the base art produce repetitions in various patterns including grid, radial, concentric, symmetry and path patterns.
- the operation module 104 operates to generate an operation or set of operations for a transformation 110 .
- An operation comprises one or more modifications to the base art 116 to apply the transformation 110 to the base art 116 in order to generate the repetition 114 .
- An operation may refer to a modification to the base art 116 .
- operations may include shearing, scaling, translating, reflecting, and rotating the base art. For example, if the transformation was to create a radial pattern repetition of base art, the operations would be to translate and rotate the replication of the base art into the desired position and at the desired angle in a circular pattern.
- Operations may be associated with “operation configuration data,” which specify values necessary to implement the operations to achieve the desired transformation to the base art. For instance, operation configuration data for a translation operation would include the changes in the x- and y- directions to generate a repetition of the base art in the desired location in the final graphic.
- the transformation 110 is broken down into an operation or a set of operations such as shearing, scaling, translating, reflecting, and rotating the base art 116 .
- the process of parsing the transformation 110 into one or more operations translates the necessary modifications to create the repetition 114 into coefficients that can be expressed using an affine transformation matrix, which is a highly efficient mechanism to capture multiple operations to perform on a replication of the base art 116 .
- the operation module 104 parses the transformation 110 into one or more operations and identifies corresponding operation configuration data.
- the format of operation configuration data varies by operation type. For example, operations involving rotation require the degrees of rotation (which may be expressed in various forms) and the center that the base art 116 is rotated around.
- the operation configuration data for operations involving scaling of the base art 116 represents the resizing of the replication relative to the base art 116 and may be expressed as percentages or the decimal form of percentages.
- Operation configuration data for translation of the base art 116 is often expressed as distances in a coordinate system. For each transformation, the operation module 104 associates the operation with each respective operation configuration data.
- the operation module 104 generates an operation for the transformation 110 by determining changes to the base art 116 to apply the transformation 110 .
- Each transformation 110 is associated with an operation or set of operations, as described in detail below with reference to FIGS. 2-7 .
- a lookup table storing the set of associated operations for a transformation 110 is retrieved from the data store 112 .
- the corresponding entry in the lookup table is accessed and an associated operation or set of operations is parsed from transformation 110 . For instance, to parse corresponding operations for a grid pattern repetition, the lookup table is retrieved, the corresponding entry accessed, and the necessary translation and scaling operations are parsed from the grid pattern repetition transformation.
- a user interface is provided that prompts a user to provide input that identifies the type of repetition to create (e.g., grid, radial, concentric, symmetry, or path pattern) and the operation configuration data for the related operations. For example, for a grid pattern repetition, a user may input the number of rows and columns in the grid along with the spacing between the grid cells.
- the change in coordinates of the transformed base art determines the operations and operation configuration data.
- the operation module 104 calculates the change in coordinates from a user resizing and rotating the base art 116 and expresses the amount of resizing of the repetition 114 as a percentage.
- the operations are input data for the matrix module 106 , such that the operations are used to generate an affine transformation matrix(ices).
- the matrix module 106 operates to construct an affine transformation matrix(ices) from the operations derived from the transformation 110 . Some approaches for the matrix module 106 to generate one or more affine transformation matrices are described in detail below with reference to FIGS. 2-7 .
- the affine transformation matrix built by the matrix module 106 encapsulates multiple operations to perform on a base art 116 , including the operation configuration data.
- an “affine transformation matrix” refers to a matrix that describes the transformations to apply to base art to create a repetition.
- an affine transformation matrix can be a 3 ⁇ 3 matrix with 6 coefficients “a,” “b,” “c,” “d,” “e,” and “f,” that determine the scaling, translation, reflection, shear, and rotation to apply to the base art to produce a repetition.
- the “a” and “d” coefficients represent scaling along the x- and y-directions, respectively.
- the “a,” “b,” “c,” and “d” coefficients represent rotation.
- the “e” and “f” coefficients represent translation along the x- and y- directions, respectively. Using such coefficients, the affine transformation matrix may be represented with the following notation:
- the affine transformation matrix provides a mechanism for efficient capture of operations on the base art 116 to apply the transformation 110 and create the repetition 114 by: avoiding storing multiple copies of memory-intensive base art, avoiding storage of multiple operations as separate data structures, and reducing the computation load on graphics processing units.
- the matrix module 106 builds the affine transformation matrix(ices) by identifying operation types and the operation configuration data for a particular transformation 110 .
- the matrix module 106 determines which coefficient in the affine transformation matrix represents each operation and incorporates the operation configuration data into the coefficient. This process is performed for each operation contained in the transformation 110 .
- a separate affine transformation matrix is generated for each operation or set of operations.
- the matrix module 106 determines the order in which operations and the operation configuration data are incorporated into coefficients based on the transformation 110 .
- multiple affine transformation matrices may be multiplied, following the order that operations are applied, to create one affine transformation matrix representing multiple operations.
- the affine transformation matrix(ices) is(are) stored in the data store 112 , for use in applying the transformation 110 to the base art 116 .
- the affine transformation matrix(ices) is(are) stored in the CPU memory or GPU memory, shown as 1608 and 1612 in FIG. 16 , respectively.
- the CPU memory or GPU memory shown as 1608 and 1612 in FIG. 16 , respectively.
- other types of data structures may be employed.
- the application module 108 operates to employ the affine transformation matrix built by the matrix module 106 to apply the transformation 110 to the base art 116 in order to provide a repetition 114 .
- the application module 108 accesses the base art 116 and retrieves the affine transformation matrix stored in the data store 112 to apply the transformation 110 to the base art 116 .
- the base art 116 may also be stored in data store 112 for retrieval by the application module 108 .
- the application module 108 applies the affine transformation matrix to the base art 116 by multiplying coordinates of the base art 116 with coefficients of the affine transformation matrix. For each set of the coordinates of the base art's points identified by the application module 108 , the application module 108 multiplies the affine transformation matrix(ices) with the coordinates to generate a new set of coordinates of the repetition 114 .
- the order in which multiple affine transformation matrices are multiplied with the coordinates is determined by the order of operations applied to the base art 116 . In some configurations, the coordinates of the corners in the base art 116 represented as a raster image are multiplied by the matrices.
- the application module 108 sends the base art 116 , represented as a vector graphics, to the GPU to deconstruct the base art 116 into triangles and process them one-by-one.
- the application module 108 retrieves the points in the base art 116 , which are the beginning and endpoints to vectors in the base art 116 . For instance, if the base art 116 is stored as vector graphics that are to be scaled by 150 % in a concentric pattern repetition, the application module 108 would determine the new coordinates of each point in each replication 114 by multiplying the coordinates for each point from the base art 116 with the respective affine transformation matrix.
- the GPU only processes the base art 116 one time and relies on affine transformation matrices to generate all repetitions. For example, a first affine transformation matrix would be multiplied with the base art 116 (that was previously processed by the GPU) to generate the coordinates for a first repetition of the base art 116 scaled by 150%. Then, a second affine transformation matrix would be multiplied with the coordinates of the base art 116 to generate the location coordinates of a second repetition 150% larger than the first repetition. As described below, once the coordinates have been determined, the GPU may then draw the graphic, or output, without the need to deconstruct the first and second repetitions into triangles for final graphic rendering.
- the multiplication with the coordinates of the base art 116 occurs separately for each affine transformation matrix. In some configurations, there will be at least N multiplications occurring, where N is the number of repetitions. Some processors, however, may be able to optimize multiplication of multiple matrices into fewer operations. In some configurations, the application module 108 retrieves the affine transformation matrix(ices) from the CPU memory and uploads it to the GPU memory for multiplication described above and for rendering of the final graphic described below.
- the final graphic is rendered.
- the GPU With the GPU having processed the base art 116 , which was formatted as a vector graphics, as mentioned above, the GPU merely draws or renders the vectors represented by the new set of coordinates to produce the final graphic.
- the GPU multiplies the coordinates of the corners of the base art 116 with the matrices to determine the bounds of the image and resamples the pixels within accordingly.
- a repetition 114 is generated that represents the transformation 110 performed on the base art 116 based on the application of the affine transformation matrix on the base art 116 .
- the generated repetition 114 may be then output as a raster image that can be used to create another repetition.
- New affine transformation matrices can be generated and applied to the repetition 114 .
- repetition 114 as the base art 116 to create another layer of repetitions, the system can create a nested repetition using affine transformation matrix(ices).
- a flow diagram is provided that illustrates a method 200 for generating a repetition.
- the method 200 may be performed, for instance, by repetition device 102 of FIG. 1 .
- the method 200 may be performed for each transformation of a base art.
- Each block of the method 200 and any other methods described herein comprises a computing process performed using any combination of hardware, firmware, and/or software.
- various functions can be carried out by a processor executing instructions stored in memory.
- the methods can also be embodied as computer-usable instructions stored on computer storage media.
- the methods can be provided by a standalone application, a service or hosted service (standalone or in combination with another hosted service), or a plug-in to another product, to name a few.
- a selection of a base art is received. This allows the base art to be identified for the creation of repetitions.
- the base art is a vector graphics or raster image.
- other formats of base art may be selected within the scope of the technology described herein.
- the base art can be received in a variety of ways.
- a graphical user interface is provided that allows a user to upload a computer graphic as base art
- the graphical user interface may also present a number of pre-stored computer graphics for the user to select from.
- FIG. 8 provides an example of a base art. This exemplary base art is used to create several types of repetitions as described in detail below with reference to FIGS. 9-13 .
- a transformation to apply to the base art is received, as shown at block 204 .
- the transformation may be received, for instance, by prompting the user to select the types of transformations to perform on the base art. For example, the user may be presented and asked to select a type of transformation, including transformations to create grid, radial, concentric, symmetry, and path pattern repetitions.
- the user is able to interact with a graphical user interface and dynamically manipulate the base art to achieve desired transformations. For example, the user can resize the base art to a size on the screen that should then be replicated in patterns such as the grid pattern repetition.
- the transformation is parsed into one or more operations.
- the operations include shearing, scaling, translating, reflecting, and rotating a base art. Transformations are associated with an operation or set of operations, as described in detail below with reference to FIGS. 2-7 .
- a lookup table stores the set of associated operations for each transformation. Using the lookup table and the transformation to parse, the corresponding entry in the table is accessed and associated operation (or set of operations) is retrieved. Based on the entry from the lookup table, the transformation is parsed into the retrieved operation or set of operations.
- the desired operations may be determined by the user's selections for the transformation through a graphical user interface. For example, a user may select an option to perform a radial pattern repetition containing seven repetitions.
- the operations corresponding to a transformation may be embedded or hardcoded into the software executed to generate a repetition of the base art.
- Operation configuration data for each operation is also determined.
- the different types of pattern repetitions require operation configuration data that is unique to the pattern described in detail below with reference to FIGS. 3-7 .
- the user's dynamic interaction with the graphical user interface determines the types of operations and corresponding operation configuration data. For example, a user may select a radial pattern repetition with seven repetitions spanning 60 degrees around a center with coordinates (1, 6). Similarly, if a user selects the option to rotate the base art and positions the base art into the desired rotated position, the degree of rotation for the repetition is determined from the original position of the base art.
- the values input by the user serve to determine the types of operations and operation configuration data that derive the coefficients that populate the affine transformation matrix.
- the coefficients for the affine transformation matrix are generated, as shown in block 208 .
- the transformations and parsed operations can be distilled and expressed in the coefficients of the affine transformation matrix.
- the coefficients of an affine transformation matrix with 6 coefficients “a,” “b,” “c,” “d,” “e,” and “f” can be modified to determine the scaling, translation, reflection, and rotation to apply to the base art.
- the coefficient can be calculated accordingly.
- the operation type determines which coefficient is modified, while the operation configuration data determines the value of the coefficient.
- some operation configuration data may need to be converted into other forms, such as expressing the amount of rotation as degrees versus radians.
- the type of operations determines which coefficient is modified. Operations involving scaling in the x- and y- directions affect the “a” and “d” coefficients, respectively. Likewise, operations for rotating the base art affect the “a,” “b,” “c,” and “d” coefficients. Operations pertaining to translation in the x- and y- directions modify the “e” and “f” coefficients, respectively.
- the affine transformation matrix using the following notation, shows the placement of each coefficient:
- the size and number of coefficients in the affine transformation can be modified based on the number of dimensions in the coordinate system of the base art.
- the operation configuration data for each operation is then integrated into each coefficient based on the type of operation.
- the description of how operation configuration data is integrated into each coefficient for a variety of pattern repetitions is described in detail below with reference to FIGS. 3-7 .
- the affine transformation matrix(ices) may be calculated by the CPU, shown as 1606 in FIG. 16 , and stored within the CPU memory, shown as 1608 in FIG. 16 .
- the affine transformation matrix is then applied to the base art, as shown in block 210 .
- This step involves determining the points of the base art and obtaining the coordinates for each point. Once retrieved, the coordinates are multiplied with the affine transformation matrix.
- the base art is stored as vector graphics and the points in the base art are the beginning and end of each vector. For raster images, the coordinates are the corners of the image.
- the application of the affine transformation matrix(ices) may involve having the GPU process the base art prior to multiplication. In some configurations, rows and columns are added to both the base art's coordinates and the affine transformation matrix(ices) to homogenize coordinate systems and facilitate multiplication.
- each set of coordinates may be multiplied by each of the affine transformation matrix.
- the order of multiplication of the matrices may also be dictated by the transformation.
- multiple affine transformation matrices can be consolidated into one matrix, with the order of matrix multiplication reflecting that of the operations. For example, reflecting the base art across an axis and then rotating the base art may not produce the same transformation as rotating the base art and then reflecting it across the same axis.
- application of affine transformation matrices to earlier repetitions may be performed first in order to facilitate the creation of the follow-on repetitions.
- the application of the affine transformation matrix may take place within the GPU, shown as 1610 in FIG. 16 , and the result stored in the GPU memory, shown as 1612 in FIG. 16 .
- the affine transformation matrix(ices) are first uploaded from the CPU memory 1608 into the GPU memory 1612 and then the GPU 1610 draws the final graphic of repetitions, as described in detail with respect to the application module 108 in FIG. 1 .
- FIG. 3 is a flow diagram showing a method 300 for generating a grid pattern repetition.
- grid pattern repetition refers to a repetition of base art in every cell in a grid with a designated number of rows and columns. For instance, in a grid having 2 rows and 4 columns, the grid pattern repetition would require creating 8 repetitions to ensure there is a repetition in every cell of the grid.
- a base art selection is received in block 302 .
- This step is similar to that of block 202 in FIG. 2 .
- the transformation to apply to the base art is received, as shown in block 304 .
- the user may select through a graphical user interface to create a grid pattern repetition.
- the user may also include operation configuration information regarding the number of rows and columns in the grid pattern repetition along with the spacing between grid cells.
- the operation(s) is(are) then parsed from the transformation, as shown in block 306 .
- this process involves determining the type of operation and the operation configuration data.
- the operations performed for a grid pattern repetition are translating, and in some configurations, scaling, repetitions into a position in the grid with uniform grid spacing.
- Operation configuration data such as the spacing between cells, the number of rows and columns, and the number of cells in the grid are also parsed.
- the operation configuration data may be input by the user through a user interface. For example, if the user selected the option to create a grid with 2 rows and 3 columns, the number of cells to create repetitions for would be 6. By multiplying the number of columns and rows in the grid pattern, the number of cells (and thus) repetitions to create is determined.
- a decision point regarding whether all cells in the grid pattern have been processed is evaluated. If all of the cells in the grid pattern have not been processed, block 310 is performed next. If all of the cells have been processed, then block 312 is performed.
- the coefficients for an affine transformation matrix are generated, as shown in block 310 .
- the coefficients are determined based on the parsed operations and operation configuration data from block 306 .
- a grid pattern repetition using a 3 ⁇ 3 affine transformation matrix will set the coefficients accordingly:
- the subscripts i and j represent the i th row and the j th column in the grid pattern.
- the affine transformation matrix created for the cell in the first row and second column would have the following values: i having a value of 1 and j having a value of 2.
- S row and S col respectively represent the row and column spacing among grid cells received in block 302 .
- the value B width and B height represent the width and height of the base art.
- the coefficient values are populated for each grid cell in the grid pattern using the operation configuration data.
- each time block 310 is performed the values of i and j are incremented until all of the cells have been iterated through.
- each grid cell may have more than one affine transformation applied to create that repetition. It should be understood that any size of matrix and number of coefficients may be employed within the system 100 within the scope of the present invention.
- the process of generating coefficients for an affine transformation matrix(ices) for each cell in the grid pattern repetition is repeated until all of the grid cells have been processed.
- the affine transformation matrix(ices) is (are) applied to the base art, as shown in block 312 . This step is similarly performed to block 210 in FIG. 2 . If there is more than one affine transformation matrix, each matrix is applied one-by-one to the base art, following the order of operations in the transformation.
- FIG. 9 provides an example of a grid pattern repetition using the base art in FIG. 8 .
- the base art from FIG. 8 has been replicated into a grid pattern repetition with four rows and six columns.
- the spacing between the grid cells are uniform as are the sizes of each repetition.
- FIG. 4 is a flow diagram showing a method 400 for generating a radial pattern repetition.
- radial pattern repetition refers to repetitions of base art in a circular pattern around a designated center for a specified number of degrees.
- each repetition of the radial pattern repetition may be scaled or sized independent of the others.
- one repetition may be scaled by 150% in the radial pattern repetition, while the second and third repetitions are scaled by 70% and 200%, respectively.
- each repetition is rotated around a center for a designated number of degrees.
- a base art selection is received, as shown in block 402 .
- This step is similar to that of block 202 in FIG. 2 .
- the transformation to apply to the base art is received, as shown in block 404 .
- the user may select through a graphical user interface to create a radial pattern repetition.
- the user may also include information regarding the radius, the center of the radial pattern repetition, and the center point of the base art Likewise, the user may provide the start angle of repetitions around the center, the total angle between the first and last repetitions, and the total number of repetitions.
- the operation(s) is(are) then parsed from the transformation, as shown in block 406 .
- this process involves determining the type of operation and the operation configuration data.
- the operations involve rotating and translating each repetition.
- Operation configuration data includes information such as the radius, centers of the repetition and the base art along with the angle the repetition continues for and the total number repetitions.
- the operation configuration data may be input by the user through a user interface.
- an affine transformation matrix is created for each repetition in the radial pattern. As shown in block 408 , a decision point regarding whether all repetitions in the radial pattern have been processed is evaluated. If all of the repetitions in the radial pattern have not been processed, block 410 is performed. If all of the repetitions have been processed, then block 412 is performed.
- the coefficients for an affine transformation matrix are generated, as shown in block 410 .
- the coefficients are determined based on the parsed operations and the operation configuration from block 406 .
- a radial pattern repetition using a 3 ⁇ 3 matrix will set the coefficients accordingly:
- the subscript i represents the i th repetition in the radial pattern, with i having values between a range of 0 and N ⁇ 1.
- the affine transformation matrix created for the fourth repetition would have a value of i as 3.
- B c x and B c y represent the coordinates for the center of the base art, while R c x and R c y represent the center of the radial pattern with a radius R r . received in block 404 .
- the value t represents the angle subtended by the given repetition about the x-axis and is calculated for each repetition as shown above.
- the values R ⁇ s and R ⁇ t represent the starting angle that the first repetition is placed at and the total angle between the first and last repetitions, respectively.
- N represents the total number of repetitions.
- the coefficient values are generated for each repetition in the radial pattern using the operation configuration data. Each time block 410 is performed, the value of i is incremented. In some configurations, each repetition in the radial pattern may have more than one affine transformation applied to create that repetition. It should be understood that any size of matrix and number of coefficients may be employed within the system 100 within the scope of the present invention.
- the process of creating an affine transformation matrix(ices) for each repetition in the radial pattern is repeated until all of the repetitions in the pattern have been processed.
- the affine transformation matrix(ices) is (are) applied to the base art, as shown in block 412 . This step is similarly performed to block 210 in FIG. 2 . If there is more than one affine transformation matrix, each matrix is applied one-by-one to the base art, following the order of operations in the transformation.
- FIG. 10 provides an example of a radial pattern repetition using the base art in FIG. 8 .
- the base art from FIG. 8 has been replicated into a radial pattern repetition with repetitions spanning the full 360 degrees.
- the repetitions are evenly spaced, of uniform size, and are rotated around a common epicenter with coordinates (x, y).
- FIG. 5 is a flow diagram showing a method 500 for generating a concentric pattern repetition.
- concentric pattern repetition refers to repetitions of base art scaled in size and layered on top of one another, where a successive repetition is increasingly scaled compared to the repetition preceding it.
- the first repetition would appear as an instance of the base art scaled by 150%.
- the second concentric pattern repetition would appear as another instance of the base art 150% larger than the first repetition.
- the third concentric pattern repetition would appear as an instance 150% larger than the second concentric pattern repetition.
- each repetition is larger than the first, the smaller repetitions are placed on top of the larger repetitions. The same applies to successively smaller concentric pattern repetitions, with smaller repetitions placed on top of larger repetitions.
- a base art selection is received, as shown in block 502 .
- This step is similar to that of block 202 in FIG. 2 .
- the transformation to apply to the base art is received, as shown in block 504 .
- the user may select through a graphical user interface to create a concentric pattern repetition.
- the user may also include information regarding the amount of scaling per repetition.
- the operation(s) is(are) then parsed from the transformation, as shown in block 506 .
- this process involves determining the type of operation and the operation configuration data.
- the operations involve scaling each repetition more than the preceding repetition.
- Operation configuration data such as the amount of scaling are also parsed.
- the operation configuration data may be input by the user through a user interface. In some configurations, the scaling between successive repetitions are not uniform.
- an affine transformation matrix is created for each repetition in the concentric pattern repetition. As shown in block 508 , a decision point regarding whether all repetitions in the concentric pattern repetition have been processed is evaluated. If all of the repetitions in the concentric pattern have not been processed, block 510 is performed. If all of the repetitions have been processed, then block 512 is performed.
- the coefficients for an affine transformation matrix are generated, as shown in block 510 .
- the coefficients are determined based on the parsed operations from block 506 .
- a concentric pattern repetition using a 3 ⁇ 3 matrix will set the coefficients accordingly:
- the subscript i represents the i th repetition in the concentric pattern, with i having a range of values between 0 and N ⁇ 1.
- the affine transformation matrix created for the fourth repetition would have a value of i as 3.
- the coefficient values are generated for each matrix for each repetition in the concentric pattern using the operation configuration data.
- each time block 510 is performed, the value of i is incremented until all of the repetitions have been iterated through.
- each repetition in the concentric pattern may have more than one affine transformation applied to create that repetition. It should be understood that any size of matrix and number of coefficients may be employed within the system 100 within the scope of the present invention.
- the process of creating an affine transformation matrix(ices) for each repetition in the concentric pattern repetition is repeated until all of the repetitions in the pattern have been processed.
- the affine transformation matrix(ices) is (are) applied to the base art, as shown in block 512 .
- This step is similarly performed to block 210 in FIG. 2 .
- the affine transformation matrix(ices) are also applied in order to reflect all repetitions. In some configurations, successively larger repetitions are placed behind the preceding repetition in order to show all repetitions. Similarly, successively smaller repetitions are placed on top of the preceding repetition in order to show all of the smaller repetitions created without having a larger repetition block the view of a smaller one. If there is more than one affine transformation matrix, each matrix is applied one-by-one to the base art, following the order of operations in the transformation.
- FIG. 11 provides an example of a concentric pattern repetition using the base art in FIG. 8 .
- the base art from FIG. 8 has been replicated into a concentric pattern repetition with 3 successively smaller repetitions.
- the scaling of the successive repetitions are uniform and they are all centered around the same epicenter, with smaller repetitions layered on top of larger repetitions.
- FIG. 6 is a flow diagram showing a method 600 for generating a symmetry pattern repetition.
- symmetry pattern repetition refers to repetitions of base art reflected across an axis and rotated to appear as a mirror image of the base art or a portion of the base art.
- a base art selection is received, as shown in block 602 .
- This step is similar to that of block 202 in FIG. 2 .
- the transformation to apply to the base art is received, as shown in block 604 .
- the user may select through a graphical user interface to create a symmetry pattern repetition.
- the user may also include information regarding the axis that the symmetry takes place across along with the angle for rotation of the base art around the x-axis.
- the operation(s) is(are) then parsed from the transformation, as shown in block 606 .
- this process involves determining the type of operation and the operation configuration data.
- the first repetition creates the base art
- the second repetition creates the symmetric counterpart to the base art.
- the operations involve reflecting and rotating the base art to create the second repetition.
- Operation configuration data such as the angle of rotation, the coordinates of the axis to reflect the base art are also parsed, and a location of where the first repetition should be positioned.
- the operation configuration data may be input by the user through a user interface. For each repetition in the symmetry pattern, an affine transformation matrix is created.
- the coefficients for an affine transformation matrix are generated, as shown in block 608 .
- the coefficients are determined based on the parsed operations from block 606 .
- the first repetition involves creating a repetition of the base art aligned with the axis of reflection, which involves generating coefficients to translate the base art into the correct position.
- the second repetition involves reflecting the base art across an axis and rotating the base art around the x-axis.
- a symmetry pattern repetition using a 3 ⁇ 3 matrix will set the coefficients accordingly:
- each repetition in the symmetry pattern may have more than one affine transformation applied to create that repetition. It should be understood that any size of matrix and number of coefficients may be employed within the system 100 within the scope of the present invention.
- the affine transformation matrix(ices) is (are) applied to the base art, as shown in block 610 . This step is similarly performed to block 210 in FIG. 2 . If there is more than one affine transformation matrix, each matrix is applied one-by-one to the base art, following the order of operations in the transformation.
- FIG. 12 provides an example of a grid pattern repetition using the base art in FIG. 8 .
- the base art from FIG. 8 has been replicated into a symmetry pattern repetition with two repetitions: one of the base art to the left of the axis of symmetry and another of the base art reflected across an axis.
- the base art (or first repetition) has been reflected across an axis centered at (S x , S y ) that is in between the two repetitions.
- FIG. 7 is a flow diagram showing a method 700 for generating a path pattern repetition.
- path pattern repetition refers to repetitions of base art along a path.
- a base art selection is received, as shown in block 702 .
- This step is similar to that of block 202 in FIG. 2 .
- the transformation to apply to the base art is received, as shown in block 704 .
- the user may select through a graphical user interface to create a path pattern repetition.
- the user input may also include information regarding which path or curve the repetitions should align with and the number of desired repetitions.
- the path is an arbitrary path drawn by the user.
- This step includes parsing the operations from the transformation, as described in block 206 of FIG. 2 . For a path pattern, the operations involve translating and rotating the repetitions into the correct position.
- Operation configuration data such as the number of repetitions and a path to align with the repetitions are also parsed.
- the operation configuration data may be input by the user through a user interface.
- an affine transformation matrix will be created as shown in the following blocks and discussed below.
- Straight lines approximating the curve selected by the user are generated, as shown in block 706 .
- the path created by the user is decomposed into a set of straight lines approximating the curve.
- the approximating straight lines are tangent to the curve and are used to express the curve as a series of short, straight line segments.
- the path drawn by the user is first deconstructed into a series of Bezier curves.
- each straight line is the same length and the total length of the line segments is calculated by multiplying the number of line segments with the length of each line segment.
- each straight line is not uniform and the total is calculated by summing each individual line segment's length. Additionally, the straight line approximations may be calculated from the Bezier curves that model the path drawn by the user.
- the blocks 302 - 310 from FIG. 3 are performed for a grid with 1 row and a number of columns equal to the number of desired repetitions.
- This step provides affine transformation matrix(ices) for a single row of repetitions that span the total length of the line segments. It should be understood that any method of creating repetitions to span the total length of the path may be employed within the system 100 within the scope of the present invention. These repetitions, however, are not yet in positions aligned with the path.
- the repetitions are mapped to locations on the original path, as shown in block 712 .
- the grid pattern repetition spanning the total line segment length with a row of repetitions is deconstructed into the line segments created in block 708 to determine which portion of the original path the repetition belongs to. These short line segments with a set of corresponding repetitions is then associated with a point on the original path.
- the coordinates of the point where the tangent line segment intersects with the original path are obtained. These coordinates are the location on the original path that the repetition will be placed in.
- the repetitions are equally spaced on the line segment and the coordinates of the nearest points on the original path are calculated. It should be understood that any method of distributing repetitions on the line segments may be employed within the system 100 within the scope of the present invention.
- a decision point regarding whether all repetitions in the path pattern have been processed is evaluated. If all of the repetitions in the path pattern have not been processed, block 716 is performed next. If all of the repetitions have been processed, then block 720 is performed.
- the angle of the path where the repetition is located on the path is determined, as shown in block 716 .
- the angle of rotation of the repetition on the path can be determined.
- the corresponding line segment for that portion of the path is retrieved and the angle of rotation is determined by obtaining the slope of that tangent line segment.
- the angle of rotation is determined by taking a derivative of a Bezier curve at the point that the repetition is mapped back to on the path.
- the coefficients for affine transformation matrix(ices) is(are) modified, as shown in block 718 .
- the coefficients in the affine transformation matrix(ices) derived in block 710 are then modified to reflect the operation configuration data determined in blocks 712 and 716 .
- a path pattern repetition using a 3 ⁇ 3 matrix will modify the coefficients accordingly:
- the subscript i represents the i th repetition in the path pattern.
- the affine transformation matrix created for the fourth repetition would have a value of i as 4.
- the value ⁇ i represents the angle of rotation for each repetition on the path based on the mapped location.
- B c x and B c y represent the coordinates for the center of the base art, while L x and L y represent the translation of a repetition with respect to the base art to the mapped location on the path in the x- and y- directions, respectively.
- each repetition in the path pattern may have more than one affine transformation applied to create that repetition. It should be understood that any size of matrix and number of coefficients may be employed within the system 100 within the scope of the present invention.
- the process of creating an affine transformation matrix(ices) for each repetition in the path pattern repetition is repeated until all of the repetitions in the pattern have been processed.
- the affine transformation matrix(ices) is (are) applied to the base art, as shown in block 720 . This step is similarly performed to block 210 in FIG. 2 . If there is more than one affine transformation matrix, each matrix is applied one-by-one to the base art, following the order of operations in the transformation.
- FIG. 13 provides an example of a path pattern repetition using the base art in FIG. 8 .
- the base art from FIG. 8 has been replicated into a path pattern repetition with nine repetitions spanning the length of the path.
- the spacing between the repetitions are uniform and each repetition has been rotated to match the angle of the line tangent to the point of intersection with the path.
- FIG. 14 an example of a nested repetition is provided that illustrates creating layers of nested repetitions.
- the example 1400 involves several levels of repetition, where each repetition is used to create another repetition.
- Base art 1402 is the computer graphic that is used to create the first repetition.
- the base art 1402 is replicated to create repetition 1404 .
- coefficients for affine transformation matrices are generated and applied to create the repetition 1404 of base art 1402 .
- a repetition that is later used for base art is output as an off-screen texture that can then be used as an input for a second layer of repetition.
- repetition 1404 would be stored as a raster image that could then be used as base art for another level of repetition.
- Repetition 1406 is a radial pattern repetition of repetition/base art 1404 that spans 360 degrees around an epicenter. Again, as before, the coefficients for affine transformation matrices are generated and stored.
- Repetition 1408 is yet another repetition of the repetition/base art 1406 with the concentric pattern repetition used, involving successively smaller repetitions of repetition/base art 1406 .
- repetition 1410 is a grid pattern repetition of repetition/base art 1408 . This level of repetition similarly generates matrices and applies them to repetition/base art 1408 .
- the earlier repetitions are not rendered for display until the final repetition is complete.
- repetitions 1404 , 1406 , and 1408 may be stored as values in memory that are not yet displayable until the final repetition, 1410 , is drawn for display.
- each repetition is stored as an affine transformation matrix applied to a previous repetition.
- This is particularly advantageous for base art stored as vector graphics, where rendering graphics based on nested copies of vector graphics can be cumbersome.
- base art instead of storing multiple copies of a base art, only the base art and a series of affine transformation matrices are stored and applied to create the nested repetitions of FIG. 14 .
- FIG. 15 is another example of a nested repetition that illustrates several layers of nested repetitions.
- repetition 1502 there is a symmetry pattern repetition applied to a symbol, that is then repeated using a radial pattern repetition.
- the second repetition, 1504 has two levels of radial pattern repetition: one to create the semi-circle shape of 5 tiny circles and the other to create the repetition of semi-circles.
- the repetition 1504 has a radial pattern repetition with a shorter radius than that of 1502 .
- the next repetition, 1506 involves first a grid pattern repetition and then a radial pattern repetition, again with a smaller radius than the preceding repetition.
- Repetition 1508 involves a radial pattern repetition of a heart symbol.
- the same heart is then scaled and distributed in a radial pattern repetition in repetition 1510 .
- the final repetition, 1512 involves first a radial pattern repetition to create a ring of polygons that is then used to create a concentric pattern repetition of successively smaller repetitions.
- the inner layer of repetition 1512 is a nested repetition with two layers of repetition: a repetition created by first generating a radial pattern repetition resulting in a ring of polygons, and a nested repetition that uses the radial pattern repetition as base art to then create a concentric pattern repetition of successively smaller repetitions.
- the remaining outer layers of repetition, 1502 , 1504 , 1506 , 1508 , and 1510 are radial pattern repetitions of a corresponding base art.
- Repetition 1502 is a radial pattern repetition of the curvy computer graphic.
- repetition 1504 is a radial pattern repetition performed on the semi-circle of tiny circles computer graphic.
- Repetition 1506 is a radial pattern repetition of a computer graphic containing four flowers, while repetitions 1508 and 1510 are radial pattern repetitions of a heart symbol, each heart having a different size.
- each repetition is stored as a series of affine transformation matrices with one copy of the base art versus individual copies of each base art used for each repetition.
- each repetition layer is created by applying matrices to a single copy of base art instead of applying transformations to each single copy of a base art.
- computing device 1600 an exemplary operating environment in which embodiments of the present invention may be implemented is described below in order to provide a general context for various aspects of the present disclosure.
- FIG. 16 an exemplary operating environment for implementing embodiments of the present invention is shown and designated generally as computing device 1600 .
- Computing device 1600 is but one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Neither should the computing device 1600 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated.
- the invention may be described in the general context of computer code or machine-useable instructions, including computer-executable instructions such as program modules, being executed by a computer or other machine, such as a personal data assistant or other handheld device.
- program modules including routines, programs, objects, components, data structures, etc., refer to code that perform particular tasks or implement particular abstract data types.
- the invention may be practiced in a variety of system configurations, including hand-held devices, consumer electronics, general-purpose computers, more specialty computing devices, etc.
- the invention may also be practiced in distributed computing environments where tasks are performed by remote-processing devices that are linked through a communications network.
- computing device 1600 includes bus 1602 that directly or indirectly couples the following devices: memory 1604 , one or more central processing units (CPUs) 1606 , one or more graphics processing units (GPUs) 1610 , one or more presentation components 1614 , input/output (I/O) ports 1616 , input/output components 1618 , and illustrative power supply 1620 .
- Each CPU 1606 may comprise a general programmable electronic circuit that performs basic mathematical and logic operations.
- Each GPU 1608 may comprise a specialized programmable graphics electronic circuit designed to generate and render graphics and images for display.
- Bus 1602 represents what may be one or more busses (such as an address bus, data bus, or combination thereof).
- FIG. 16 are shown with lines for the sake of clarity, in reality, delineating various components is not so clear, and metaphorically, the lines would more accurately be grey and fuzzy.
- a presentation component such as a display device to be an I/O component.
- processors have memory. The inventors recognize that such is the nature of the art, and reiterate that the diagram of FIG. 16 is merely illustrative of an exemplary computing device that can be used in connection with one or more embodiments of the present invention. Distinction is not made between such categories as “workstation,” “server,” “laptop,” “hand-held device,” etc., as all are contemplated within the scope of FIG. 12 and reference to “computing device.”
- Computer-readable media can be any available media that can be accessed by computing device 1600 and includes both volatile and nonvolatile media, removable and non-removable media.
- Computer-readable media may comprise computer storage media and communication media.
- Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data.
- Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computing device 1600 .
- Computer storage media does not comprise signals per se.
- Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media.
- modulated data signal means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
- communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer-readable media.
- Memory 1604 includes computer storage media in the form of volatile and/or nonvolatile memory.
- the memory may be removable, non-removable, or a combination thereof.
- Exemplary hardware devices include solid-state memory, hard drives, optical-disc drives, etc.
- Computing device 1600 includes one or more processors (such as central processing unit 1606 and graphics processing unit 1610 ) that read data from various entities such as memory 1604 or I/O components 1618 . These processors may have internal memory, such as the memory 1608 that is internal to the central processing unit or memory 1612 that is internal to the graphics processing unit.
- Presentation component(s) 1614 present data indications to a user or other device. Exemplary presentation components include a display device, speaker, printing component, vibrating component, etc.
- I/O ports 1616 allow computing device 1600 to be logically coupled to other devices including I/O components 1618 , some of which may be built in. Illustrative components include a microphone, joystick, game pad, satellite dish, scanner, printer, wireless device, etc.
- the I/O components 1618 may provide a natural user interface (NUI) that processes air gestures, voice, or other physiological inputs generated by a user. In some instance, inputs may be transmitted to an appropriate network element for further processing.
- NUI may implement any combination of speech recognition, touch and stylus recognition, facial recognition, biometric recognition, gesture recognition both on screen and adjacent to the screen, air gestures, head and eye-tracking, and touch recognition associated with displays on the computing device 1600 .
- the computing device 1600 may be equipped with depth cameras, such as, stereoscopic camera systems, infrared camera systems, RGB camera systems, and combinations of these for gesture detection and recognition. Additionally, the computing device 1600 may be equipped with accelerometers or gyroscopes that enable detection of motion.
- depth cameras such as, stereoscopic camera systems, infrared camera systems, RGB camera systems, and combinations of these for gesture detection and recognition.
- the computing device 1600 may be equipped with accelerometers or gyroscopes that enable detection of motion.
- implementations of the present disclosure relate to creating replications (and modifications of them) of an original computer graphic using matrices.
- the present invention has been described in relation to particular embodiments, which are intended in all respects to be illustrative rather than restrictive. Alternative embodiments will become apparent to those of ordinary skill in the art to which the present invention pertains without departing from its scope.
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
Description
- As the complexity of computer graphics continues to grow exponentially, the ability to produce, manipulate, and replicate such graphics on a large scale quickly and efficiently has become paramount. Traditionally, graphics processing systems provide the user with the ability to manipulate multiple instances of computer graphic to create a complex final output. In order to process each instance of the computer graphic, the graphics processing software may store copies of the original computer graphic for each instance. To create the final graphic, each copy of the original computer graphic must be accessed and modified. This approach of storing and operating on separate copies of the original graphic has been successful when the number of replications and modifications is small. However, use of a high number of replications and modifications or nested replications (a prior replication is used to create another repetition) poses challenges to the use of separate copies of the original graphic as storage needs of such complex and high volume replications exponentially grow, making it difficult to create complex computer graphics quickly and making it likely that the system will fail to store (let alone operate on) a high volume of memory-intensive computer graphics data.
- Embodiments of the present invention relate to, among other things, a graphics processing system that employs affine transformation matrices of transformations for computer graphics replication and modification. The graphics processing system takes a transformation and parses out operations that can be easily translated into an affine transformation matrix. The affine transformation matrix represents operations (from the transformation) to perform on the base art to create a repetition. When constructing the affine transformation matrix, the graphics processing system generates values for coefficients in the affine transformation matrix. The graphics processing system multiplies the affine transformation matrix with the base art to create a repetition of the base art in the final graphic. In some configurations, a transformation requires more than one affine transformation matrix. The graphics processing system can employ several affine transformation matrices for a transformation by multiplying them one-by-one with the base art to create repetitions, accounting for the order of operations to create the transformation. Moreover, in some configurations, the repetitions are nested, with a prior repetition being used as base art to create a second repetition.
- This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
- The present invention is described in detail below with reference to the attached drawing figures, wherein:
-
FIG. 1 is a block diagram illustrating an exemplary system in accordance with some implementations of the present disclosure; -
FIG. 2 is a flow diagram showing a method for generating a repetition in accordance with some implementations of the present disclosure; -
FIG. 3 is a flow diagram showing a method for generating a grid pattern repetition in accordance with some implementations of the present disclosure; -
FIG. 4 is a flow diagram showing a method for generating a radial pattern repetition in accordance with some implementations of the present disclosure; -
FIG. 5 is a flow diagram showing a method for generating a concentric pattern repetition in accordance with some implementations of the present disclosure; -
FIG. 6 is a flow diagram showing a method for generating a symmetry pattern repetition in accordance with some implementations of the present disclosure; -
FIG. 7 is a flow diagram showing a method for generating a path pattern repetition in accordance with some implementations of the present disclosure; -
FIG. 8 is a computer graphic providing an example of a base art used to generate the repetitions shown inFIGS. 9-13 ; -
FIG. 9 is a computer graphic providing an example of a grid pattern repetition generated inFIG. 3 ; -
FIG. 10 is a computer graphic providing an example of a radial pattern repetition generated inFIG. 4 ; -
FIG. 11 is a computer graphic providing an example of a concentric pattern repetition generated inFIG. 5 ; -
FIG. 12 is a computer graphic providing an example of a symmetry pattern repetition generated inFIG. 6 ; -
FIG. 13 is a computer graphic providing an example of a path pattern repetition generated inFIG. 7 ; -
FIG. 14 is a computer graphic providing an example of nested repetitions showing four layers of nested repetitions; -
FIG. 15 is a computer graphic providing an example of nested repetitions showing six layers of repetitions; and -
FIG. 16 is a block diagram of an exemplary computing environment suitable for use in implementations of the present disclosure. - Computer graphics replication and manipulation is often accomplished by conventional graphics processing systems creating copies of the original computer graphic and modifying each one. Each copy is stored as a raster image or vector graphics, both of which occupy significant memory space. The goal of such graphics processing systems is to facilitate complex graphics replications and manipulations that are scalable, nested, and performed in a short period of time (e.g., a few milliseconds). Although each instance of a computer graphic can be stored separately, when a graphic is replicated, nested, or scaled a large number of times, the creation of a complex computer graphic can be both resource and time intensive for the graphics processing system.
- Embodiments of the present invention are directed to a graphics processing system that addresses these challenges by providing a solution that efficiently expresses instances of a computer graphic (and any transformations to them) in a memory-compact data structure such as a matrix. At a high level, the graphics processing system builds affine transformation matrices to be applied to base art. While conventional search systems typically generate individual copies of the base art for each replication, the graphics processing system described herein forms matrices of desired graphics replications that are all applied to a single instance of the base art.
- In accordance with the technology described herein, a transformation to a base art is processed to generate one or more affine transformation matrices for repetitions from parsed operations. For instance, an affine transformation matrix can be generated for each transformation resulting in a repetition. For each transformation, the affine transformation matrix encapsulates the operations performed on a base art to create the repetition. Each affine transformation matrix is applied to the base art to create a repetition.
- The graphics processing system employs the affine transformation matrix to generate repetitions in a variety of patterns. For a given transformation, the graphics processing system identifies operations and operation configuration data, which are values relevant to each operation. Based on the type of operation, the graphics processing system generates coefficients that reside in particular positions within the affine transformation matrix. The affine transformation matrix is multiplied with the coordinates of base art to generate a repetition.
- In some configurations, each repetition may require more than one affine transformation matrix to achieve the desired repetition. The order of application of multiple affine transformation matrices to the base art is also modified depending on the repetition pattern selected. In some configurations, the multiple affine transformation matrices are multiplied to create one affine transformation matrix. However, the order of multiplying the matrices affects the order in which the corresponding operations are applied to a base art. The graphics processing system employs the affine transformation matrices one-by-one to create multiple repetitions by multiplying the affine transformation matrix with the coordinates of the base art.
- The graphics processing system described herein provides a number of advantages over conventional systems. Initially, the use of affine transformation matrices of transformations increases efficiency in several ways. For instance, affine transformation matrices allow the graphics processing system to express creating multiple instances of a computer graphic without storing a copy of the base art for each and every repetition. Moreover, the affine transformation matrices express multiple operations to perform on a given instance of a base art. Additionally, the graphics processing system generates affine transformation matrices that can be applied to previous repetitions, thereby allowing a high level of nested repetitions to be represented by a series of affine transformation matrices instead of exponentially increasing storage of base art copies in memory. When transformations are represented as affine transformation matrices, each matrix can be stored using very few bits, which is highly memory efficient, and allows for easy implementation during final graphic rendering to further improve efficiency. Additionally, the graphics processing system can consolidate the multiplication of multiple affine transformation matrices with the coordinates of the base art, which helps modern processors and compilers to optimize for performance. Likewise, the use of affine transformation matrices provides a number of other benefits: reducing the file size of a computer graphic storing repetitions of the base art, cutting down on the time needed to generate a repetition, and decreasing the time spent parsing operations to perform on the base art to create a repetition.
- Repetition System Using Operations and Matrices from Transformations
- With reference now to the drawings,
FIG. 1 is a block diagram illustrating anexemplary system 100 for creating repetitions using operations and matrices derived from transformations in accordance with implementations of the present disclosure. It should be understood that this and other arrangements described herein are set forth only as examples. Other arrangements and elements (e.g., machines, interfaces, functions, orders, and groupings of functions, etc.) can be used in addition to or instead of those shown, and some elements may be omitted altogether. Further, many of the elements described herein are functional entities that may be implemented as discrete or distributed components or in conjunction with other components, and in any suitable combination and location. Various functions described herein as being performed by one or more entities may be carried out by hardware, firmware, and/or software. For instance, various functions may be carried out by a processor executing instructions stored in memory. - The
system 100 is an example of a suitable architecture for implementing certain aspects of the present disclosure. Among other components not shown, thesystem 100 includesrepetition device 102 that includes anoperation module 104, amatrix module 106, and anapplication module 108. Therepetition device 102 shown inFIG. 1 can comprise a computer device, such as thecomputing device 1600 ofFIG. 16 , discussed below. In various embodiments, thereplication device 102 may be provided, for instance, by a user device, a server device, or any combination thereof. While therepetition device 102 is shown as a single device inFIG. 1 , it should be understood that therepetition device 102 may comprise multiple devices cooperating in a distributed environment. For instance, therepetition device 102 could be provided by multiple server devices collectively providing the functionality of therepetition device 102 as described herein. Additionally, other components not shown may also be included within the network environment. When multiple devices are employed, the devices can communicate via a network (not shown), which may include, without limitation, one or more local area networks (LANs) and/or wide area networks (WANs). Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet. It should be understood that any number of devices and networks may be employed within thesystem 100 within the scope of the present invention. - At a high level, the
repetition device 102 generally operates to receive atransformation 110 and abase art 116 and generate arepetition 114 by applying thetransformation 110 to thebase art 116.Base art 116, for example, is the original computer graphic that is transformed to display as a repetition on the screen. In some configurations,base art 116 may be stored as a raster image or vector graphics. A raster image, for instance, includes images stored as colored pixels capable of being displayed. Vector graphics, for instance, includes artwork expressed as vectors and mathematical calculations that the GPU uses to render an image. - A
repetition 114 of base art, for example, appears as a modified replication of thebase art 116 on a display screen. In some configurations,repetitions 114 are generated by applying an affine transformation matrix to thebase art 116. In further embodiments, nested repetitions, where a prior repetition is used as base art to generate successive levels of repetition, are also possible. For instance, if a symmetry pattern repetition is applied to the base art to create a first level of repetition, then a radial pattern repetition of the symmetry pattern repetition would be a second level of repetition. - The
repetition device 102 operates to construct one or more affine transformation matrices from thetransformation 110 and employ the affine transformation matrices when creating therepetition 114. As part of this process, therepetition device 102 generates operations from thetransformation 110 and employs those operations in building the affine transformation matrix(ices). As shown inFIG. 1 , therepetition device 102 includes anoperation module 104,matrix module 106, andapplication module 108. In some configurations, thetransformation 110 refers to one or more operations that modify base art to create a repetition of base art. In further embodiments, transformations of the base art produce repetitions in various patterns including grid, radial, concentric, symmetry and path patterns. - The
operation module 104 operates to generate an operation or set of operations for atransformation 110. An operation comprises one or more modifications to thebase art 116 to apply thetransformation 110 to thebase art 116 in order to generate therepetition 114. An operation, for example, may refer to a modification to thebase art 116. In some configurations, operations may include shearing, scaling, translating, reflecting, and rotating the base art. For example, if the transformation was to create a radial pattern repetition of base art, the operations would be to translate and rotate the replication of the base art into the desired position and at the desired angle in a circular pattern. Operations may be associated with “operation configuration data,” which specify values necessary to implement the operations to achieve the desired transformation to the base art. For instance, operation configuration data for a translation operation would include the changes in the x- and y- directions to generate a repetition of the base art in the desired location in the final graphic. - In other words, the
transformation 110 is broken down into an operation or a set of operations such as shearing, scaling, translating, reflecting, and rotating thebase art 116. The process of parsing thetransformation 110 into one or more operations translates the necessary modifications to create therepetition 114 into coefficients that can be expressed using an affine transformation matrix, which is a highly efficient mechanism to capture multiple operations to perform on a replication of thebase art 116. - In some configurations, the
operation module 104 parses thetransformation 110 into one or more operations and identifies corresponding operation configuration data. The format of operation configuration data varies by operation type. For example, operations involving rotation require the degrees of rotation (which may be expressed in various forms) and the center that thebase art 116 is rotated around. Moreover, the operation configuration data for operations involving scaling of thebase art 116 represents the resizing of the replication relative to thebase art 116 and may be expressed as percentages or the decimal form of percentages. Operation configuration data for translation of thebase art 116 is often expressed as distances in a coordinate system. For each transformation, theoperation module 104 associates the operation with each respective operation configuration data. - The
operation module 104 generates an operation for thetransformation 110 by determining changes to thebase art 116 to apply thetransformation 110. Eachtransformation 110 is associated with an operation or set of operations, as described in detail below with reference toFIGS. 2-7 . To determine the necessary changes tobase art 116 to generate thetransformation 110, a lookup table storing the set of associated operations for atransformation 110 is retrieved from thedata store 112. Based on thetransformation 110, the corresponding entry in the lookup table is accessed and an associated operation or set of operations is parsed fromtransformation 110. For instance, to parse corresponding operations for a grid pattern repetition, the lookup table is retrieved, the corresponding entry accessed, and the necessary translation and scaling operations are parsed from the grid pattern repetition transformation. - In some configurations, a user interface is provided that prompts a user to provide input that identifies the type of repetition to create (e.g., grid, radial, concentric, symmetry, or path pattern) and the operation configuration data for the related operations. For example, for a grid pattern repetition, a user may input the number of rows and columns in the grid along with the spacing between the grid cells. In some configurations, the change in coordinates of the transformed base art determines the operations and operation configuration data. For example, the
operation module 104 calculates the change in coordinates from a user resizing and rotating thebase art 116 and expresses the amount of resizing of therepetition 114 as a percentage. The operations are input data for thematrix module 106, such that the operations are used to generate an affine transformation matrix(ices). - The
matrix module 106 operates to construct an affine transformation matrix(ices) from the operations derived from thetransformation 110. Some approaches for thematrix module 106 to generate one or more affine transformation matrices are described in detail below with reference toFIGS. 2-7 . The affine transformation matrix built by thematrix module 106 encapsulates multiple operations to perform on abase art 116, including the operation configuration data. In some configurations, an “affine transformation matrix” refers to a matrix that describes the transformations to apply to base art to create a repetition. For example, an affine transformation matrix can be a 3×3 matrix with 6 coefficients “a,” “b,” “c,” “d,” “e,” and “f,” that determine the scaling, translation, reflection, shear, and rotation to apply to the base art to produce a repetition. In this example, the “a” and “d” coefficients represent scaling along the x- and y-directions, respectively. Likewise, the “a,” “b,” “c,” and “d” coefficients represent rotation. The “e” and “f” coefficients represent translation along the x- and y- directions, respectively. Using such coefficients, the affine transformation matrix may be represented with the following notation: -
- As such, the affine transformation matrix provides a mechanism for efficient capture of operations on the
base art 116 to apply thetransformation 110 and create therepetition 114 by: avoiding storing multiple copies of memory-intensive base art, avoiding storage of multiple operations as separate data structures, and reducing the computation load on graphics processing units. - In some configurations, the
matrix module 106 builds the affine transformation matrix(ices) by identifying operation types and the operation configuration data for aparticular transformation 110. Thematrix module 106 determines which coefficient in the affine transformation matrix represents each operation and incorporates the operation configuration data into the coefficient. This process is performed for each operation contained in thetransformation 110. In some configurations, a separate affine transformation matrix is generated for each operation or set of operations. Additionally, thematrix module 106 determines the order in which operations and the operation configuration data are incorporated into coefficients based on thetransformation 110. Likewise, multiple affine transformation matrices may be multiplied, following the order that operations are applied, to create one affine transformation matrix representing multiple operations. - The affine transformation matrix(ices) is(are) stored in the
data store 112, for use in applying thetransformation 110 to thebase art 116. In some configurations, the affine transformation matrix(ices) is(are) stored in the CPU memory or GPU memory, shown as 1608 and 1612 inFIG. 16 , respectively. However, it should be understood by one skilled in the art that other types of data structures may be employed. - The
application module 108 operates to employ the affine transformation matrix built by thematrix module 106 to apply thetransformation 110 to thebase art 116 in order to provide arepetition 114. In operation, theapplication module 108 accesses thebase art 116 and retrieves the affine transformation matrix stored in thedata store 112 to apply thetransformation 110 to thebase art 116. In some configurations, thebase art 116 may also be stored indata store 112 for retrieval by theapplication module 108. - The
application module 108 applies the affine transformation matrix to thebase art 116 by multiplying coordinates of thebase art 116 with coefficients of the affine transformation matrix. For each set of the coordinates of the base art's points identified by theapplication module 108, theapplication module 108 multiplies the affine transformation matrix(ices) with the coordinates to generate a new set of coordinates of therepetition 114. The order in which multiple affine transformation matrices are multiplied with the coordinates is determined by the order of operations applied to thebase art 116. In some configurations, the coordinates of the corners in thebase art 116 represented as a raster image are multiplied by the matrices. - In some configurations, prior to multiplying the coordinates with the matrices, the
application module 108 sends thebase art 116, represented as a vector graphics, to the GPU to deconstruct thebase art 116 into triangles and process them one-by-one. Theapplication module 108 then retrieves the points in thebase art 116, which are the beginning and endpoints to vectors in thebase art 116. For instance, if thebase art 116 is stored as vector graphics that are to be scaled by 150% in a concentric pattern repetition, theapplication module 108 would determine the new coordinates of each point in eachreplication 114 by multiplying the coordinates for each point from thebase art 116 with the respective affine transformation matrix. - With vector graphics, however, the GPU only processes the
base art 116 one time and relies on affine transformation matrices to generate all repetitions. For example, a first affine transformation matrix would be multiplied with the base art 116 (that was previously processed by the GPU) to generate the coordinates for a first repetition of thebase art 116 scaled by 150%. Then, a second affine transformation matrix would be multiplied with the coordinates of thebase art 116 to generate the location coordinates of a second repetition 150% larger than the first repetition. As described below, once the coordinates have been determined, the GPU may then draw the graphic, or output, without the need to deconstruct the first and second repetitions into triangles for final graphic rendering. By processing thebase art 116 in the GPU once and then applying the affine transformation matrix(ices) to thebase art 116 to create repetitions, the memory and resources used to generate the final graphic are vastly reduced. Instead of the GPU processing multiple copies of thebase art 116, resources are consolidated to process thebase art 116 once. - The multiplication with the coordinates of the
base art 116 occurs separately for each affine transformation matrix. In some configurations, there will be at least N multiplications occurring, where N is the number of repetitions. Some processors, however, may be able to optimize multiplication of multiple matrices into fewer operations. In some configurations, theapplication module 108 retrieves the affine transformation matrix(ices) from the CPU memory and uploads it to the GPU memory for multiplication described above and for rendering of the final graphic described below. - Using the coordinates of the
repetition 114, the final graphic is rendered. In some configurations, with the GPU having processed thebase art 116, which was formatted as a vector graphics, as mentioned above, the GPU merely draws or renders the vectors represented by the new set of coordinates to produce the final graphic. Likewise, in some configurations, where thebase art 116 is a raster image, the GPU multiplies the coordinates of the corners of thebase art 116 with the matrices to determine the bounds of the image and resamples the pixels within accordingly. Arepetition 114 is generated that represents thetransformation 110 performed on thebase art 116 based on the application of the affine transformation matrix on thebase art 116. - In some configurations, the generated
repetition 114 may be then output as a raster image that can be used to create another repetition. New affine transformation matrices can be generated and applied to therepetition 114. By usingrepetition 114 as thebase art 116 to create another layer of repetitions, the system can create a nested repetition using affine transformation matrix(ices). - With reference now to
FIG. 2 , a flow diagram is provided that illustrates amethod 200 for generating a repetition. Themethod 200 may be performed, for instance, byrepetition device 102 ofFIG. 1 . Themethod 200 may be performed for each transformation of a base art. Each block of themethod 200 and any other methods described herein comprises a computing process performed using any combination of hardware, firmware, and/or software. For instance, various functions can be carried out by a processor executing instructions stored in memory. The methods can also be embodied as computer-usable instructions stored on computer storage media. The methods can be provided by a standalone application, a service or hosted service (standalone or in combination with another hosted service), or a plug-in to another product, to name a few. - As shown at
block 202, a selection of a base art is received. This allows the base art to be identified for the creation of repetitions. In some configurations, the base art is a vector graphics or raster image. However, it should be understood that other formats of base art may be selected within the scope of the technology described herein. - The base art can be received in a variety of ways. By way of example only and not limitation, in some instances, a graphical user interface is provided that allows a user to upload a computer graphic as base art Likewise, the graphical user interface may also present a number of pre-stored computer graphics for the user to select from.
-
FIG. 8 provides an example of a base art. This exemplary base art is used to create several types of repetitions as described in detail below with reference toFIGS. 9-13 . - Turning back to
FIG. 2 , a transformation to apply to the base art is received, as shown atblock 204. The transformation may be received, for instance, by prompting the user to select the types of transformations to perform on the base art. For example, the user may be presented and asked to select a type of transformation, including transformations to create grid, radial, concentric, symmetry, and path pattern repetitions. In some configurations, the user is able to interact with a graphical user interface and dynamically manipulate the base art to achieve desired transformations. For example, the user can resize the base art to a size on the screen that should then be replicated in patterns such as the grid pattern repetition. - In
block 206, the transformation is parsed into one or more operations. The operations include shearing, scaling, translating, reflecting, and rotating a base art. Transformations are associated with an operation or set of operations, as described in detail below with reference toFIGS. 2-7 . A lookup table stores the set of associated operations for each transformation. Using the lookup table and the transformation to parse, the corresponding entry in the table is accessed and associated operation (or set of operations) is retrieved. Based on the entry from the lookup table, the transformation is parsed into the retrieved operation or set of operations. In some configurations, the desired operations may be determined by the user's selections for the transformation through a graphical user interface. For example, a user may select an option to perform a radial pattern repetition containing seven repetitions. In some configurations, the operations corresponding to a transformation may be embedded or hardcoded into the software executed to generate a repetition of the base art. - Operation configuration data for each operation is also determined. The different types of pattern repetitions require operation configuration data that is unique to the pattern described in detail below with reference to
FIGS. 3-7 . In some configurations, the user's dynamic interaction with the graphical user interface determines the types of operations and corresponding operation configuration data. For example, a user may select a radial pattern repetition with seven repetitions spanning 60 degrees around a center with coordinates (1, 6). Similarly, if a user selects the option to rotate the base art and positions the base art into the desired rotated position, the degree of rotation for the repetition is determined from the original position of the base art. - The values input by the user serve to determine the types of operations and operation configuration data that derive the coefficients that populate the affine transformation matrix. The coefficients for the affine transformation matrix are generated, as shown in
block 208. The transformations and parsed operations can be distilled and expressed in the coefficients of the affine transformation matrix. For example, the coefficients of an affine transformation matrix with 6 coefficients “a,” “b,” “c,” “d,” “e,” and “f” can be modified to determine the scaling, translation, reflection, and rotation to apply to the base art. Using the operation type and operation configuration data determined inblock 206, the coefficient can be calculated accordingly. The operation type determines which coefficient is modified, while the operation configuration data determines the value of the coefficient. To provide uniformity, some operation configuration data may need to be converted into other forms, such as expressing the amount of rotation as degrees versus radians. - The type of operations determines which coefficient is modified. Operations involving scaling in the x- and y- directions affect the “a” and “d” coefficients, respectively. Likewise, operations for rotating the base art affect the “a,” “b,” “c,” and “d” coefficients. Operations pertaining to translation in the x- and y- directions modify the “e” and “f” coefficients, respectively. The affine transformation matrix, using the following notation, shows the placement of each coefficient:
-
- However, it should be understood that the size and number of coefficients in the affine transformation can be modified based on the number of dimensions in the coordinate system of the base art.
- The operation configuration data for each operation is then integrated into each coefficient based on the type of operation. The description of how operation configuration data is integrated into each coefficient for a variety of pattern repetitions is described in detail below with reference to
FIGS. 3-7 . In some configurations, the affine transformation matrix(ices) may be calculated by the CPU, shown as 1606 inFIG. 16 , and stored within the CPU memory, shown as 1608 inFIG. 16 . - The affine transformation matrix is then applied to the base art, as shown in
block 210. This step involves determining the points of the base art and obtaining the coordinates for each point. Once retrieved, the coordinates are multiplied with the affine transformation matrix. In some configurations, the base art is stored as vector graphics and the points in the base art are the beginning and end of each vector. For raster images, the coordinates are the corners of the image. As described above, with respect to theapplication module 108 shown inFIG. 1 , the application of the affine transformation matrix(ices) may involve having the GPU process the base art prior to multiplication. In some configurations, rows and columns are added to both the base art's coordinates and the affine transformation matrix(ices) to homogenize coordinate systems and facilitate multiplication. - If a particular transformation requires more than one affine transformation matrix to achieve the desired result, each set of coordinates may be multiplied by each of the affine transformation matrix. The order of multiplication of the matrices may also be dictated by the transformation. Likewise, multiple affine transformation matrices can be consolidated into one matrix, with the order of matrix multiplication reflecting that of the operations. For example, reflecting the base art across an axis and then rotating the base art may not produce the same transformation as rotating the base art and then reflecting it across the same axis. Likewise, in a repetition of prior repetitions, application of affine transformation matrices to earlier repetitions may be performed first in order to facilitate the creation of the follow-on repetitions.
- In some configurations, the application of the affine transformation matrix, however, may take place within the GPU, shown as 1610 in
FIG. 16 , and the result stored in the GPU memory, shown as 1612 inFIG. 16 . The affine transformation matrix(ices) are first uploaded from theCPU memory 1608 into theGPU memory 1612 and then theGPU 1610 draws the final graphic of repetitions, as described in detail with respect to theapplication module 108 inFIG. 1 . -
FIG. 3 is a flow diagram showing amethod 300 for generating a grid pattern repetition. In some configurations, grid pattern repetition refers to a repetition of base art in every cell in a grid with a designated number of rows and columns. For instance, in a grid having 2 rows and 4 columns, the grid pattern repetition would require creating 8 repetitions to ensure there is a repetition in every cell of the grid. - As can be seen in
FIG. 3 , a base art selection is received inblock 302. This step is similar to that ofblock 202 inFIG. 2 . The transformation to apply to the base art is received, as shown inblock 304. Similar to block 204, the user may select through a graphical user interface to create a grid pattern repetition. The user may also include operation configuration information regarding the number of rows and columns in the grid pattern repetition along with the spacing between grid cells. - The operation(s) is(are) then parsed from the transformation, as shown in
block 306. As described inblock 206 ofFIG. 2 , this process involves determining the type of operation and the operation configuration data. The operations performed for a grid pattern repetition are translating, and in some configurations, scaling, repetitions into a position in the grid with uniform grid spacing. Operation configuration data such as the spacing between cells, the number of rows and columns, and the number of cells in the grid are also parsed. As mentioned above inFIG. 2 with respect to 206, the operation configuration data may be input by the user through a user interface. For example, if the user selected the option to create a grid with 2 rows and 3 columns, the number of cells to create repetitions for would be 6. By multiplying the number of columns and rows in the grid pattern, the number of cells (and thus) repetitions to create is determined. - As shown in
block 308, a decision point regarding whether all cells in the grid pattern have been processed is evaluated. If all of the cells in the grid pattern have not been processed, block 310 is performed next. If all of the cells have been processed, then block 312 is performed. - For a given cell, the coefficients for an affine transformation matrix are generated, as shown in
block 310. The coefficients are determined based on the parsed operations and operation configuration data fromblock 306. A grid pattern repetition using a 3×3 affine transformation matrix will set the coefficients accordingly: -
a=d=1 -
b=c=0 -
e ij =j*(S col +B width) -
f ij =i*(S row +B height) - The subscripts i and j represent the ith row and the jth column in the grid pattern. For example, the affine transformation matrix created for the cell in the first row and second column would have the following values: i having a value of 1 and j having a value of 2. Additionally, Srow and Scol respectively represent the row and column spacing among grid cells received in
block 302. Moreover, the value Bwidth and Bheight represent the width and height of the base art. - The coefficient values are populated for each grid cell in the grid pattern using the operation configuration data. In some configurations, each time block 310 is performed, the values of i and j are incremented until all of the cells have been iterated through. In some configurations, each grid cell may have more than one affine transformation applied to create that repetition. It should be understood that any size of matrix and number of coefficients may be employed within the
system 100 within the scope of the present invention. The process of generating coefficients for an affine transformation matrix(ices) for each cell in the grid pattern repetition is repeated until all of the grid cells have been processed. - Following from
block 308, the affine transformation matrix(ices) is (are) applied to the base art, as shown inblock 312. This step is similarly performed to block 210 inFIG. 2 . If there is more than one affine transformation matrix, each matrix is applied one-by-one to the base art, following the order of operations in the transformation. -
FIG. 9 provides an example of a grid pattern repetition using the base art inFIG. 8 . As can be seen inFIG. 9 , the base art fromFIG. 8 has been replicated into a grid pattern repetition with four rows and six columns. As also shown inFIG. 9 , the spacing between the grid cells are uniform as are the sizes of each repetition. -
FIG. 4 is a flow diagram showing amethod 400 for generating a radial pattern repetition. In some configurations, radial pattern repetition refers to repetitions of base art in a circular pattern around a designated center for a specified number of degrees. For instance, each repetition of the radial pattern repetition may be scaled or sized independent of the others. For example, one repetition may be scaled by 150% in the radial pattern repetition, while the second and third repetitions are scaled by 70% and 200%, respectively. In this example, despite the varying sizing and scaling, each repetition is rotated around a center for a designated number of degrees. - As can be seen in
FIG. 4 , A base art selection is received, as shown inblock 402. This step is similar to that ofblock 202 inFIG. 2 . The transformation to apply to the base art is received, as shown inblock 404. Similar to block 204, the user may select through a graphical user interface to create a radial pattern repetition. The user may also include information regarding the radius, the center of the radial pattern repetition, and the center point of the base art Likewise, the user may provide the start angle of repetitions around the center, the total angle between the first and last repetitions, and the total number of repetitions. - The operation(s) is(are) then parsed from the transformation, as shown in
block 406. As described inblock 206 ofFIG. 2 , this process involves determining the type of operation and the operation configuration data. For a radial pattern repetition, the operations involve rotating and translating each repetition. Operation configuration data includes information such as the radius, centers of the repetition and the base art along with the angle the repetition continues for and the total number repetitions. As mentioned above inFIG. 2 with respect to 206, the operation configuration data may be input by the user through a user interface. - For each repetition in the radial pattern, an affine transformation matrix is created. As shown in
block 408, a decision point regarding whether all repetitions in the radial pattern have been processed is evaluated. If all of the repetitions in the radial pattern have not been processed, block 410 is performed. If all of the repetitions have been processed, then block 412 is performed. - For a given repetition in the pattern, the coefficients for an affine transformation matrix are generated, as shown in
block 410. The coefficients are determined based on the parsed operations and the operation configuration fromblock 406. A radial pattern repetition using a 3×3 matrix will set the coefficients accordingly: -
ai=di=sin Φi -
- The subscript i represents the ith repetition in the radial pattern, with i having values between a range of 0 and N−1. For example, the affine transformation matrix created for the fourth repetition would have a value of i as 3. Additionally, Bc
x and Bcy represent the coordinates for the center of the base art, while Rcx and Rcy represent the center of the radial pattern with a radius Rr. received inblock 404. The value t represents the angle subtended by the given repetition about the x-axis and is calculated for each repetition as shown above. Moreover, the values RΦs and RΦt represent the starting angle that the first repetition is placed at and the total angle between the first and last repetitions, respectively. N represents the total number of repetitions. - The coefficient values are generated for each repetition in the radial pattern using the operation configuration data. Each
time block 410 is performed, the value of i is incremented. In some configurations, each repetition in the radial pattern may have more than one affine transformation applied to create that repetition. It should be understood that any size of matrix and number of coefficients may be employed within thesystem 100 within the scope of the present invention. The process of creating an affine transformation matrix(ices) for each repetition in the radial pattern is repeated until all of the repetitions in the pattern have been processed. - Following from
block 408, the affine transformation matrix(ices) is (are) applied to the base art, as shown inblock 412. This step is similarly performed to block 210 inFIG. 2 . If there is more than one affine transformation matrix, each matrix is applied one-by-one to the base art, following the order of operations in the transformation. -
FIG. 10 provides an example of a radial pattern repetition using the base art inFIG. 8 . As can be seen inFIG. 10 , the base art fromFIG. 8 has been replicated into a radial pattern repetition with repetitions spanning the full 360 degrees. As also shown inFIG. 10 , the repetitions are evenly spaced, of uniform size, and are rotated around a common epicenter with coordinates (x, y). -
FIG. 5 is a flow diagram showing amethod 500 for generating a concentric pattern repetition. In some configurations, concentric pattern repetition refers to repetitions of base art scaled in size and layered on top of one another, where a successive repetition is increasingly scaled compared to the repetition preceding it. For example, in a concentric pattern repetition including three repetitions, the first repetition would appear as an instance of the base art scaled by 150%. In this example, the second concentric pattern repetition would appear as another instance of the base art 150% larger than the first repetition. Likewise, the third concentric pattern repetition would appear as an instance 150% larger than the second concentric pattern repetition. Given that each repetition is larger than the first, the smaller repetitions are placed on top of the larger repetitions. The same applies to successively smaller concentric pattern repetitions, with smaller repetitions placed on top of larger repetitions. - As can be seen in
FIG. 5 , A base art selection is received, as shown inblock 502. This step is similar to that ofblock 202 inFIG. 2 . The transformation to apply to the base art is received, as shown inblock 504. Similar to block 204, the user may select through a graphical user interface to create a concentric pattern repetition. The user may also include information regarding the amount of scaling per repetition. - The operation(s) is(are) then parsed from the transformation, as shown in
block 506. As described inblock 206 ofFIG. 2 , this process involves determining the type of operation and the operation configuration data. For a concentric pattern, the operations involve scaling each repetition more than the preceding repetition. Operation configuration data such as the amount of scaling are also parsed. As mentioned above inFIG. 2 with respect to 206, the operation configuration data may be input by the user through a user interface. In some configurations, the scaling between successive repetitions are not uniform. - For each repetition in the concentric pattern repetition, an affine transformation matrix is created. As shown in
block 508, a decision point regarding whether all repetitions in the concentric pattern repetition have been processed is evaluated. If all of the repetitions in the concentric pattern have not been processed, block 510 is performed. If all of the repetitions have been processed, then block 512 is performed. - For a given repetition, the coefficients for an affine transformation matrix are generated, as shown in
block 510. The coefficients are determined based on the parsed operations fromblock 506. A concentric pattern repetition using a 3×3 matrix will set the coefficients accordingly: -
a i =d i=1−i/N -
b=c=0 -
e=f=0 - The subscript i represents the ith repetition in the concentric pattern, with i having a range of values between 0 and N−1. For example, the affine transformation matrix created for the fourth repetition would have a value of i as 3.
- The coefficient values are generated for each matrix for each repetition in the concentric pattern using the operation configuration data. In some configurations, each time block 510 is performed, the value of i is incremented until all of the repetitions have been iterated through. In some configurations, each repetition in the concentric pattern may have more than one affine transformation applied to create that repetition. It should be understood that any size of matrix and number of coefficients may be employed within the
system 100 within the scope of the present invention. The process of creating an affine transformation matrix(ices) for each repetition in the concentric pattern repetition is repeated until all of the repetitions in the pattern have been processed. - Following from
block 508, the affine transformation matrix(ices) is (are) applied to the base art, as shown inblock 512. This step is similarly performed to block 210 inFIG. 2 . The affine transformation matrix(ices) are also applied in order to reflect all repetitions. In some configurations, successively larger repetitions are placed behind the preceding repetition in order to show all repetitions. Similarly, successively smaller repetitions are placed on top of the preceding repetition in order to show all of the smaller repetitions created without having a larger repetition block the view of a smaller one. If there is more than one affine transformation matrix, each matrix is applied one-by-one to the base art, following the order of operations in the transformation. -
FIG. 11 provides an example of a concentric pattern repetition using the base art inFIG. 8 . As can be seen inFIG. 11 , the base art fromFIG. 8 has been replicated into a concentric pattern repetition with 3 successively smaller repetitions. As also shown inFIG. 11 , the scaling of the successive repetitions are uniform and they are all centered around the same epicenter, with smaller repetitions layered on top of larger repetitions. -
FIG. 6 is a flow diagram showing amethod 600 for generating a symmetry pattern repetition. In some configurations, symmetry pattern repetition refers to repetitions of base art reflected across an axis and rotated to appear as a mirror image of the base art or a portion of the base art. - As can be seen in
FIG. 6 , a base art selection is received, as shown inblock 602. This step is similar to that ofblock 202 inFIG. 2 . The transformation to apply to the base art is received, as shown inblock 604. Similar to block 204, the user may select through a graphical user interface to create a symmetry pattern repetition. The user may also include information regarding the axis that the symmetry takes place across along with the angle for rotation of the base art around the x-axis. - The operation(s) is(are) then parsed from the transformation, as shown in
block 606. As described inblock 206 ofFIG. 2 , this process involves determining the type of operation and the operation configuration data. For a symmetry pattern, there are always at least two repetitions. The first repetition creates the base art, while the second repetition creates the symmetric counterpart to the base art. The operations involve reflecting and rotating the base art to create the second repetition. Operation configuration data such as the angle of rotation, the coordinates of the axis to reflect the base art are also parsed, and a location of where the first repetition should be positioned. As mentioned above inFIG. 2 with respect to 206, the operation configuration data may be input by the user through a user interface. For each repetition in the symmetry pattern, an affine transformation matrix is created. - For each repetition, the coefficients for an affine transformation matrix are generated, as shown in
block 608. The coefficients are determined based on the parsed operations fromblock 606. The first repetition involves creating a repetition of the base art aligned with the axis of reflection, which involves generating coefficients to translate the base art into the correct position. The second repetition involves reflecting the base art across an axis and rotating the base art around the x-axis. A symmetry pattern repetition using a 3×3 matrix will set the coefficients accordingly: -
a=cos(2*Φ) -
b=c=sin(2*Φ) -
d=−cos(2*Φ) -
e=−S x*cos(2*Φ)−S y*sin(2*Φ)+S x -
f=−S x*sin(2*Φ)+S y*cos(2*Φ)+S y - Sx and Sy represent the coordinates about which the axis of reflection is centered, while Φ represents angle that the second repetition is rotated around the x-axis. In some configurations, each repetition in the symmetry pattern may have more than one affine transformation applied to create that repetition. It should be understood that any size of matrix and number of coefficients may be employed within the
system 100 within the scope of the present invention. - The affine transformation matrix(ices) is (are) applied to the base art, as shown in
block 610. This step is similarly performed to block 210 inFIG. 2 . If there is more than one affine transformation matrix, each matrix is applied one-by-one to the base art, following the order of operations in the transformation. -
FIG. 12 provides an example of a grid pattern repetition using the base art inFIG. 8 . As can be seen inFIG. 12 , the base art fromFIG. 8 has been replicated into a symmetry pattern repetition with two repetitions: one of the base art to the left of the axis of symmetry and another of the base art reflected across an axis. As also shown inFIG. 12 , the base art (or first repetition) has been reflected across an axis centered at (Sx, Sy) that is in between the two repetitions. -
FIG. 7 is a flow diagram showing amethod 700 for generating a path pattern repetition. In some configurations, path pattern repetition refers to repetitions of base art along a path. - As can be seen in
FIG. 7 , a base art selection is received, as shown inblock 702. This step is similar to that ofblock 202 inFIG. 2 . The transformation to apply to the base art is received, as shown inblock 704. Similar to block 204, the user may select through a graphical user interface to create a path pattern repetition. The user input may also include information regarding which path or curve the repetitions should align with and the number of desired repetitions. In some configurations, the path is an arbitrary path drawn by the user. This step includes parsing the operations from the transformation, as described inblock 206 ofFIG. 2 . For a path pattern, the operations involve translating and rotating the repetitions into the correct position. Operation configuration data such as the number of repetitions and a path to align with the repetitions are also parsed. As mentioned above inFIG. 2 with respect to 206, the operation configuration data may be input by the user through a user interface. For each repetition in the path pattern repetition, an affine transformation matrix will be created as shown in the following blocks and discussed below. - Straight lines approximating the curve selected by the user are generated, as shown in
block 706. The path created by the user is decomposed into a set of straight lines approximating the curve. The approximating straight lines are tangent to the curve and are used to express the curve as a series of short, straight line segments. In some configurations, prior to decomposing the path into a set of straight lines, the path drawn by the user is first deconstructed into a series of Bezier curves. - For the straight line approximations, the total length of the line segments is calculated, as shown in
block 708. In some configurations, each straight line is the same length and the total length of the line segments is calculated by multiplying the number of line segments with the length of each line segment. In some configurations, each straight line is not uniform and the total is calculated by summing each individual line segment's length. Additionally, the straight line approximations may be calculated from the Bezier curves that model the path drawn by the user. - As shown in
block 710, the blocks 302-310 fromFIG. 3 are performed for a grid with 1 row and a number of columns equal to the number of desired repetitions. This step provides affine transformation matrix(ices) for a single row of repetitions that span the total length of the line segments. It should be understood that any method of creating repetitions to span the total length of the path may be employed within thesystem 100 within the scope of the present invention. These repetitions, however, are not yet in positions aligned with the path. - The repetitions are mapped to locations on the original path, as shown in
block 712. The grid pattern repetition spanning the total line segment length with a row of repetitions is deconstructed into the line segments created inblock 708 to determine which portion of the original path the repetition belongs to. These short line segments with a set of corresponding repetitions is then associated with a point on the original path. In some configurations, if a line segment contains one repetition, the coordinates of the point where the tangent line segment intersects with the original path are obtained. These coordinates are the location on the original path that the repetition will be placed in. If multiple repetitions are associated with a line segment, the repetitions are equally spaced on the line segment and the coordinates of the nearest points on the original path are calculated. It should be understood that any method of distributing repetitions on the line segments may be employed within thesystem 100 within the scope of the present invention. - As shown in
block 714, a decision point regarding whether all repetitions in the path pattern have been processed is evaluated. If all of the repetitions in the path pattern have not been processed, block 716 is performed next. If all of the repetitions have been processed, then block 720 is performed. - For a given repetition, the angle of the path where the repetition is located on the path is determined, as shown in
block 716. Using the mapped coordinates back to the original path, the angle of rotation of the repetition on the path can be determined. In some configurations, the corresponding line segment for that portion of the path is retrieved and the angle of rotation is determined by obtaining the slope of that tangent line segment. In some configurations, the angle of rotation is determined by taking a derivative of a Bezier curve at the point that the repetition is mapped back to on the path. - For a given repetition, the coefficients for affine transformation matrix(ices) is(are) modified, as shown in
block 718. The coefficients in the affine transformation matrix(ices) derived inblock 710 are then modified to reflect the operation configuration data determined inblocks -
bi=sinΦi -
ci=−sinΦi -
e i =−B cx *cosΦi −B cy *sinΦi +L x -
f i =B cy *sinΦi −B cy *cosΦi +L y - The subscript i represents the ith repetition in the path pattern. For example, the affine transformation matrix created for the fourth repetition would have a value of i as 4. The value Φi represents the angle of rotation for each repetition on the path based on the mapped location. Additionally, Bc
x and Bcy represent the coordinates for the center of the base art, while Lx and Ly represent the translation of a repetition with respect to the base art to the mapped location on the path in the x- and y- directions, respectively. - These coefficient values are generated for each matrix for each repetition in the path pattern. Each
time block 718 is performed, the value of i is incremented. In some configurations, each repetition in the path pattern may have more than one affine transformation applied to create that repetition. It should be understood that any size of matrix and number of coefficients may be employed within thesystem 100 within the scope of the present invention. The process of creating an affine transformation matrix(ices) for each repetition in the path pattern repetition is repeated until all of the repetitions in the pattern have been processed. - Following from
block 714, the affine transformation matrix(ices) is (are) applied to the base art, as shown inblock 720. This step is similarly performed to block 210 inFIG. 2 . If there is more than one affine transformation matrix, each matrix is applied one-by-one to the base art, following the order of operations in the transformation. -
FIG. 13 provides an example of a path pattern repetition using the base art inFIG. 8 . As can be seen inFIG. 13 , the base art fromFIG. 8 has been replicated into a path pattern repetition with nine repetitions spanning the length of the path. As also shown inFIG. 13 , the spacing between the repetitions are uniform and each repetition has been rotated to match the angle of the line tangent to the point of intersection with the path. - Turning next to
FIG. 14 , an example of a nested repetition is provided that illustrates creating layers of nested repetitions. The example 1400 involves several levels of repetition, where each repetition is used to create another repetition.Base art 1402 is the computer graphic that is used to create the first repetition. In the first level of repetition, thebase art 1402 is replicated to createrepetition 1404. Using a symmetry pattern repetition, coefficients for affine transformation matrices are generated and applied to create therepetition 1404 ofbase art 1402. In some configurations, a repetition that is later used for base art is output as an off-screen texture that can then be used as an input for a second layer of repetition. For example,repetition 1404 would be stored as a raster image that could then be used as base art for another level of repetition.Repetition 1406 is a radial pattern repetition of repetition/base art 1404 that spans 360 degrees around an epicenter. Again, as before, the coefficients for affine transformation matrices are generated and stored.Repetition 1408 is yet another repetition of the repetition/base art 1406 with the concentric pattern repetition used, involving successively smaller repetitions of repetition/base art 1406. Likewise,repetition 1410 is a grid pattern repetition of repetition/base art 1408. This level of repetition similarly generates matrices and applies them to repetition/base art 1408. At each level, in some configurations, the earlier repetitions are not rendered for display until the final repetition is complete. For example,repetitions - As shown above, each repetition is stored as an affine transformation matrix applied to a previous repetition. This is particularly advantageous for base art stored as vector graphics, where rendering graphics based on nested copies of vector graphics can be cumbersome. Thus, instead of storing multiple copies of a base art, only the base art and a series of affine transformation matrices are stored and applied to create the nested repetitions of
FIG. 14 . -
FIG. 15 is another example of a nested repetition that illustrates several layers of nested repetitions. Inrepetition 1502, there is a symmetry pattern repetition applied to a symbol, that is then repeated using a radial pattern repetition. The second repetition, 1504, has two levels of radial pattern repetition: one to create the semi-circle shape of 5 tiny circles and the other to create the repetition of semi-circles. As seen inFIG. 15 , therepetition 1504 has a radial pattern repetition with a shorter radius than that of 1502. The next repetition, 1506, involves first a grid pattern repetition and then a radial pattern repetition, again with a smaller radius than the preceding repetition.Repetition 1508 involves a radial pattern repetition of a heart symbol. The same heart is then scaled and distributed in a radial pattern repetition inrepetition 1510. The final repetition, 1512, involves first a radial pattern repetition to create a ring of polygons that is then used to create a concentric pattern repetition of successively smaller repetitions. - In another implementation to create the computer graphic in
FIG. 15 , only the inner layer is a nested repetition, while the remaining layers of repetition are single level repetitions performed on the corresponding base art. The inner layer ofrepetition 1512 is a nested repetition with two layers of repetition: a repetition created by first generating a radial pattern repetition resulting in a ring of polygons, and a nested repetition that uses the radial pattern repetition as base art to then create a concentric pattern repetition of successively smaller repetitions. The remaining outer layers of repetition, 1502, 1504, 1506, 1508, and 1510 are radial pattern repetitions of a corresponding base art.Repetition 1502 is a radial pattern repetition of the curvy computer graphic. Likewise,repetition 1504 is a radial pattern repetition performed on the semi-circle of tiny circles computer graphic.Repetition 1506 is a radial pattern repetition of a computer graphic containing four flowers, whilerepetitions - In either implementation creating the computer graphic in
FIG. 15 , each repetition is stored as a series of affine transformation matrices with one copy of the base art versus individual copies of each base art used for each repetition. Moreover, each repetition layer is created by applying matrices to a single copy of base art instead of applying transformations to each single copy of a base art. By just storing and applying multiple matrices, memory space and resource consumption are significantly cut down during processing. - Having described implementations of the present disclosure, an exemplary operating environment in which embodiments of the present invention may be implemented is described below in order to provide a general context for various aspects of the present disclosure. Referring initially to
FIG. 16 in particular, an exemplary operating environment for implementing embodiments of the present invention is shown and designated generally ascomputing device 1600.Computing device 1600 is but one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Neither should thecomputing device 1600 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated. - The invention may be described in the general context of computer code or machine-useable instructions, including computer-executable instructions such as program modules, being executed by a computer or other machine, such as a personal data assistant or other handheld device. Generally, program modules including routines, programs, objects, components, data structures, etc., refer to code that perform particular tasks or implement particular abstract data types. The invention may be practiced in a variety of system configurations, including hand-held devices, consumer electronics, general-purpose computers, more specialty computing devices, etc. The invention may also be practiced in distributed computing environments where tasks are performed by remote-processing devices that are linked through a communications network.
- With reference to
FIG. 16 ,computing device 1600 includesbus 1602 that directly or indirectly couples the following devices:memory 1604, one or more central processing units (CPUs) 1606, one or more graphics processing units (GPUs) 1610, one ormore presentation components 1614, input/output (I/O)ports 1616, input/output components 1618, andillustrative power supply 1620. EachCPU 1606 may comprise a general programmable electronic circuit that performs basic mathematical and logic operations. EachGPU 1608 may comprise a specialized programmable graphics electronic circuit designed to generate and render graphics and images for display.Bus 1602 represents what may be one or more busses (such as an address bus, data bus, or combination thereof). Although the various blocks ofFIG. 16 are shown with lines for the sake of clarity, in reality, delineating various components is not so clear, and metaphorically, the lines would more accurately be grey and fuzzy. For example, one may consider a presentation component such as a display device to be an I/O component. Also, processors have memory. The inventors recognize that such is the nature of the art, and reiterate that the diagram ofFIG. 16 is merely illustrative of an exemplary computing device that can be used in connection with one or more embodiments of the present invention. Distinction is not made between such categories as “workstation,” “server,” “laptop,” “hand-held device,” etc., as all are contemplated within the scope ofFIG. 12 and reference to “computing device.” -
Computing device 1600 typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed bycomputing device 1600 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed bycomputing device 1600. Computer storage media does not comprise signals per se. Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer-readable media. -
Memory 1604 includes computer storage media in the form of volatile and/or nonvolatile memory. The memory may be removable, non-removable, or a combination thereof. Exemplary hardware devices include solid-state memory, hard drives, optical-disc drives, etc.Computing device 1600 includes one or more processors (such ascentral processing unit 1606 and graphics processing unit 1610) that read data from various entities such asmemory 1604 or I/O components 1618. These processors may have internal memory, such as thememory 1608 that is internal to the central processing unit ormemory 1612 that is internal to the graphics processing unit. Presentation component(s) 1614 present data indications to a user or other device. Exemplary presentation components include a display device, speaker, printing component, vibrating component, etc. - I/
O ports 1616 allowcomputing device 1600 to be logically coupled to other devices including I/O components 1618, some of which may be built in. Illustrative components include a microphone, joystick, game pad, satellite dish, scanner, printer, wireless device, etc. The I/O components 1618 may provide a natural user interface (NUI) that processes air gestures, voice, or other physiological inputs generated by a user. In some instance, inputs may be transmitted to an appropriate network element for further processing. A NUI may implement any combination of speech recognition, touch and stylus recognition, facial recognition, biometric recognition, gesture recognition both on screen and adjacent to the screen, air gestures, head and eye-tracking, and touch recognition associated with displays on thecomputing device 1600. Thecomputing device 1600 may be equipped with depth cameras, such as, stereoscopic camera systems, infrared camera systems, RGB camera systems, and combinations of these for gesture detection and recognition. Additionally, thecomputing device 1600 may be equipped with accelerometers or gyroscopes that enable detection of motion. - As described above, implementations of the present disclosure relate to creating replications (and modifications of them) of an original computer graphic using matrices. The present invention has been described in relation to particular embodiments, which are intended in all respects to be illustrative rather than restrictive. Alternative embodiments will become apparent to those of ordinary skill in the art to which the present invention pertains without departing from its scope.
- The subject matter of the present invention is described with specificity herein to meet statutory requirements. However, the description itself is not intended to limit the scope of this patent. Rather, the inventors have contemplated that the claimed subject matter might also be embodied in other ways, to include different steps or combinations of steps similar to the ones described in this document, in conjunction with other present or future technologies. Moreover, although the terms “step” and/or “block” may be used herein to connote different elements of methods employed, the terms should not be interpreted as implying any particular order among or between various steps herein disclosed unless and except when the order of individual steps is explicitly described.
- From the foregoing, it will be seen that this invention is one well adapted to attain all the ends and objects set forth above, together with other advantages which are obvious and inherent to the system and method. It will be understood that certain features and subcombinations are of utility and may be employed without reference to other features and subcombinations. This is contemplated by and is within the scope of the claims.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/838,864 US11461874B2 (en) | 2020-04-02 | 2020-04-02 | Graphics processing using matrices of transformations |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/838,864 US11461874B2 (en) | 2020-04-02 | 2020-04-02 | Graphics processing using matrices of transformations |
Publications (2)
Publication Number | Publication Date |
---|---|
US20210312590A1 true US20210312590A1 (en) | 2021-10-07 |
US11461874B2 US11461874B2 (en) | 2022-10-04 |
Family
ID=77921639
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/838,864 Active US11461874B2 (en) | 2020-04-02 | 2020-04-02 | Graphics processing using matrices of transformations |
Country Status (1)
Country | Link |
---|---|
US (1) | US11461874B2 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11295499B1 (en) | 2020-12-01 | 2022-04-05 | Adobe Inc. | Generating nested repetitions for display using multiple rendering techniques |
US11915341B2 (en) | 2022-02-14 | 2024-02-27 | Adobe Inc. | Repeat object blending |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61246877A (en) * | 1985-04-25 | 1986-11-04 | Canon Inc | Method for converting linear graphic |
US20050231512A1 (en) * | 2004-04-16 | 2005-10-20 | Niles Gregory E | Animation of an object using behaviors |
US8520004B2 (en) * | 2007-06-04 | 2013-08-27 | Daedal Doodle, LLC | Interactive labyrinth curve generation and applications thereof |
JP2009134509A (en) * | 2007-11-30 | 2009-06-18 | Hitachi Ltd | Device for and method of generating mosaic image |
US8300951B1 (en) * | 2008-09-19 | 2012-10-30 | Adobe Systems Incorporated | Recognizing symmetries along paths in vector art |
US8280703B1 (en) * | 2009-01-20 | 2012-10-02 | Adobe Systems Incorporated | Method and apparatus for controlling procedural models |
US8963959B2 (en) * | 2011-01-18 | 2015-02-24 | Apple Inc. | Adaptive graphic objects |
US9990740B2 (en) * | 2015-03-04 | 2018-06-05 | Adobe Systems Incorporated | Camera-based brush creation |
US10453230B2 (en) * | 2015-03-17 | 2019-10-22 | Agfa Nv | Security pattern generation method |
US9984481B2 (en) * | 2016-04-25 | 2018-05-29 | Adobe Systems Incorporated | Beautifying freeform drawings |
US10559061B2 (en) * | 2017-05-08 | 2020-02-11 | Adobe Inc. | Computerized generation of ornamental designs by placing instances of simple shapes in accordance with a direction guide |
US10380769B1 (en) | 2018-03-14 | 2019-08-13 | Adobe Inc. | Arrangement of drawing objects along arbitrary paths |
US11348287B2 (en) * | 2018-07-16 | 2022-05-31 | Adobe Inc. | Rendering of graphic objects with pattern paint using a graphics processing unit |
US11314400B2 (en) * | 2018-10-12 | 2022-04-26 | Adobe Inc. | Unified digital content selection system for vector and raster graphics |
US10685472B1 (en) * | 2019-01-31 | 2020-06-16 | Adobe Inc. | Animation brushes |
US11049290B2 (en) * | 2019-03-21 | 2021-06-29 | Adobe Inc. | Generation of a sequence of textures for video delivery |
US11205286B2 (en) * | 2019-07-16 | 2021-12-21 | Microsoft Technology Licensing, Llc | Techniques for optimizing creation of digital diagrams |
-
2020
- 2020-04-02 US US16/838,864 patent/US11461874B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11295499B1 (en) | 2020-12-01 | 2022-04-05 | Adobe Inc. | Generating nested repetitions for display using multiple rendering techniques |
US11915341B2 (en) | 2022-02-14 | 2024-02-27 | Adobe Inc. | Repeat object blending |
Also Published As
Publication number | Publication date |
---|---|
US11461874B2 (en) | 2022-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4120199A1 (en) | Image rendering method and apparatus, and electronic device and storage medium | |
CN110956654A (en) | Image processing method, device, equipment and storage medium | |
US20080068383A1 (en) | Rendering and encoding glyphs | |
US12118669B2 (en) | Subdividing a three-dimensional mesh utilizing a neural network | |
US11200645B2 (en) | Previewing a content-aware fill | |
US11461874B2 (en) | Graphics processing using matrices of transformations | |
US9928621B2 (en) | Line stylization through graphics processor unit (GPU) textures | |
CN112288665A (en) | Image fusion method and device, storage medium and electronic equipment | |
US20220301244A1 (en) | Customizing font bounding boxes for variable fonts | |
CN112232315B (en) | Text box detection method and device, electronic equipment and computer storage medium | |
CN117292039B (en) | Vertex coordinate generation method, vertex coordinate generation device, electronic equipment and computer storage medium | |
US6897863B2 (en) | System and method for hidden object removal | |
CN112270641A (en) | Geometric figure display method and device | |
US20050259108A1 (en) | System and method for dynamically generating images using repeatable textures | |
CN113327194A (en) | Image style migration method, device, equipment and storage medium | |
Chen et al. | iARVis: Mobile AR Based Declarative Information Visualization Authoring, Exploring and Sharing | |
US20120062566A1 (en) | Methods And Systems For Stylized Map Generation | |
US11869123B2 (en) | Anti-aliasing two-dimensional vector graphics using a compressed vertex buffer | |
CN114797109A (en) | Object editing method and device, electronic equipment and storage medium | |
US7656412B2 (en) | Texture resampling with a processor | |
US20190287225A1 (en) | Patch validity test | |
Olivier et al. | Structured Shape-Patterns from a Sketch: A Multi-Scale Approach | |
JP2020134557A (en) | Character data generation device, method, and program | |
US20240303881A1 (en) | Machine learning-based layout generation | |
US20240153172A1 (en) | Automatically generating axes for data visualizations including data bound objects |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
AS | Assignment |
Owner name: ADOBE INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BERI, TARUN;AGRAWAL, VIVEK;JAIN, GAURAV;SIGNING DATES FROM 20200326 TO 20200401;REEL/FRAME:052329/0423 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
CC | Certificate of correction |