WO2014205632A1 - Gravity point drawing method - Google Patents

Gravity point drawing method Download PDF

Info

Publication number
WO2014205632A1
WO2014205632A1 PCT/CN2013/077797 CN2013077797W WO2014205632A1 WO 2014205632 A1 WO2014205632 A1 WO 2014205632A1 CN 2013077797 W CN2013077797 W CN 2013077797W WO 2014205632 A1 WO2014205632 A1 WO 2014205632A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
predefined space
curve
intensity value
vector curve
Prior art date
Application number
PCT/CN2013/077797
Other languages
French (fr)
Inventor
Dongfang Gou
Original Assignee
Adobe Systems Incorporated
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Adobe Systems Incorporated filed Critical Adobe Systems Incorporated
Priority to PCT/CN2013/077797 priority Critical patent/WO2014205632A1/en
Priority to US14/292,353 priority patent/US9779521B2/en
Publication of WO2014205632A1 publication Critical patent/WO2014205632A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves

Definitions

  • the present application relates generally to the technical field of computer- generated drawings, and, in various embodiments, to systems and methods of gravity point drawing.
  • Computer graphics applications can generate vector curves that can be manipulated to modify a shape of the curve.
  • Bezier curves are parametric curves commonly used in computer graphics that provide a method to transfer geometric curves into a programming model.
  • Bezier curves are used to model smooth curves that can be scaled indefinitely using anchors and handlers throughout the curves.
  • Bezier curves are commonly defined in terms of four points. Two of these points are the endpoints, also referred to as anchor points. The other two points are known as control points, also referred to as handles, one associated with each anchor point.
  • the curve extends from anchor point to anchor point.
  • the line between an anchor point and its control point determines the slope, or derivative, of the curve at the anchor point. The further the control point is from the anchor point, the further the curve wants to go along the straight line before curving off towards the other anchor point.
  • FIG. 1A illustrates an original computer graphic shape 100.
  • FIG. IB illustrates a target computer graphic shape 102.
  • FIG. 1C illustrates the original computer graphic shape 100 with anchor points 104 and control points 106 that the user would have to manipulate, one by one, to modify the curvature of the original computer graphic shape 100. Because each anchor point and control point has to be manually moved in a one by one fashion, inconsistency can be accumulated during the modification of the curvature. Further adjustment and correction of the anchor points and control points may be needed to generate the target computer graphic shape 102. BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1A illustrates a prior art example of an original geometric shape to be modified
  • FIG. IB illustrates a prior art example of a target geometric shape.
  • FIG. 1C illustrates a prior art example of anchor points and handlers to be manipulated.
  • FIG. 2A illustrates an example embodiment of a modification process of a vector curve.
  • FIG. 2B illustrates another example embodiment of a
  • FIG. 3 A illustrates an example embodiment of a model for a ray mode modification process of a vector curve.
  • FIG. 3B illustrates another example embodiment of a model for a ray mode modification process of a vector curve.
  • FIG. 3C illustrates an example embodiment of an algorithm for the ray mode modification process of the vector curve of FIG. 3B.
  • FIG. 4A illustrates an example embodiment of a model for a ray mode modification process of a vector curve.
  • FIG. 4B illustrates an example embodiment of an algorithm for a ray mode modification process of the vector curve of FIG. 4A.
  • FIG. 5 illustrates an example embodiment of a sequence for generating vector curves using a ray mode modification process.
  • FIG. 6A illustrates an example embodiment of a model for an arch mode modification process of a new vector curve.
  • FIG. 6B illustrates an example embodiment of an algorithm for an arch mode modification process of the vector curve of FIG. 6A.
  • FIG. 7 A illustrates another example embodiment of a model for an arch mode modification process of a new vector curve.
  • FIG. 7B illustrates an example embodiment of an algorithm for an arch mode modification process of the vector curve of FIG. 7A.
  • FIGS. 8A-8F illustrate example embodiments of a model for an arch mode modification process of an existing vector curve.
  • FIGS. 9A-9C illustrate example embodiments of a model for an expand mode modification process of a new vector curve.
  • FIG. 10 illustrates a block diagram of an example embodiment of a graphical application.
  • FIG. 11 illustrates a block diagram of an example embodiment of a vector curve generator.
  • FIG. 12 is a flowchart illustrating an example embodiment of a method for generating a vector curve.
  • FIG. 13 is a flowchart illustrating another example embodiment of a method for generating a vector curve.
  • FIG. 14 shows a diagrammatic representation of a machine in the example form of a computer system within which a set of instructions may be executed to cause the machine to perform any one or more of the methodologies discussed herein.
  • the present disclosure describes a system and method of a gravity point drawing that simulates a physical model to draw and modify vector curves.
  • a node is identified in a drawing of a graphical application.
  • the size of a predefined space around the node and an intensity value associated with the node are determined.
  • the intensity value affects the curvature of a vector curve in the predefined space.
  • the vector curve is generated in the predefined space.
  • the curvature of the vector curve is based on the size of the predefined space and the intensity value associated with the node in the drawing.
  • the identification of the node selected by a user of the graphical application is received.
  • the size of the predefined space around the node and the intensity value associated with the node are adjusted to modify the shape of the vector curve in the predefined space.
  • the curvature of the vector curve is adjusted in the predefined space in the drawing based on the adjusted size of the predefined space and the adjusted intensity value associated with the node.
  • the predefined space comprises a region with the node as the center of the region.
  • a vector curve is generated using a physical model vector curve.
  • This physical model vector curve has a curvature based on the intensity value associated with the node and represents the measure of gravitational forces from the node in the drawing in a ray mode.
  • a vector curve is generated relative to a line segment between a first intersection point found between the existing curve and a perimeter of the predefined space and a second intersection point found between the existing curve and the perimeter of the predefined space in an arch mode.
  • points of an existing curve are shifted in the predefined space along an axis perpendicular to a line segment between a first intersection point found between the existing curve and a perimeter of the predefined space and a second intersection point found between the existing curve and the perimeter of the predefined space in an arch mode.
  • points of an existing curve are shifted in the predefined space along a radial axis of the node in an expand mode.
  • the vector curve is part of a curve in the drawing.
  • the vector curve comprises a portion of the curve in the predefined space.
  • the node in the drawing does not affect portions of the curve outside the predefined space.
  • the intensity value associated with the node is increased to increase the curvature of the vector curve towards the node in the predefined space.
  • the intensity value associated with the node is decreased to decrease the curvature of the vector curve towards the node in the predefined space.
  • the curvature of the vector curve is adjusted away from the node in the predefined space when the intensity value is negative.
  • a first node and a second node are identified in the drawing.
  • a first size of a first predefined space around the first node and a first intensity value associated with the first node are determined.
  • the first intensity value affects the curvature of a first vector curve in the first predefined space.
  • a second size of a second predefined space around the second node and a second intensity value associated with the second node are
  • the second intensity value affects the curvature of a second vector curve in the second predefined space.
  • the first predefined space intersects the second predefined space to form a common predefined space.
  • a common vector curve is generated in the common predefined space. The curvature of the common vector curve is based on the size of the first and second predefined spaces and the intensity value associated with the first and second nodes.
  • a system comprises a memory coupled to a processor.
  • the memory stores a graphical application.
  • the processor comprises a node identifier, a node attribute module, and a vector curve generator.
  • the node identifier identifies a node in a drawing of the graphical application.
  • the node attribute module determines a size of a predefined space around the node and an intensity value associated with the node.
  • the intensity value affects the curvature of a vector curve in the predefined space.
  • the vector curve generator generates the vector curve in the predefined space. The curvature of the vector curve is based on the size of the predefined space and the intensity value associated with the node.
  • the node identifier is further configured to receive the identification of the node selected by a user of the graphical application, to adjust both the size of the predefined space around the node and the intensity value associated with the node needed to modify the shape of the vector curve in the predefined space, and to adjust the curvature of the vector curve in the predefined space in the drawing which is based on the adjusted size of the predefined space and the adjusted intensity value associated with the node.
  • the vector curve generator comprises a ray mode module configured to generate a physical model vector curve having a curvature based on the intensity value associated with the node as a representation of a measure of gravitational force from the node in the drawing.
  • the vector curve generator comprises an arch mode module configured to generate the vector curve relative to a line segment between a first intersection point found between the existing curve and a perimeter of the predefined space and a second intersection point found between the existing curve and the perimeter of the predefined space.
  • the vector curve generator comprises an arch mode module configured to shift points of an existing curve in the predefined space along an axis perpendicular to a line segment between a first intersection point found between the existing curve and a perimeter of the predefined space and a second intersection point found between the existing curve and the perimeter of the predefined space.
  • the vector curve generator comprises an arch mode module configured to shift points of an existing curve in the predefined space along a radial axis of the node.
  • the node attribute module is configured to increase the intensity value associated with the node that increases a curvature of the vector curve towards the node in the predefined space, to decrease the intensity value associated with the node that decreases a curvature of the vector curve towards the node in the predefined space.
  • the vector curve generator is configured to adjust the curvature of the vector curve away from the node in the predefined space when the intensity value is negative.
  • the node identifier is configured to identify a first node and a second node in the drawing.
  • the node attribute module is configured to determine a first size of a first predefined space around the first node, and a first intensity value associated with the first node.
  • the first intensity value affects a curvature of a first vector curve in the first predefined space.
  • the node attribute model is also configured to determine a second size of a second predefined space around the second node, and a second intensity value associated with the second node.
  • the second intensity value affects a curvature of a second vector curve in the second predefined space.
  • the first predefined space intersects the second predefined space to form a common predefined space.
  • the vector curve generator is configured to generate a common vector curve in the common predefined space. A curvature of the common vector curve is based on the sizes of the first and second predefined spaces and the intensity value associated with the first and second nodes in the drawing.
  • a non-transitory machine- readable storage device may store a set of instructions that, when executed by at least one processor, causes the at least one processor to perform the method operations discussed within the present disclosure.
  • FIG. 2A illustrates an example embodiment of a ray mode modification process of a vector curve.
  • the ray mode includes a single fixed point on straight line and is based on classical physics models.
  • an object 202 orbits a gravitational point (e.g., gravity point 204). As the object 202 moves closer to the gravity point 204, it may be affected. The object 202 may change its direction slowly. The path of the object 202 generates a smooth curve 206.
  • a gravitational point e.g., gravity point 204
  • the variables, mass and distance, can affect the curvature of the path. For example, increasing the mass of the gravity point 204 may generate a sharp curve 208 for the object 202.
  • FIG. 3 A illustrates a predefined space 302 that can be adjusted to limit the effect of the gravity point 204 on the object 202.
  • the path of the object 202 is not affected outside the predefined space 302.
  • the predefined space 302 comprises a region with the gravity point 204 as the center of the region.
  • the path of the object 202 is affected by the gravity point 204 only within the predefined space 302.
  • FIG. 3B illustrates a model for a ray mode modification process of a vector curve.
  • the object 202 moves into the predefined space 302 at geographic location (P x , P y )
  • the object 202 starts to gain acceleration by gravity forces (G x , G y ) from the gravity point 204.
  • the acceleration of the object 202 at geographic location (P x , P y ) may be separated into two directional components: a first direction component a x along the original velocity, and a second direction a y component vertical to the first direction component a x .
  • the vertical acceleration a y changes the path of the object 202.
  • the path of the object 202 generates a curve.
  • the curvature may be affected by parameters as further described below.
  • FIG. 3C illustrates an example embodiment of an algorithm for the ray mode modification process of the vector curve of FIG. 3B.
  • An example of the ray mode modification process of a vector curve is illustrated in FIG. 3C where the square of the mass "m" of the object 202 makes the acceleration nonlinear. Increasing the mass "m” of the object 202 adds acceleration "a” evenly. Reducing the relative distance "d" between the object 202 and the gravity point 204 adds different acceleration based on the position of each point along the path of the object 202.
  • FIG. 4A illustrates a model for a ray mode modification process of a vector curve for the object 202.
  • the object 202 is affected by two gravity points 204 and 402 when the object 202 is in the corresponding predefined space 302 and 404 of gravity points 204 and 402.
  • the acceleration (a and a') from each gravity point 204 and 402 is broken down into horizontal direction (a x and a x ) and vertical direction (a y and a y ).
  • the composite direction is then calculated based on the combined original directions (a x and a x ) and vertical direction (a y and a y ).
  • the intensity associated with the gravity point 204 may be reversed.
  • This reverse gravity point method may be referred to as an inverse option.
  • the distribution of gravity force can be inversed inside the predefined space 302. In other words, points with more distance from the gravity point 204 receive more gravity force than points closer to the gravity point 204.
  • FIG. 4B illustrates an example embodiment of an algorithm for the reverse gravity point method.
  • FIG. 5 illustrates an example embodiment of a sequence 500 for generating vector curves using a ray mode modification process as previously described.
  • drawing 502 three straight lines 503 are drawn.
  • gravity points 510 and 512 are placed within their respective predefined spaces 514, 516.
  • the shape or area of the predefined spaces 514, 516 can be adjusted to change the affected range.
  • the mass of (or intensity associated with) the gravity points 510 and 512 may also be adjusted. For example, a positive mass would represent attractive force while a negative mass would represent a repulsive force.
  • Drawing 506 illustrates the effects of the gravity point drawing method on the three lines 503.
  • Drawing 508 illustrates an example of an end result of a computer graphics drawing using the gravity point drawing method.
  • the gravity point drawing method is easier to use. Adjusting one gravity point (e.g., 510, 512) in the gravity point drawing method would be the equivalent of adjusting multiple anchor points and handlers as illustrated in the example of FIG. 1C. Furthermore, the relative curvature of the paths is consistently maintained between the three lines 503 in FIG. 5 when adjusting the gravity points 510 and 512.
  • the gravity point drawing method includes an arch mode.
  • FIG. 6A illustrates an example of an arch mode where two points Po and Pi are fixed on a single straight line 602.
  • the portion 604 of the straight line 602 is within a predefined space 606 and is therefore affected by a gravity point 608 associated with the predefined space 606.
  • the arch mode produces a vector curve 610 defined by three points: Po, Pi, and P 2 .
  • Po and Pi are two points of intersection between the straight line 602 and the predefined space 606 which are associated with the gravity point 608.
  • P 2 is a point along the vector curve 610 closest to the gravity point 608.
  • P 0 , Pi, and P 2 make up a Quadratic Bezier curve.
  • FIG. 6B illustrates an example embodiment of an algorithm for the arch mode modification process of the vector curve of FIG.
  • FIG. 7A illustrates another example embodiment of a model for an arch mode modification process of a new vector curve 710.
  • the arch mode produces a new vector curve 710 defined by three points: Po, Pi, and P 2 .
  • FIG. 7A illustrates an example of an arch mode where two points P 0 and Pi are fixed on a single straight line 702.
  • the portion 704 of the line 702 between Po and Pi is within a predefined space 706 and is, therefore, affected by a gravity point 708 associated with the predefined space 706.
  • the arch mode in FIG. 7 A illustrates an asymmetric mode where the intersection points Po and Pi are not defined by the predefined space 706, and the horizontal movement of the gravity point 708 distorts the arch shape of the new vector curve 710 between intersection points Po and Pi.
  • FIG. 7B illustrates an example embodiment of an algorithm for the arch mode modification process of the vector curve 710 of FIG. 7A where P2 X and P2 y represent geographic coordinates of the point P 2 , B(t) represents the offset relative to the portion 704 of the straight line 702 to generate the vector curve 710.
  • FIGS. 8A-8E illustrate example embodiments of a model for an arch mode modification process for existing vector curves.
  • FIG. 8 A illustrates an example of a vector curve 802 with multiple anchor points P 0 , Pi, P 2 , P 3 , and P 4 , and respective handles 804, 806, 808, 810, and 812.
  • anchor points Po, Pi, P 2 , P 3 , P 4 , and respective handles 804, 806, 808, 810, and 812 would all have to be manipulated in a traditional method.
  • FIG. 8B illustrates where the example vector curve 802 intersects a predefined space 814 between two intersection points: P5 and P6.
  • the two intersection points P5 and P6 are added on the vector curve 802 as new anchor points P 0 , Pi, P 2 , P 3 , and P 4 .
  • a straight line 816 between the two intersection points P5 and P6 forms the direction of a horizontal line.
  • Anchors points Po, Pi, P 2 , P 3 , and P 4 are located inside the predefined space 814.
  • FIG. 8C illustrates how the relative horizontal distances between each anchor point to the gravity point 818 associated with the predefined space 814 decides the weight of vertical movement.
  • anchor point Pi has a horizontal distance dl from the gravity point 818.
  • Anchor point P 2 has a horizontal distance d2 from the gravity point 818.
  • Anchor point P3 has a horizontal distance d3 from the gravity point 818. Because the horizontal distance dl is greater than the horizontal distance d2, the vertical displacement of anchor point P 2 is greater than the vertical displacement of anchor point Pi. Similarly, because the horizontal distance d3 is greater than the horizontal distance d2, the vertical displacement of anchor point P 2 is still greater than the vertical displacement of anchor point P 3 .
  • FIG. 8D illustrates how the relative horizontal distance between each control point to the gravity point 818 decides the weight of vertical movement.
  • control point 820 has a horizontal distance al from the gravity point 818.
  • Control point 822 has a horizontal distance a2 from the gravity point 818. Because the horizontal distance al is greater than the horizontal distance a2, the vertical displacement of control point 822 is much greater than the vertical displacement of control point 820.
  • FIG. 8E illustrates a mathematical model for vertical
  • the maximum vertical displacement of point P2 is represented by MaxP2x and MaxP2y.
  • the minimum vertical displacement of point P2 is represented by MinP2x and MinP2y.
  • the original Bezier curve may be represented as:
  • B(t) (P0, PI, P2...Pn-2, Pn-1, Pn).
  • intersection points may be represented by Pn+1, Pn+2.
  • the direction of the horizontal line may be represented as:
  • the anchor points and control points vertical movement may be represented as:
  • New Pm x Pm x - (Pm x - minPm x )*(m2*100 ) when m>0
  • New Pm x Pm x - (MaxPm x - Pm x )*(m2*100 ) when m ⁇ 0
  • New Pm y Pm y - (Pm y - minPm y )*(m2*100 ) when m>0
  • New Pm y Pm y - (MaxPm y - Pm y )*(m2*100 ) when m ⁇ 0
  • P m represents an amount of vertical displacement of a point P along the vector curve 802.
  • FIG. 8F illustrates the original vector curve 802 modified using the arch mode of the gravity point method drawing to generate a second curve 824.
  • FIG. 9A illustrates an example embodiment of a model for an expand mode modification process of an existing vector curve.
  • the expand mode is similar to the previously described arch mode.
  • an existing curve 902 intersects with a predefined space 906 associated with a gravity point 904.
  • the existing curve 902 intersects the edge of the predefined space 906 at two intersection points: P5 and P6.
  • the two points P5 and P6 are added to the existing curve 902 as new anchor points.
  • the respective distance between the anchor points and control points inside the predefined space 906 and the gravity point 904 decide the amount of radial displacement.
  • the displacement movement is toward or away from the gravity point 904 along a radial axis of the gravity point 904.
  • anchor point PI has a radial distance of dl from the gravity point 904.
  • Anchor point P2 has a radial distance of d2 from the gravity point 904 and anchor point P3 has a radial distance of d3 from the gravity point 904. Because the radial distance d2 of P2 is less than the radial distance dl of PI, the displacement of P2 is greater than PI.
  • FIG. 9B illustrates a mathematical model for radial displacement of points of the existing curve 902.
  • the maximum vertical displacement of point P2 is represented by MaxP2x and MaxP2y.
  • the minimum vertical displacement of point P2 is represented by MinP2x and MinP2y.
  • the original Bezier curve may be represented as:
  • B(t) (P0, PI, P2...Pn-2, Pn-1, Pn).
  • intersection points may be represented by Pn+1, Pn+2.
  • the direction movement (towards or away from the gravity point) may be represented as:
  • New Pm x Pm x - (Pm x - minPm x )*(m 2 *100 ) when m>0
  • New Pm x Pm x - (MaxPm x - Pm x )*(m 2 *100 ) when m ⁇ 0
  • New Pm y Pm y - (Pm y - minPm y )*(m 2 *100 ) when m>0
  • New Pm y Pm y - (MaxPm y - Pm y )*(m 2 *100 ) when m ⁇ 0
  • P m represents an amount of radial displacement of a point P along the existing curve 902.
  • FIG. 9C illustrates the existing curve 902 modified using the arch mode of the gravity point drawing method to generate a second curve 908.
  • the distribution of anchor points may be changed. This mode contracts points and curves towards the gravity point 904 or expand them to the edge of the predefined space 906.
  • FIG. 10 illustrates a block diagram of an example embodiment of a graphical application 1000 used to implement the gravity point drawing method as previously described.
  • the graphical application 1000 may be used to generate new vector curves and modify existing vector curves in computer generated drawings.
  • the graphical application 1000 comprises a gravity point drawing module 1002, a node identifier module 1004, a node attribute module 1006, and a vector curve generator 1008.
  • the node identifier module 1004 identifies a node in a drawing of the graphical application 1000. For example, the node identifier module 1004 identifies the gravity point 204 of FIG. 3B as the node.
  • the node attribute module 1006 determines a size of a predefined space around the node and an intensity value associated with the node.
  • the intensity value affects a curvature of a vector curve in the predefined space.
  • the node attribute module 1006 determines the size of the predefined space 302 around the gravity point 204 in FIG. 3B.
  • the predefined space 302 may be a two-dimensional area or a three-dimensional space.
  • the predefined space 302 may be a circle or sphere or any user- defined enclosed shape.
  • the predefined space 302 does not have to be a circle, but can also include other shapes such as a box, a rectangle, or any user-drawn shapes.
  • the intensity value may include the gravitational value associated with the gravity point 204 (e.g., Gx and Gy) in FIG. 3B.
  • the vector curve generator 1008 generates the vector curve in the predefined space (e.g., 302).
  • the curvature of the vector curve may be based on the size of the predefined space (e.g., 302) and the intensity value associated with the node.
  • the curvature of the vector curve 206 is based on the size of the predefined space 302 and the gravitational value associated with the gravity point 204 (e.g., Gx and Gy) in FIG. 3B.
  • FIG. 11 illustrates a block diagram of an example embodiment of the vector curve generator 1008.
  • the vector curve generator 1008 comprises a ray mode module 1102, an arch mode module 1104, and an expand mode module 1106.
  • the ray mode module 1102 may generate a physical model vector curve having a curvature based on the intensity value associated with the node as a representation of a measure of gravitational force from the node in the drawing.
  • the curvature of the vector curve 206 is based on the gravitational value of the gravity point 204 and the size of the predefined space 302 in FIG. 3A.
  • the arch mode module 1104 may generate the vector curve relative to a line segment between a first intersection point found between the existing curve and a perimeter of the predefined space and a second intersection point found between the existing curve and the perimeter of the predefined space. For example, the arch mode module 1104 generates the vector curve 610 relative to portion of the straight- line segment 604 in FIG. 6A.
  • the expand mode module 1106 may shift points of an existing curve in the predefined space along an axis perpendicular to a line segment between a first intersection point found between the existing curve and a perimeter of the predefined space and a second intersection point found between the existing curve and the perimeter of the predefined space. For example, the expand mode module 1104 generates the second curve 824 in FIG. 8F.
  • the expand mode module 1106 may also shift points of an existing curve in the predefined space along a radial axis of the node. For example, the expand mode module 1106 generates the second curve 908 in FIG. 9C.
  • FIG. 12 is a flowchart illustrating an example embodiment of a method 1200 for generating a vector curve.
  • the operations of method 1200 may be performed by a computer system of the graphical application 1000 or modules of the graphical application 1000.
  • a node is identified in a drawing of a graphical application 1000.
  • the node includes the gravitational point as previously described.
  • the node identifier module 1004 of FIG. 10 performs this operation.
  • the size of a predefined space around the node and an intensity value associated with the node are determined.
  • the intensity value affects the curvature of a vector curve in the predefined space.
  • the node attribute module 1006 of FIG. 10 performs this operation.
  • the vector curve is generated in the predefined space.
  • the curvature of the vector curve is based on the size of the predefined space and the intensity value associated with the node in the drawing.
  • the vector curve generator 1008 of FIG. 10 performs this operation.
  • FIG. 13 is a flowchart illustrating another example embodiment of a method for generating a vector curve.
  • operation 1302 an identification of the node selected by a user of the graphical application is received.
  • the node identifier module 1004 of FIG. 10 performs this operation.
  • the size of the predefined space around the node and the intensity value associated with the node are adjusted to modify a shape of the vector curve in the predefined space.
  • the vector curve generator 1008 of FIG. 10 performs this operation.
  • the curvature of the vector curve is adjusted in the predefined space in the drawing based on the adjusted size of the predefined space and the adjusted intensity value associated with the node.
  • the predefined space comprises a region with the node as a center of the region.
  • the vector curve generator 1008 of FIG. 10 performs this operation. MODULES, COMPONENTS AND LOGIC
  • Modules may constitute either software modules (e.g., code embodied on a machine-readable medium or in a transmission signal) or hardware modules.
  • a hardware module is a tangible unit capable of performing certain operations and may be configured or arranged in a certain manner.
  • one or more computer systems e.g., a standalone, client, or server computer system
  • one or more hardware modules of a computer system e.g., a processor or a group of processors
  • software e.g., an application or application portion
  • a hardware module may be implemented mechanically or electronically.
  • a hardware module may comprise dedicated circuitry or logic that is permanently configured (e.g., as a special- purpose processor, such as a field programmable gate array (FPGA) or an application- specific integrated circuit (ASIC)) to perform certain operations.
  • a hardware module may also comprise programmable logic or circuitry (e.g., as encompassed within a general-purpose processor or other programmable processor) that is temporarily configured by software to perform certain operations. It will be appreciated that the decision to implement a hardware module mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.
  • the term "hardware module” should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired) or temporarily configured (e.g., programmed) to operate in a certain manner and/or to perform certain operations described herein.
  • hardware modules are temporarily configured (e.g., programmed)
  • each of the hardware modules need not be configured or instantiated at any one instance in time.
  • the hardware modules comprise a general-purpose processor configured using software
  • the general-purpose processor may be configured as respective different hardware modules at different times.
  • software may accordingly configure a processor to constitute a particular hardware module at one instance of time and to constitute a different hardware module at a different instance of time.
  • Hardware modules can provide information to, and receive information from, other hardware modules. Accordingly, the described hardware modules may be regarded as being communicatively coupled. Where multiple of such hardware modules exist contemporaneously, communications may be achieved through signal transmission (e.g., over appropriate circuits and buses) that connect the hardware modules. In embodiments in which multiple hardware modules are configured or instantiated at different times, communications between such hardware modules may be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple hardware modules have access. For example, one hardware module may perform an operation and store the output of that operation in a memory device to which it is communicatively coupled. A further hardware module may then, at a later time, access the memory device to retrieve and process the stored output.
  • Hardware modules may also initiate communications with input or output devices and can operate on a resource (e.g., a collection of information).
  • a resource e.g., a collection of information
  • processors may be temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors may constitute processor-implemented modules that operate to perform one or more operations or functions.
  • the modules referred to herein may, in some example embodiments, comprise processor-implemented modules.
  • the methods described herein may be at least partially processor-implemented. For example, at least some of the operations of a method may be performed by one or more processors or processor-implemented modules. The performance of certain of the operations may be distributed among the one or more processors, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the processor or processors may be located in a single location (e.g., within a home environment, an office environment or as a server farm), while in other embodiments the processors may be distributed across a number of locations.
  • the one or more processors may also operate to support performance of the relevant operations in a "cloud computing" environment or as a “software as a service” (SaaS). For example, at least some of the operations may be performed by a group of computers (as examples of machines including processors), these operations being accessible via a network and via one or more appropriate interfaces (e.g., APIs).
  • SaaS software as a service
  • Example embodiments may be implemented in digital electronic circuitry or in computer hardware, firmware, software, or in combinations of them.
  • Example embodiments may be implemented using a computer program product, (e.g., a computer program tangibly embodied in an information carrier, e.g., in a machine -readable medium for execution by, or to control the operation of, data processing apparatus, e.g., a programmable processor, a computer, or multiple computers).
  • a computer program product e.g., a computer program tangibly embodied in an information carrier, e.g., in a machine -readable medium for execution by, or to control the operation of, data processing apparatus, e.g., a programmable processor, a computer, or multiple computers.
  • a computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, subroutine, or other unit suitable for use in a computing environment.
  • a computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network.
  • operations may be performed by one or more programmable processors executing a computer program to perform functions by operating on input data and generating output.
  • Method operations can also be performed by, and apparatus of example embodiments may be implemented as, special purpose logic circuitry (e.g., a FPGA or an ASIC).
  • a computing system can include clients and servers.
  • a client and a server are generally remote from each other and typically interact through a communication network.
  • the relationship of client and server arises by virtue of computer programs running on the respective computers and having a client- server relationship to each other.
  • both hardware and software architectures merit consideration. Specifically, it will be appreciated that the choice of whether to implement certain functionality in permanently configured hardware (e.g., an ASIC), in temporarily configured hardware (e.g., a
  • FIG. 14 is a block diagram of a machine in the example form of a computer system 1400 within which instructions (e.g., 1424) for causing the machine to perform any one or more of the methodologies discussed herein may be executed.
  • the machine operates as a standalone device or may be connected (e.g., networked) to other machines.
  • the machine may operate in the capacity of a server or a client machine in a server-client network environment, or as a peer machine in a peer- to-peer (or distributed) network environment.
  • the machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a network router, switch or bridge, or any machine capable of executing instructions (e.g., 1424- sequential or otherwise) that specify actions to be taken by that machine.
  • PC personal computer
  • PDA Personal Digital Assistant
  • STB set-top box
  • WPA Personal Digital Assistant
  • a cellular telephone e.g., 1424- sequential or otherwise
  • the example computer system 1400 includes a processor 1402 (e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both), a main memory 1404 and a static memory 1406, which communicate with each other via a bus 1408.
  • the computer system 1400 may further include a video display unit 1410 (e.g., a liquid crystal display (LCD) or a cathode ray tube
  • the computer system 1400 also includes an alphanumeric input device 1412 (e.g., a keyboard), a user interface (UI) navigation (or cursor control) device 1414 (e.g., a mouse), a disk drive unit 1416, a signal generation device 1418 (e.g., a speaker) and a network interface device 1420.
  • UI user interface
  • UI cursor control
  • the disk drive unit 1416 includes a machine-readable medium 1422 on which is stored one or more sets of data structures and instructions 1424 (e.g., software) embodying or utilized by any one or more of the methodologies or functions described herein.
  • the instructions 1424 may also reside, completely or at least partially, within the main memory 1404 and/or within the processor 1402 during execution thereof by the computer system 1400, the main memory 1404 and the processor 1402 also constituting machine -readable media.
  • the instructions 1424 may also reside, completely or at least partially, within the static memory 1406.
  • machine-readable medium 1422 is shown in an example embodiment to be a single medium, the term “machine -readable medium” may include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more instructions 1424 or data structures.
  • the term “machine-readable medium” shall also be taken to include any tangible medium that is capable of storing, encoding or carrying instructions (e.g., 1424) for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present embodiments, or that is capable of storing, encoding or carrying data structures utilized by or associated with such instructions (e.g., 1424).
  • machine-readable medium shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media.
  • machine-readable media include non- volatile memory, including by way of example semiconductor memory devices (e.g., Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), and flash memory devices); magnetic disks such as internal hard disks and removable disks; magneto-optical disks; compact discread-only memory (CD-ROM) and digital versatile disc (or digital video disc) read-only memory (DVD-ROM) disks.
  • semiconductor memory devices e.g., Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), and flash memory devices
  • EPROM Erasable Programmable Read-Only Memory
  • EEPROM Electrically Erasable Programmable Read-Only Memory
  • flash memory devices e.g., Electrically Erasable Programmable Read-Only Memory (EEPROM
  • the instructions 1424 may further be transmitted or received over a communications network 1426 using a transmission medium.
  • the instructions 1424 may be transmitted using the network interface device 1420 and any one of a number of well-known transfer protocols (e.g., HTTP).
  • Examples of communication networks 1426 include a LAN, a WAN, the Internet, mobile telephone networks, POTS networks, and wireless data networks (e.g., WiFi and WiMax networks).
  • the term "transmission medium” shall be taken to include any intangible medium capable of storing, encoding, or carrying instructions (e.g., 1424) for execution by the machine, and includes digital or analog communication signals or other intangible media to facilitate communication of such software.
  • inventive subject matter may be referred to herein, individually and/or collectively, by the term "invention" merely for convenience and without intending to voluntarily limit the scope of this application to any single invention or inventive concept if more than one is in fact disclosed.
  • inventive concept merely for convenience and without intending to voluntarily limit the scope of this application to any single invention or inventive concept if more than one is in fact disclosed.
  • specific embodiments have been illustrated and described herein, it should be appreciated that any arrangement calculated to achieve the same purpose may be substituted for the specific embodiments shown.
  • This disclosure is intended to cover any and all adaptations or variations of several embodiments. Combinations of the above embodiments and other embodiments not specifically described herein, will be apparent to those of skill in the art upon reviewing the above description.

Abstract

A system and method of a gravity point drawing that simulate a physical model to draw or modify vector curves. A node is identified in a drawing of a graphical application. A size of a predefined space around the node and an intensity value associated with the node are determined. The intensity value affects the curvature of a vector curve in the predefined space. The vector curve is generated in the predefined space. The curvature of the vector curve is based on the size of the predefined space and the intensity value associated with the node in the drawing.

Description

GRAVITY POINT DRAWING METHOD
TECHNICAL FIELD
[0001] The present application relates generally to the technical field of computer- generated drawings, and, in various embodiments, to systems and methods of gravity point drawing.
BACKGROUND
[0002] Computer graphics applications can generate vector curves that can be manipulated to modify a shape of the curve. Bezier curves are parametric curves commonly used in computer graphics that provide a method to transfer geometric curves into a programming model. In vector graphics, Bezier curves are used to model smooth curves that can be scaled indefinitely using anchors and handlers throughout the curves. Bezier curves are commonly defined in terms of four points. Two of these points are the endpoints, also referred to as anchor points. The other two points are known as control points, also referred to as handles, one associated with each anchor point. The curve extends from anchor point to anchor point. The line between an anchor point and its control point determines the slope, or derivative, of the curve at the anchor point. The further the control point is from the anchor point, the further the curve wants to go along the straight line before curving off towards the other anchor point.
[0003] As such, a user would have to manipulate multiple anchor points and control points in order to change the shape of the curves of a geometric shape. For example, FIG. 1A illustrates an original computer graphic shape 100. FIG. IB illustrates a target computer graphic shape 102. FIG. 1C illustrates the original computer graphic shape 100 with anchor points 104 and control points 106 that the user would have to manipulate, one by one, to modify the curvature of the original computer graphic shape 100. Because each anchor point and control point has to be manually moved in a one by one fashion, inconsistency can be accumulated during the modification of the curvature. Further adjustment and correction of the anchor points and control points may be needed to generate the target computer graphic shape 102. BRIEF DESCRIPTION OF THE DRAWINGS
[0004] Some embodiments of the present disclosure are illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like reference numbers indicate similar elements and in which:
[0005] FIG. 1A illustrates a prior art example of an original geometric shape to be modified;
[0006] FIG. IB illustrates a prior art example of a target geometric shape.
[0007] FIG. 1C illustrates a prior art example of anchor points and handlers to be manipulated.
[0008] FIG. 2A illustrates an example embodiment of a modification process of a vector curve.
[0009] FIG. 2B illustrates another example embodiment of a
modification process of a vector curve.
[00010] FIG. 3 A illustrates an example embodiment of a model for a ray mode modification process of a vector curve.
[00011] FIG. 3B illustrates another example embodiment of a model for a ray mode modification process of a vector curve.
[00012] FIG. 3C illustrates an example embodiment of an algorithm for the ray mode modification process of the vector curve of FIG. 3B.
[00013] FIG. 4A illustrates an example embodiment of a model for a ray mode modification process of a vector curve.
[00014] FIG. 4B illustrates an example embodiment of an algorithm for a ray mode modification process of the vector curve of FIG. 4A.
[00015] FIG. 5 illustrates an example embodiment of a sequence for generating vector curves using a ray mode modification process.
[00016] FIG. 6A illustrates an example embodiment of a model for an arch mode modification process of a new vector curve.
[00017] FIG. 6B illustrates an example embodiment of an algorithm for an arch mode modification process of the vector curve of FIG. 6A.
[00018] FIG. 7 A illustrates another example embodiment of a model for an arch mode modification process of a new vector curve.
[00019] FIG. 7B illustrates an example embodiment of an algorithm for an arch mode modification process of the vector curve of FIG. 7A. [00020] FIGS. 8A-8F illustrate example embodiments of a model for an arch mode modification process of an existing vector curve.
[00021] FIGS. 9A-9C illustrate example embodiments of a model for an expand mode modification process of a new vector curve.
[00022] FIG. 10 illustrates a block diagram of an example embodiment of a graphical application.
[00023] FIG. 11 illustrates a block diagram of an example embodiment of a vector curve generator.
[00024] FIG. 12 is a flowchart illustrating an example embodiment of a method for generating a vector curve.
[00025] FIG. 13 is a flowchart illustrating another example embodiment of a method for generating a vector curve.
[00026] FIG. 14 shows a diagrammatic representation of a machine in the example form of a computer system within which a set of instructions may be executed to cause the machine to perform any one or more of the methodologies discussed herein.
DETAILED DESCRIPTION
[00027] The description that follows includes illustrative systems, methods, techniques, instruction sequences, and computing machine program products that embody illustrative embodiments. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide an understanding of various embodiments of the inventive subject matter.
It will be evident, however, to those skilled in the art that embodiments of the inventive subject matter may be practiced without these specific details. In general, well-known instruction instances, protocols, structures, and techniques have not been shown in detail.
[00028] The present disclosure describes a system and method of a gravity point drawing that simulates a physical model to draw and modify vector curves. In an example embodiment, a node is identified in a drawing of a graphical application. The size of a predefined space around the node and an intensity value associated with the node are determined. The intensity value affects the curvature of a vector curve in the predefined space. The vector curve is generated in the predefined space. The curvature of the vector curve is based on the size of the predefined space and the intensity value associated with the node in the drawing.
[00029] In another example embodiment, the identification of the node selected by a user of the graphical application is received. The size of the predefined space around the node and the intensity value associated with the node are adjusted to modify the shape of the vector curve in the predefined space. The curvature of the vector curve is adjusted in the predefined space in the drawing based on the adjusted size of the predefined space and the adjusted intensity value associated with the node. The predefined space comprises a region with the node as the center of the region.
[00030] In another example embodiment, a vector curve is generated using a physical model vector curve. This physical model vector curve has a curvature based on the intensity value associated with the node and represents the measure of gravitational forces from the node in the drawing in a ray mode.
[00031] In another example embodiment, a vector curve is generated relative to a line segment between a first intersection point found between the existing curve and a perimeter of the predefined space and a second intersection point found between the existing curve and the perimeter of the predefined space in an arch mode.
[00032] In another example embodiment, points of an existing curve are shifted in the predefined space along an axis perpendicular to a line segment between a first intersection point found between the existing curve and a perimeter of the predefined space and a second intersection point found between the existing curve and the perimeter of the predefined space in an arch mode.
[00033] In another example embodiment, points of an existing curve are shifted in the predefined space along a radial axis of the node in an expand mode.
[00034] In another example embodiment, the vector curve is part of a curve in the drawing. The vector curve comprises a portion of the curve in the predefined space. The node in the drawing does not affect portions of the curve outside the predefined space.
[00035] In another example embodiment, the intensity value associated with the node is increased to increase the curvature of the vector curve towards the node in the predefined space. The intensity value associated with the node is decreased to decrease the curvature of the vector curve towards the node in the predefined space. The curvature of the vector curve is adjusted away from the node in the predefined space when the intensity value is negative.
[00036] In another example embodiment, a first node and a second node are identified in the drawing. A first size of a first predefined space around the first node and a first intensity value associated with the first node are determined. The first intensity value affects the curvature of a first vector curve in the first predefined space. A second size of a second predefined space around the second node and a second intensity value associated with the second node are
determined. The second intensity value affects the curvature of a second vector curve in the second predefined space. The first predefined space intersects the second predefined space to form a common predefined space. A common vector curve is generated in the common predefined space. The curvature of the common vector curve is based on the size of the first and second predefined spaces and the intensity value associated with the first and second nodes.
[00037] In another example embodiment, a system comprises a memory coupled to a processor. The memory stores a graphical application. The processor comprises a node identifier, a node attribute module, and a vector curve generator. The node identifier identifies a node in a drawing of the graphical application. The node attribute module determines a size of a predefined space around the node and an intensity value associated with the node. The intensity value affects the curvature of a vector curve in the predefined space. The vector curve generator generates the vector curve in the predefined space. The curvature of the vector curve is based on the size of the predefined space and the intensity value associated with the node.
[00038] In another example embodiment, the node identifier is further configured to receive the identification of the node selected by a user of the graphical application, to adjust both the size of the predefined space around the node and the intensity value associated with the node needed to modify the shape of the vector curve in the predefined space, and to adjust the curvature of the vector curve in the predefined space in the drawing which is based on the adjusted size of the predefined space and the adjusted intensity value associated with the node.
[00039] In another example embodiment, the vector curve generator comprises a ray mode module configured to generate a physical model vector curve having a curvature based on the intensity value associated with the node as a representation of a measure of gravitational force from the node in the drawing.
[00040] In another example embodiment, the vector curve generator comprises an arch mode module configured to generate the vector curve relative to a line segment between a first intersection point found between the existing curve and a perimeter of the predefined space and a second intersection point found between the existing curve and the perimeter of the predefined space.
[00041] In another example embodiment, the vector curve generator comprises an arch mode module configured to shift points of an existing curve in the predefined space along an axis perpendicular to a line segment between a first intersection point found between the existing curve and a perimeter of the predefined space and a second intersection point found between the existing curve and the perimeter of the predefined space.
[00042] In another example embodiment, the vector curve generator comprises an arch mode module configured to shift points of an existing curve in the predefined space along a radial axis of the node.
[00043] In another example embodiment, the node attribute module is configured to increase the intensity value associated with the node that increases a curvature of the vector curve towards the node in the predefined space, to decrease the intensity value associated with the node that decreases a curvature of the vector curve towards the node in the predefined space. The vector curve generator is configured to adjust the curvature of the vector curve away from the node in the predefined space when the intensity value is negative.
[00044] In another example embodiment, the node identifier is configured to identify a first node and a second node in the drawing. The node attribute module is configured to determine a first size of a first predefined space around the first node, and a first intensity value associated with the first node. The first intensity value affects a curvature of a first vector curve in the first predefined space. The node attribute model is also configured to determine a second size of a second predefined space around the second node, and a second intensity value associated with the second node. The second intensity value affects a curvature of a second vector curve in the second predefined space. The first predefined space intersects the second predefined space to form a common predefined space. The vector curve generator is configured to generate a common vector curve in the common predefined space. A curvature of the common vector curve is based on the sizes of the first and second predefined spaces and the intensity value associated with the first and second nodes in the drawing.
[00045] In another example embodiment, a non-transitory machine- readable storage device may store a set of instructions that, when executed by at least one processor, causes the at least one processor to perform the method operations discussed within the present disclosure.
[00046] FIG. 2A illustrates an example embodiment of a ray mode modification process of a vector curve. The ray mode includes a single fixed point on straight line and is based on classical physics models. For example, an object 202 orbits a gravitational point (e.g., gravity point 204). As the object 202 moves closer to the gravity point 204, it may be affected. The object 202 may change its direction slowly. The path of the object 202 generates a smooth curve 206.
[00047] The variables, mass and distance, can affect the curvature of the path. For example, increasing the mass of the gravity point 204 may generate a sharp curve 208 for the object 202.
[00048] Inversely, reducing the relative distance between the object 202 and the gravity point 204 may generate an even sharper curve 210 as illustrated in FIG.2B. As such, two example parameters in the gravity point drawing method used to control the curves include the intensity of the gravity point 204 and the relative distance between the object 202 and the gravity point 204.
[00049] In a physical model, the affected range of gravity force is unlimited. In other words, as the distance between the object 202 and the gravity point 204 increases, the gravity force between the object 202 and the gravity point 204 approaches zero. In an example embodiment of the gravity point drawing method, a parameter is generated to limit the affected range. FIG. 3 A illustrates a predefined space 302 that can be adjusted to limit the effect of the gravity point 204 on the object 202. As such, the path of the object 202 is not affected outside the predefined space 302. In one embodiment, the predefined space 302 comprises a region with the gravity point 204 as the center of the region. Similarly, the path of the object 202 is affected by the gravity point 204 only within the predefined space 302.
[00050] FIG. 3B illustrates a model for a ray mode modification process of a vector curve. When the object 202 moves into the predefined space 302 at geographic location (Px, Py), the object 202 starts to gain acceleration by gravity forces (Gx, Gy) from the gravity point 204. The acceleration of the object 202 at geographic location (Px, Py) may be separated into two directional components: a first direction component ax along the original velocity, and a second direction ay component vertical to the first direction component ax. The vertical acceleration ay changes the path of the object 202. As long as the object 202 stays within the predefined space 302, the path of the object 202 generates a curve. The curvature may be affected by parameters as further described below.
[00051] FIG. 3C illustrates an example embodiment of an algorithm for the ray mode modification process of the vector curve of FIG. 3B. An example of the ray mode modification process of a vector curve is illustrated in FIG. 3C where the square of the mass "m" of the object 202 makes the acceleration nonlinear. Increasing the mass "m" of the object 202 adds acceleration "a" evenly. Reducing the relative distance "d" between the object 202 and the gravity point 204 adds different acceleration based on the position of each point along the path of the object 202.
[00052] The object 202 may move into an area covered by multiple gravity points. For example, FIG. 4A illustrates a model for a ray mode modification process of a vector curve for the object 202. The object 202 is affected by two gravity points 204 and 402 when the object 202 is in the corresponding predefined space 302 and 404 of gravity points 204 and 402. The acceleration (a and a') from each gravity point 204 and 402 is broken down into horizontal direction (ax and ax ) and vertical direction (ay and ay ). The composite direction is then calculated based on the combined original directions (ax and ax ) and vertical direction (ay and ay ).
[00053] In another embodiment, the intensity associated with the gravity point 204 may be reversed. This reverse gravity point method may be referred to as an inverse option. For example, the distribution of gravity force can be inversed inside the predefined space 302. In other words, points with more distance from the gravity point 204 receive more gravity force than points closer to the gravity point 204. FIG. 4B illustrates an example embodiment of an algorithm for the reverse gravity point method.
[00054] FIG. 5 illustrates an example embodiment of a sequence 500 for generating vector curves using a ray mode modification process as previously described. In drawing 502, three straight lines 503 are drawn. In drawing 504, gravity points 510 and 512 are placed within their respective predefined spaces 514, 516. The shape or area of the predefined spaces 514, 516 can be adjusted to change the affected range. The mass of (or intensity associated with) the gravity points 510 and 512 may also be adjusted. For example, a positive mass would represent attractive force while a negative mass would represent a repulsive force. Drawing 506 illustrates the effects of the gravity point drawing method on the three lines 503. Drawing 508 illustrates an example of an end result of a computer graphics drawing using the gravity point drawing method.
[00055] In contrast to the traditional anchors and handles based methods, the gravity point drawing method is easier to use. Adjusting one gravity point (e.g., 510, 512) in the gravity point drawing method would be the equivalent of adjusting multiple anchor points and handlers as illustrated in the example of FIG. 1C. Furthermore, the relative curvature of the paths is consistently maintained between the three lines 503 in FIG. 5 when adjusting the gravity points 510 and 512.
[00056] In accordance with another example embodiment, the gravity point drawing method includes an arch mode. FIG. 6A illustrates an example of an arch mode where two points Po and Pi are fixed on a single straight line 602. The portion 604 of the straight line 602 is within a predefined space 606 and is therefore affected by a gravity point 608 associated with the predefined space 606.
[00057] In the arch mode, the acceleration as previously described is not a parameter in this case. The arch mode produces a vector curve 610 defined by three points: Po, Pi, and P2. Po and Pi are two points of intersection between the straight line 602 and the predefined space 606 which are associated with the gravity point 608. P2 is a point along the vector curve 610 closest to the gravity point 608. In other words, P0, Pi, and P2 make up a Quadratic Bezier curve. FIG. 6B illustrates an example embodiment of an algorithm for the arch mode modification process of the vector curve of FIG. 6A where P2X and P2y represent geographic coordinates of the point P2, B(t) represents the offset relative to the portion 604 of the straight line 602 to generate the vector curve 610. [00058] FIG. 7A illustrates another example embodiment of a model for an arch mode modification process of a new vector curve 710. The arch mode produces a new vector curve 710 defined by three points: Po, Pi, and P2. FIG. 7A illustrates an example of an arch mode where two points P0 and Pi are fixed on a single straight line 702. The portion 704 of the line 702 between Po and Pi is within a predefined space 706 and is, therefore, affected by a gravity point 708 associated with the predefined space 706. Because points Po and Pi are user- defined and do not correspond to intersection points between the straight line 702 and the predefined space 706, the arch mode in FIG. 7 A illustrates an asymmetric mode where the intersection points Po and Pi are not defined by the predefined space 706, and the horizontal movement of the gravity point 708 distorts the arch shape of the new vector curve 710 between intersection points Po and Pi.
[00059] FIG. 7B illustrates an example embodiment of an algorithm for the arch mode modification process of the vector curve 710 of FIG. 7A where P2X and P2y represent geographic coordinates of the point P2, B(t) represents the offset relative to the portion 704 of the straight line 702 to generate the vector curve 710.
[00060] FIGS. 8A-8E illustrate example embodiments of a model for an arch mode modification process for existing vector curves. FIG. 8 A illustrates an example of a vector curve 802 with multiple anchor points P0, Pi, P2, P3, and P4, and respective handles 804, 806, 808, 810, and 812. In order to change the shape of the vector curve 802, anchor points Po, Pi, P2, P3, P4, and respective handles 804, 806, 808, 810, and 812 would all have to be manipulated in a traditional method.
[00061] FIG. 8B illustrates where the example vector curve 802 intersects a predefined space 814 between two intersection points: P5 and P6. The two intersection points P5 and P6 are added on the vector curve 802 as new anchor points P0, Pi, P2, P3, and P4. A straight line 816 between the two intersection points P5 and P6 forms the direction of a horizontal line. Anchors points Po, Pi, P2, P3, and P4 are located inside the predefined space 814.
[00062] FIG. 8C illustrates how the relative horizontal distances between each anchor point to the gravity point 818 associated with the predefined space 814 decides the weight of vertical movement. For example, anchor point Pi has a horizontal distance dl from the gravity point 818. Anchor point P2 has a horizontal distance d2 from the gravity point 818. Anchor point P3 has a horizontal distance d3 from the gravity point 818. Because the horizontal distance dl is greater than the horizontal distance d2, the vertical displacement of anchor point P2 is greater than the vertical displacement of anchor point Pi. Similarly, because the horizontal distance d3 is greater than the horizontal distance d2, the vertical displacement of anchor point P2 is still greater than the vertical displacement of anchor point P3.
[00063] FIG. 8D illustrates how the relative horizontal distance between each control point to the gravity point 818 decides the weight of vertical movement. For example, control point 820 has a horizontal distance al from the gravity point 818. Control point 822 has a horizontal distance a2 from the gravity point 818. Because the horizontal distance al is greater than the horizontal distance a2, the vertical displacement of control point 822 is much greater than the vertical displacement of control point 820.
[00064] FIG. 8E illustrates a mathematical model for vertical
displacement of points along the existing vector curve 802. The maximum vertical displacement of point P2 is represented by MaxP2x and MaxP2y. The minimum vertical displacement of point P2 is represented by MinP2x and MinP2y.
[00065] The original Bezier curve may be represented as:
B(t)=(P0, PI, P2...Pn-2, Pn-1, Pn).
[00066] The intersection points may be represented by Pn+1, Pn+2.
[00067] The direction of the horizontal line may be represented as:
tag(a): (Pn+lx - Pn+2x)/(Pn+ly-Pn+2y)
[00068] The anchor points and control points vertical movement may be represented as:
New Pmx = Pmx - (Pmx - minPmx)*(m2*100 ) when m>0
New Pmx = Pmx - (MaxPmx - Pmx)*(m2*100 ) when m<0
New Pmy = Pmy - (Pmy - minPmy)*(m2*100 ) when m>0
New Pmy = Pmy - (MaxPmy - Pmy)*(m2*100 ) when m<0
where Pm represents an amount of vertical displacement of a point P along the vector curve 802.
[00069] In this arch mode, the vector curve 802 is bent away or closer to the horizontal direction line as previously defined. However, the curvature of the original vector curve 802 will be preserved since the vertical displacement is adjusted respectively along each point of the vector curve 802 in the predefined space 814.
[00070] FIG. 8F illustrates the original vector curve 802 modified using the arch mode of the gravity point method drawing to generate a second curve 824.
[00071] FIG. 9A illustrates an example embodiment of a model for an expand mode modification process of an existing vector curve. The expand mode is similar to the previously described arch mode. Similarly, an existing curve 902 intersects with a predefined space 906 associated with a gravity point 904. The existing curve 902 intersects the edge of the predefined space 906 at two intersection points: P5 and P6. The two points P5 and P6 are added to the existing curve 902 as new anchor points.
[00072] In the present expand mode, there is no horizontal line. Instead, the respective distance between the anchor points and control points inside the predefined space 906 and the gravity point 904 decide the amount of radial displacement. In this mode, the displacement movement is toward or away from the gravity point 904 along a radial axis of the gravity point 904.
[00073] For example, anchor point PI has a radial distance of dl from the gravity point 904. Anchor point P2 has a radial distance of d2 from the gravity point 904 and anchor point P3 has a radial distance of d3 from the gravity point 904. Because the radial distance d2 of P2 is less than the radial distance dl of PI, the displacement of P2 is greater than PI.
[00074] FIG. 9B illustrates a mathematical model for radial displacement of points of the existing curve 902. The maximum vertical displacement of point P2 is represented by MaxP2x and MaxP2y. The minimum vertical displacement of point P2 is represented by MinP2x and MinP2y.
[00075] The original Bezier curve may be represented as:
B(t)=(P0, PI, P2...Pn-2, Pn-1, Pn).
[00076] The intersection points may be represented by Pn+1, Pn+2.
[00077] The direction movement (towards or away from the gravity point) may be represented as:
tag(a): (Gx-Pmx)/(Gy-Pmy) [00078] The anchor points and control points radial displacements may be represented as:
New Pmx = Pmx - (Pmx - minPmx)*(m2*100 ) when m>0
New Pmx = Pmx - (MaxPmx - Pmx)*(m2*100 ) when m<0
New Pmy = Pmy - (Pmy - minPmy)*(m2*100 ) when m>0
New Pmy = Pmy - (MaxPmy - Pmy)*(m2*100 ) when m<0
where Pm represents an amount of radial displacement of a point P along the existing curve 902.
[00079] FIG. 9C illustrates the existing curve 902 modified using the arch mode of the gravity point drawing method to generate a second curve 908. In this mode, the distribution of anchor points may be changed. This mode contracts points and curves towards the gravity point 904 or expand them to the edge of the predefined space 906.
[00080] As such, by changing the size of the predefined space, a user can choose which part of a curve needs to receive gravity force. Furthermore, by moving a gravity point, a user can choose which part of the curve receives effects.
[00081] FIG. 10 illustrates a block diagram of an example embodiment of a graphical application 1000 used to implement the gravity point drawing method as previously described. The graphical application 1000 may be used to generate new vector curves and modify existing vector curves in computer generated drawings.
[00082] In one embodiment, the graphical application 1000 comprises a gravity point drawing module 1002, a node identifier module 1004, a node attribute module 1006, and a vector curve generator 1008.
[00083] The node identifier module 1004 identifies a node in a drawing of the graphical application 1000. For example, the node identifier module 1004 identifies the gravity point 204 of FIG. 3B as the node.
[00084] The node attribute module 1006 determines a size of a predefined space around the node and an intensity value associated with the node. The intensity value affects a curvature of a vector curve in the predefined space. For example, the node attribute module 1006 determines the size of the predefined space 302 around the gravity point 204 in FIG. 3B. The predefined space 302 may be a two-dimensional area or a three-dimensional space. In another embodiment, the predefined space 302 may be a circle or sphere or any user- defined enclosed shape. In other words, the predefined space 302 does not have to be a circle, but can also include other shapes such as a box, a rectangle, or any user-drawn shapes. The intensity value may include the gravitational value associated with the gravity point 204 (e.g., Gx and Gy) in FIG. 3B.
[00085] The vector curve generator 1008 generates the vector curve in the predefined space (e.g., 302). The curvature of the vector curve may be based on the size of the predefined space (e.g., 302) and the intensity value associated with the node. For example, the curvature of the vector curve 206 is based on the size of the predefined space 302 and the gravitational value associated with the gravity point 204 (e.g., Gx and Gy) in FIG. 3B.
[00086] FIG. 11 illustrates a block diagram of an example embodiment of the vector curve generator 1008. The vector curve generator 1008 comprises a ray mode module 1102, an arch mode module 1104, and an expand mode module 1106.
[00087] The ray mode module 1102 may generate a physical model vector curve having a curvature based on the intensity value associated with the node as a representation of a measure of gravitational force from the node in the drawing. For example, the curvature of the vector curve 206 is based on the gravitational value of the gravity point 204 and the size of the predefined space 302 in FIG. 3A.
[00088] The arch mode module 1104 may generate the vector curve relative to a line segment between a first intersection point found between the existing curve and a perimeter of the predefined space and a second intersection point found between the existing curve and the perimeter of the predefined space. For example, the arch mode module 1104 generates the vector curve 610 relative to portion of the straight- line segment 604 in FIG. 6A.
[00089] The expand mode module 1106 may shift points of an existing curve in the predefined space along an axis perpendicular to a line segment between a first intersection point found between the existing curve and a perimeter of the predefined space and a second intersection point found between the existing curve and the perimeter of the predefined space. For example, the expand mode module 1104 generates the second curve 824 in FIG. 8F.
[00090] The expand mode module 1106 may also shift points of an existing curve in the predefined space along a radial axis of the node. For example, the expand mode module 1106 generates the second curve 908 in FIG. 9C.
[00091] FIG. 12 is a flowchart illustrating an example embodiment of a method 1200 for generating a vector curve. The operations of method 1200 may be performed by a computer system of the graphical application 1000 or modules of the graphical application 1000. At operation 1202, a node is identified in a drawing of a graphical application 1000. The node includes the gravitational point as previously described. In one embodiment, the node identifier module 1004 of FIG. 10 performs this operation.
[00092] At operation 1204, the size of a predefined space around the node and an intensity value associated with the node are determined. The intensity value affects the curvature of a vector curve in the predefined space. In one embodiment, the node attribute module 1006 of FIG. 10 performs this operation.
[00093] At operation 1206, the vector curve is generated in the predefined space. The curvature of the vector curve is based on the size of the predefined space and the intensity value associated with the node in the drawing. In one embodiment, the vector curve generator 1008 of FIG. 10 performs this operation.
[00094] FIG. 13 is a flowchart illustrating another example embodiment of a method for generating a vector curve. At operation 1302, an identification of the node selected by a user of the graphical application is received. In one embodiment, the node identifier module 1004 of FIG. 10 performs this operation.
[00095] At operation 1304, the size of the predefined space around the node and the intensity value associated with the node are adjusted to modify a shape of the vector curve in the predefined space. In one embodiment, the vector curve generator 1008 of FIG. 10 performs this operation.
[00096] At operation 1306, the curvature of the vector curve is adjusted in the predefined space in the drawing based on the adjusted size of the predefined space and the adjusted intensity value associated with the node. The predefined space comprises a region with the node as a center of the region. In one embodiment, the vector curve generator 1008 of FIG. 10 performs this operation. MODULES, COMPONENTS AND LOGIC
[00097] Certain embodiments are described herein as including logic or a number of components, modules, or mechanisms. Modules may constitute either software modules (e.g., code embodied on a machine-readable medium or in a transmission signal) or hardware modules. A hardware module is a tangible unit capable of performing certain operations and may be configured or arranged in a certain manner. In example embodiments, one or more computer systems (e.g., a standalone, client, or server computer system) or one or more hardware modules of a computer system (e.g., a processor or a group of processors) may be configured by software (e.g., an application or application portion) as a hardware module that operates to perform certain operations as described herein.
[00098] In various embodiments, a hardware module may be implemented mechanically or electronically. For example, a hardware module may comprise dedicated circuitry or logic that is permanently configured (e.g., as a special- purpose processor, such as a field programmable gate array (FPGA) or an application- specific integrated circuit (ASIC)) to perform certain operations. A hardware module may also comprise programmable logic or circuitry (e.g., as encompassed within a general-purpose processor or other programmable processor) that is temporarily configured by software to perform certain operations. It will be appreciated that the decision to implement a hardware module mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.
[00099] Accordingly, the term "hardware module" should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired) or temporarily configured (e.g., programmed) to operate in a certain manner and/or to perform certain operations described herein. Considering embodiments in which hardware modules are temporarily configured (e.g., programmed), each of the hardware modules need not be configured or instantiated at any one instance in time. For example, where the hardware modules comprise a general-purpose processor configured using software, the general-purpose processor may be configured as respective different hardware modules at different times. For example, software may accordingly configure a processor to constitute a particular hardware module at one instance of time and to constitute a different hardware module at a different instance of time.
[000100] Hardware modules can provide information to, and receive information from, other hardware modules. Accordingly, the described hardware modules may be regarded as being communicatively coupled. Where multiple of such hardware modules exist contemporaneously, communications may be achieved through signal transmission (e.g., over appropriate circuits and buses) that connect the hardware modules. In embodiments in which multiple hardware modules are configured or instantiated at different times, communications between such hardware modules may be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple hardware modules have access. For example, one hardware module may perform an operation and store the output of that operation in a memory device to which it is communicatively coupled. A further hardware module may then, at a later time, access the memory device to retrieve and process the stored output.
Hardware modules may also initiate communications with input or output devices and can operate on a resource (e.g., a collection of information).
[000101] The various operations of example methods described herein may be performed, at least partially, by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors may constitute processor-implemented modules that operate to perform one or more operations or functions. The modules referred to herein may, in some example embodiments, comprise processor-implemented modules.
[000102] Similarly, the methods described herein may be at least partially processor-implemented. For example, at least some of the operations of a method may be performed by one or more processors or processor-implemented modules. The performance of certain of the operations may be distributed among the one or more processors, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the processor or processors may be located in a single location (e.g., within a home environment, an office environment or as a server farm), while in other embodiments the processors may be distributed across a number of locations. [000103] The one or more processors may also operate to support performance of the relevant operations in a "cloud computing" environment or as a "software as a service" (SaaS). For example, at least some of the operations may be performed by a group of computers (as examples of machines including processors), these operations being accessible via a network and via one or more appropriate interfaces (e.g., APIs).
ELECTRONIC APPARATUS AND SYSTEM
[000104] Example embodiments may be implemented in digital electronic circuitry or in computer hardware, firmware, software, or in combinations of them. Example embodiments may be implemented using a computer program product, (e.g., a computer program tangibly embodied in an information carrier, e.g., in a machine -readable medium for execution by, or to control the operation of, data processing apparatus, e.g., a programmable processor, a computer, or multiple computers).
[000105] A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, subroutine, or other unit suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network.
[000106] In example embodiments, operations may be performed by one or more programmable processors executing a computer program to perform functions by operating on input data and generating output. Method operations can also be performed by, and apparatus of example embodiments may be implemented as, special purpose logic circuitry (e.g., a FPGA or an ASIC).
[000107] A computing system can include clients and servers. A client and a server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client- server relationship to each other. In embodiments deploying a programmable computing system, it will be appreciated that both hardware and software architectures merit consideration. Specifically, it will be appreciated that the choice of whether to implement certain functionality in permanently configured hardware (e.g., an ASIC), in temporarily configured hardware (e.g., a
combination of software and a programmable processor), or a combination of permanently and temporarily configured hardware may be a design choice.
Below, are set out hardware (e.g., machine) and software architectures that may be deployed in various example embodiments.
EXAMPLE MACHINE ARCHITECTURE AND MACHINE-READABLE MEDIUM
[000108] FIG. 14 is a block diagram of a machine in the example form of a computer system 1400 within which instructions (e.g., 1424) for causing the machine to perform any one or more of the methodologies discussed herein may be executed. In alternative embodiments, the machine operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the machine may operate in the capacity of a server or a client machine in a server-client network environment, or as a peer machine in a peer- to-peer (or distributed) network environment. The machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a network router, switch or bridge, or any machine capable of executing instructions (e.g., 1424- sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term "machine" shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions (e.g., 1424) to perform any one or more of the
methodologies discussed herein.
[000109] The example computer system 1400 includes a processor 1402 (e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both), a main memory 1404 and a static memory 1406, which communicate with each other via a bus 1408. The computer system 1400 may further include a video display unit 1410 (e.g., a liquid crystal display (LCD) or a cathode ray tube
(CRT)). The computer system 1400 also includes an alphanumeric input device 1412 (e.g., a keyboard), a user interface (UI) navigation (or cursor control) device 1414 (e.g., a mouse), a disk drive unit 1416, a signal generation device 1418 (e.g., a speaker) and a network interface device 1420. MACHINE-READABLE MEDIUM
[000110] The disk drive unit 1416 includes a machine-readable medium 1422 on which is stored one or more sets of data structures and instructions 1424 (e.g., software) embodying or utilized by any one or more of the methodologies or functions described herein. The instructions 1424 may also reside, completely or at least partially, within the main memory 1404 and/or within the processor 1402 during execution thereof by the computer system 1400, the main memory 1404 and the processor 1402 also constituting machine -readable media. The instructions 1424 may also reside, completely or at least partially, within the static memory 1406.
[000111] While the machine-readable medium 1422 is shown in an example embodiment to be a single medium, the term "machine -readable medium" may include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more instructions 1424 or data structures. The term "machine-readable medium" shall also be taken to include any tangible medium that is capable of storing, encoding or carrying instructions (e.g., 1424) for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present embodiments, or that is capable of storing, encoding or carrying data structures utilized by or associated with such instructions (e.g., 1424). The term "machine-readable medium" shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media. Specific examples of machine-readable media include non- volatile memory, including by way of example semiconductor memory devices (e.g., Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), and flash memory devices); magnetic disks such as internal hard disks and removable disks; magneto-optical disks; compact discread-only memory (CD-ROM) and digital versatile disc (or digital video disc) read-only memory (DVD-ROM) disks.
TRANSMISSION MEDIUM
[000112] The instructions 1424 may further be transmitted or received over a communications network 1426 using a transmission medium. The instructions 1424 may be transmitted using the network interface device 1420 and any one of a number of well-known transfer protocols (e.g., HTTP). Examples of communication networks 1426 include a LAN, a WAN, the Internet, mobile telephone networks, POTS networks, and wireless data networks (e.g., WiFi and WiMax networks). The term "transmission medium" shall be taken to include any intangible medium capable of storing, encoding, or carrying instructions (e.g., 1424) for execution by the machine, and includes digital or analog communication signals or other intangible media to facilitate communication of such software.
[000113] Although an embodiment has been described with reference to specific example embodiments, it will be evident that various modifications and changes may be made to these embodiments without departing from the broader spirit and scope of the present disclosure. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense. The accompanying drawings that form a part hereof, show by way of illustration and not of limitation, specific embodiments in which the subject matter may be practiced. The embodiments illustrated are described in sufficient detail to enable those skilled in the art to practice the teachings disclosed herein. Other embodiments may be utilized and derived therefrom, such that structural and logical substitutions and changes may be made without departing from the scope of this disclosure. Therefore, this Detailed Description is not to be taken in a limiting sense, and the scope of various embodiments is defined only by the appended claims along with the full range of equivalents to which such claims are entitled.
[000114] Such embodiments of the inventive subject matter may be referred to herein, individually and/or collectively, by the term "invention" merely for convenience and without intending to voluntarily limit the scope of this application to any single invention or inventive concept if more than one is in fact disclosed. Although specific embodiments have been illustrated and described herein, it should be appreciated that any arrangement calculated to achieve the same purpose may be substituted for the specific embodiments shown. This disclosure is intended to cover any and all adaptations or variations of several embodiments. Combinations of the above embodiments and other embodiments not specifically described herein, will be apparent to those of skill in the art upon reviewing the above description.
[000115] The Abstract of the Disclosure is provided to comply with 37 C.F.R. § 1.72(b), requiring an abstract that will allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it can be seen that various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, the inventive subject matter lies in less than all features of a single disclosed embodiment. Thus, the following claims are hereby incorporated into the Detailed Description with each claim standing on its own as a separate embodiment.

Claims

WHAT IS CLAIMED IS:
1. A method comprising:
identifying a node in a drawing of a graphical application embodied in a processor of a machine;
determining a size of a predefined space around the node and an intensity value associated with the node, the intensity value affecting a curvature of a vector curve in the predefined space; and
generating the vector curve in the predefined space, a curvature of the vector curve based on the size of the predefined space and the intensity value associated with the node in the drawing.
2. The method of claim 1, further comprising:
receiving an identification of the node selected by a user of the graphical application;
adjusting the size of the predefined space around the node and the intensity value associated with the node to modify a shape of the vector curve in the predefined space; and
adjusting the curvature of the vector curve in the predefined space in the drawing based on the adjusted size of the predefined space and the adjusted intensity value associated with the node.
3. The method of claim 1, wherein the predefined space comprises a region with the node as a center of the region.
4. The method of claim 1, further comprising:
generating the vector curve using a physical model vector curve having a curvature based on the intensity value associated with the node as a
representation of a measure of gravitational force from the node in the drawing in a ray mode.
5. The method of claim 4, further comprising:
generating the vector curve relative to a line segment between a first intersection point found between an existing curve and a perimeter of the predefined space and a second intersection point found between the existing curve and the perimeter of the predefined space in an arch mode.
6. The method of claim 4, further comprising:
shifting points of an existing curve in a predefined space along an axis perpendicular to a line segment between a first intersection point found between the existing curve and a perimeter of the predefined space and a second intersection point found between the existing curve and the perimeter of the predefined space in an arch mode.
7. The method of claim 4, further comprising:
shifting points of an existing curve in a predefined space along a radial axis of the node in an expand mode.
8. The method of claim 4, wherein the vector curve is part of a curve in a drawing, the vector curve comprising a portion of the curve in a predefined space, portions of the curve outside the predefined space are not affected by the node in the drawing.
9. The method of claim 1, further comprising:
increasing the intensity value associated with the node to increase the curvature of the vector curve towards the node in the predefined space;
decreasing the intensity value associated with the node to decrease the curvature of the vector curve towards the node in the predefined space; and adjusting the curvature of the vector curve away from the node in the predefined space when the intensity value is negative.
10. The method of claim 1, further comprising:
identifying a first node and a second node in the drawing;
determining a first size of a first predefined space around the first node and a first intensity value associated with the first node, the first intensity value affecting a curvature of a first vector curve in the first predefined space;
determining a second size of a second predefined space around the second node and a second intensity value associated with the second node, the second intensity value affecting a curvature of a second vector curve in the second predefined space, the first predefined space intersecting the second predefined space to form a common predefined space; and
generating a common vector curve in the common predefined space, a curvature of the common vector curve based on the size of the first and second predefined spaces and the intensity value associated with the first and second nodes.
11. A system comprising:
a memory configured to store a graphical application; and
a processor coupled to the memory, the processor comprising:
a node identifier configured to identify a node in a drawing of the graphical application;
a node attribute module configured to determine a size of a predefined space around the node and an intensity value associated with the node, the intensity value affecting a curvature of a vector curve in the predefined space; and
a vector curve generator configured to generate the vector curve in the predefined space, the curvature of the vector curve based on the size of the predefined space and the intensity value associated with the node.
The system of claim 11, wherein the node identifier is further configured receive an identification of the node selected by a user of the graphical application;
adjust the size of the predefined space around the node and the intensity value associated with the node to modify a shape of the vector curve in the predefined space; and
adjust the curvature of the vector curve in the predefined space in the drawing based on the adjusted size of the predefined space and the adjusted intensity value associated with the node.
13. The system of claim 11, wherein the predefined space comprises a region with the node as a center of the region.
14. The system of claim 11, wherein the vector curve generator comprises a ray mode module configured to generate a physical model vector curve having a curvature based on the intensity value associated with the node as a
representation of a measure of gravitational force from the node in the drawing.
15. The system of claim 14, wherein the vector curve generator comprises an arch mode module configured to generate a vector curve relative to a line segment between a first intersection point found between an existing curve and a perimeter of a predefined space and a second intersection point found between the existing curve and the perimeter of the predefined space.
16. The system of claim 14, wherein the vector curve generator comprises an arch mode module configured to shift points of an existing curve in a predefined space along an axis perpendicular to a line segment between a first intersection point found between the existing curve and a perimeter of the predefined space and a second intersection point found between the existing curve and the perimeter of the predefined space.
17. The system of claim 14, wherein the vector curve generator comprises an arch mode module configured to shift points of an existing curve in a predefined space along a radial axis of the node.
18. The system of claim 11, wherein the vector curve generator is configured to:
increase the intensity value associated with the node to increase the curvature of the vector curve towards the node in the predefined space;
decrease the intensity value associated with the node to decrease the curvature of the vector curve towards the node in the predefined space; and adjust the curvature of the vector curve away from the node in the predefined space when the intensity value is negative.
19. The system of claim 11, wherein the node identifier is configured to identify a first node and a second node in the drawing,
wherein the node attribute module is configured to determine a first size of a first predefined space around the first node and a first intensity value associated with the first node, the first intensity value affecting a curvature of a first vector curve in the first predefined space, to determine a second size of a second predefined space around the second node and a second intensity value associated with the second node, the second intensity value affecting a curvature of a second vector curve in the second predefined space, the first predefined space intersecting the second predefined space to form a common predefined space, and
wherein the vector curve generator is configured to generate a common vector curve in the common predefined space, a curvature of the common vector curve based on the size of the first and second predefined spaces and the intensity value associated with the first and second nodes in the drawing.
20. A non-transitory machine-readable storage medium storing instructions which, when executed by at least one processor, performs operations comprising: identifying a node in a drawing of a graphical application;
determining a size of a predefined space around the node, and an intensity value associated with the node, the intensity value affecting a curvature of a vector curve in the predefined space; and
generating the vector curve in the predefined space, the curvature of the vector curve based on the size of the predefined space and the intensity value associated with the node in the drawing.
PCT/CN2013/077797 2013-06-24 2013-06-24 Gravity point drawing method WO2014205632A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/CN2013/077797 WO2014205632A1 (en) 2013-06-24 2013-06-24 Gravity point drawing method
US14/292,353 US9779521B2 (en) 2013-06-24 2014-05-30 Gravity point drawing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/077797 WO2014205632A1 (en) 2013-06-24 2013-06-24 Gravity point drawing method

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/292,353 Continuation US9779521B2 (en) 2013-06-24 2014-05-30 Gravity point drawing method

Publications (1)

Publication Number Publication Date
WO2014205632A1 true WO2014205632A1 (en) 2014-12-31

Family

ID=52110531

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2013/077797 WO2014205632A1 (en) 2013-06-24 2013-06-24 Gravity point drawing method

Country Status (2)

Country Link
US (1) US9779521B2 (en)
WO (1) WO2014205632A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10008014B2 (en) 2016-08-25 2018-06-26 Adobe Systems Incorporated Tool for creating and editing arcs

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090051680A1 (en) * 2005-03-22 2009-02-26 Mitsubishi Heavy Industries, Ltd. Curved-Surface Generating Method and Program, and Three-Dimensional Shape Processing Apparatus
CN101996515A (en) * 2010-11-04 2011-03-30 吉林大学 Urban vector road network registration method based on local control in GIS-T
CN102880593A (en) * 2012-09-05 2013-01-16 哈尔滨工业大学 Adaptive domain selection algorithm for manifold learning based on curvature prediction

Family Cites Families (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU629210B2 (en) * 1988-10-26 1992-10-01 Sun Microsystems, Inc. Method and apparatus for minimizing the visual degradation of digital typefaces
US5371845A (en) * 1990-04-27 1994-12-06 Ashlar, Inc. Technique for providing improved user feedback in an interactive drawing system
US5434959A (en) * 1992-02-11 1995-07-18 Macromedia, Inc. System and method of generating variable width lines within a graphics system
EP0604685A1 (en) * 1992-12-28 1994-07-06 Océ-Nederland B.V. Method of modifying the fatness of characters
US5636338A (en) * 1993-01-29 1997-06-03 Silicon Graphics, Inc. Method for designing curved shapes for use by a computer
US5796409A (en) * 1993-04-06 1998-08-18 Ecole Polytechnique Federale De Lausanne Method for producing contrast-controlled grayscale characters
US5524182A (en) * 1994-12-21 1996-06-04 Hewlett-Packard Company System and method for compressing and decompressing fonts based upon font stroke regularities
US5687259A (en) * 1995-03-17 1997-11-11 Virtual Eyes, Incorporated Aesthetic imaging system
US5764936A (en) * 1995-05-05 1998-06-09 Intergraph Corporation Method and apparatus for dynamically interpreting drawing commands
US5883986A (en) * 1995-06-02 1999-03-16 Xerox Corporation Method and system for automatic transcription correction
US5889928A (en) * 1996-02-28 1999-03-30 Mita Industrial Co., Ltd. Output gradation adjustment method in image output apparatus
KR0172581B1 (en) * 1996-04-02 1999-03-30 이진기 Transformation and rendering method for progressively renderable font
US6154221A (en) * 1997-04-04 2000-11-28 Avid Technology, Inc. Parametric function curve editing
US6268871B1 (en) * 1997-04-30 2001-07-31 Silicon Graphics, Inc. Generating a curve for computer graphics through points residing on underlying geometries in a three dimensional space
JP3963033B2 (en) * 1997-07-31 2007-08-22 ソニー株式会社 Time-series data generation apparatus and method, curve editing apparatus and method, and recording medium recording program
JP3435684B2 (en) * 1997-09-30 2003-08-11 株式会社アドバンテスト Image information processing device
US6459439B1 (en) * 1998-03-09 2002-10-01 Macromedia, Inc. Reshaping of paths without respect to control points
EP1116186A1 (en) * 1998-09-24 2001-07-18 Brigit Ananya Computer curve construction system and method
US6256038B1 (en) * 1998-12-10 2001-07-03 The Board Of Trustees Of The Leland Stanford Junior University Parameterized surface fitting technique having independent control of fitting and parameterization
US6498608B1 (en) * 1998-12-15 2002-12-24 Microsoft Corporation Method and apparatus for variable weight outline emboldening of scalable outline fonts
WO2000043953A1 (en) * 1999-01-25 2000-07-27 Kabushiki Kaisya Zenrin Device and method for creating and using data on road map expressed by polygons
JP4303410B2 (en) * 2000-09-29 2009-07-29 富士通株式会社 Pattern center determining apparatus, pattern direction determining apparatus, pattern positioning apparatus, and pattern collating apparatus
EP1340196A1 (en) * 2000-12-05 2003-09-03 Matsushita Electric Industrial Co., Ltd. 3-d character data generating device and a 3-d graphics data generating device
JP2005526310A (en) * 2002-02-15 2005-09-02 コンピューター アソシエイツ シンク,インク. System and method for identifying elliptic parameters
US6784896B1 (en) * 2002-11-04 2004-08-31 Virtual Mirror Corporation Colorization of a gradient mesh
US7038682B2 (en) * 2002-11-05 2006-05-02 Brigit Ananya Computer curve construction system II
US6951003B2 (en) * 2003-05-12 2005-09-27 Synopsys, Inc Placing cells of an IC design using partition preconditioning
US7218326B1 (en) * 2003-06-11 2007-05-15 Autodesk, Inc. Spline manipulation tool
GB2406028A (en) * 2003-09-11 2005-03-16 Autodesk Canada Inc Tangent handle adjustment for Bezier curves
US7889209B2 (en) * 2003-12-10 2011-02-15 Sensable Technologies, Inc. Apparatus and methods for wrapping texture onto the surface of a virtual object
US7292247B2 (en) * 2004-01-26 2007-11-06 Microsoft Corporation Dynamically determining directions of freedom for control points used to represent graphical objects
US7236174B2 (en) * 2004-01-26 2007-06-26 Microsoft Corporation Adaptively filtering outlines of typographic characters to simplify representative control data
JP4017166B2 (en) * 2004-04-20 2007-12-05 日本アイ・ビー・エム株式会社 Editing device, editing method, program, and recording medium
JP4582310B2 (en) * 2005-02-02 2010-11-17 セイコーエプソン株式会社 Profile creation method, profile creation device, profile creation program, and print control device
US7496416B2 (en) * 2005-08-01 2009-02-24 Luxology, Llc Input/output curve editor
US20080170074A1 (en) * 2005-08-19 2008-07-17 Daimler Ag Method For Generating a Map Depiction For Optimal Perceptibility of Streets to Travel Through
US7535471B1 (en) * 2005-11-23 2009-05-19 Apple Inc. Scale-adaptive fonts and graphics
JP4652252B2 (en) * 2006-02-28 2011-03-16 株式会社ミツトヨ Image measurement system, image measurement method, and image measurement program
JP2008161307A (en) * 2006-12-27 2008-07-17 Bridgestone Sports Co Ltd Wood type golf club head
WO2008084535A1 (en) * 2007-01-10 2008-07-17 Fujitsu Limited System, method and program for generating curve of cable
JP4540123B2 (en) * 2007-04-10 2010-09-08 富士フイルム株式会社 Curve correction method, apparatus, and program
US7884834B2 (en) * 2007-04-13 2011-02-08 Apple Inc. In-context paint stroke characteristic adjustment
US7928983B2 (en) * 2007-06-04 2011-04-19 Daedal Doodle, LLC Interactive labyrinth curve generation and applications thereof
US8068106B1 (en) * 2007-08-31 2011-11-29 Adobe Systems Incorporated Rendering cubic Bézier curves as quadratic curves using a GPU
US20090141038A1 (en) * 2007-11-02 2009-06-04 Newaskar Saket Prashant Bezier Curves for Low Memory Embedded Graphics Systems
US20090297064A1 (en) * 2008-05-30 2009-12-03 Koziol Jason D Method and system for generating a representation symbol as an identification challenge
US8587609B1 (en) * 2008-08-01 2013-11-19 Marvell International Ltd. Accuracy-adaptive and scalable vector graphics rendering
GB0913170D0 (en) * 2009-07-28 2009-09-02 Advanced Risc Mach Ltd Graphics processing systems
JP5520698B2 (en) * 2010-06-07 2014-06-11 任天堂株式会社 GAME DEVICE, GAME PROGRAM, AND GAME SYSTEM
JP5620194B2 (en) * 2010-08-24 2014-11-05 オリンパス株式会社 Image processing apparatus, image processing method, and image processing program
US8669983B2 (en) * 2010-08-31 2014-03-11 Microsoft Corporation Buffer construction with geodetic circular arcs
US8610714B2 (en) * 2010-10-19 2013-12-17 Apple Inc. Systems, methods, and computer-readable media for manipulating graphical objects
US8854375B2 (en) * 2010-10-19 2014-10-07 Dynacomware Taiwan Inc. Method and system for generating gray dot-matrix font from binary dot-matrix font
JP2012209733A (en) * 2011-03-29 2012-10-25 Fuji Xerox Co Ltd Color gamut outline information generating device and program
JP5653277B2 (en) * 2011-03-31 2015-01-14 株式会社東芝 Drawing apparatus, drawing method, and drawing program
EP2523166B1 (en) * 2011-05-12 2013-11-27 BlackBerry Limited Method and device for rendering areas bounded by curves using a gpu
DE102012216195A1 (en) * 2012-09-12 2014-05-28 Continental Automotive Gmbh input device
US9436288B2 (en) * 2013-05-17 2016-09-06 Leap Motion, Inc. Cursor mode switching
US9396565B2 (en) * 2013-06-07 2016-07-19 Apple Inc. Rendering borders of elements of a graphical user interface
AU2013221944A1 (en) * 2013-08-28 2015-03-19 Canon Kabushiki Kaisha Improve alignment of start and end of dashed curves
EP3072038B1 (en) * 2013-11-19 2019-09-18 Wacom Co., Ltd. Method and system for ink data generation, ink data rendering, ink data manipulation and ink data communication
US9418465B2 (en) * 2013-12-31 2016-08-16 Dreamworks Animation Llc Multipoint offset sampling deformation techniques
US9727987B2 (en) * 2014-05-12 2017-08-08 Adobe Systems Incorporated Blending techniques for curve fitting
JP2017516227A (en) * 2014-05-13 2017-06-15 シーメンス プロダクト ライフサイクル マネージメント ソフトウェアー インコーポレイテッドSiemens Product Lifecycle Management Software Inc. Geodesic drawing on curved surfaces
US9620086B1 (en) * 2015-06-26 2017-04-11 Amazon Technologies, Inc. Dynamic contrast adjustments for glyph rendering

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090051680A1 (en) * 2005-03-22 2009-02-26 Mitsubishi Heavy Industries, Ltd. Curved-Surface Generating Method and Program, and Three-Dimensional Shape Processing Apparatus
CN101996515A (en) * 2010-11-04 2011-03-30 吉林大学 Urban vector road network registration method based on local control in GIS-T
CN102880593A (en) * 2012-09-05 2013-01-16 哈尔滨工业大学 Adaptive domain selection algorithm for manifold learning based on curvature prediction

Also Published As

Publication number Publication date
US20140375655A1 (en) 2014-12-25
US9779521B2 (en) 2017-10-03

Similar Documents

Publication Publication Date Title
JP7032487B2 (en) Tessellation method using recursive subdivision of triangles
US9953460B2 (en) Garment simulation using thread and data level parallelism
US10223767B2 (en) Facial feature liquifying using face mesh
KR102394295B1 (en) Parametric inertia and apis
EP3108453B1 (en) Method for selecting data files for downloading
US11216281B2 (en) Facilitating data processing using SIMD reduction operations across SIMD lanes
Lloyd et al. Analysis of independent roulette selection in parallel ant colony optimization
Chen et al. Localizing the delaunay triangulation and its parallel implementation
US10891319B2 (en) Easy clustering of graphs of nodes preserving node relationships
CN104008122A (en) Dynamic multi-stage pie chart display method of layering data
US9779521B2 (en) Gravity point drawing method
CN110732137A (en) Continuous control of attention to deep learning networks
CN111768353B (en) Hole filling method and device for three-dimensional model
WO2015034464A1 (en) Global grid building in reverse faulted areas by an optimized unfaulting method
CN109189537A (en) The dynamic display method of page info calculates equipment and computer storage medium
US9710947B2 (en) Using genetic algorithm to design 2-dimensional procedural patterns
CN114564268A (en) Equipment management method and device, electronic equipment and storage medium
Ramos et al. Efficient visualization of 3D models on hardware-limited portable devices
AU2017212441B2 (en) Haptic correlated graphic effects
EP2562722B1 (en) Method and system for scene visualization
JP5443283B2 (en) Measuring point calculation apparatus and method
CN115795114B (en) Calculation graph representation and storage method for deep learning reasoning and related components thereof
Amos et al. Analysis of Independent Roulette Selection in Parallel Ant Colony Optimization
Mitchell Deterministic Linear Time for Maximal Poisson‐Disk Sampling using Chocks without Rejection or Approximation
JP6155092B2 (en) Graphic information creating apparatus, area dividing apparatus, graphic information creating method, area dividing method, and program

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13888148

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13888148

Country of ref document: EP

Kind code of ref document: A1