BR112017003480B1 - METHOD FOR SMOOTHING AND RENDERING DIGITAL INK - Google Patents

METHOD FOR SMOOTHING AND RENDERING DIGITAL INK Download PDF

Info

Publication number
BR112017003480B1
BR112017003480B1 BR112017003480-8A BR112017003480A BR112017003480B1 BR 112017003480 B1 BR112017003480 B1 BR 112017003480B1 BR 112017003480 A BR112017003480 A BR 112017003480A BR 112017003480 B1 BR112017003480 B1 BR 112017003480B1
Authority
BR
Brazil
Prior art keywords
ink
approximation
bézier
active
ink dot
Prior art date
Application number
BR112017003480-8A
Other languages
Portuguese (pt)
Other versions
BR112017003480A2 (en
Inventor
Silvano Bonacina
Aleksander Uzelac
Austin Bradley Hodges
David Abzarian
Fei Su
Miles M. Cohen
Anthony John Rolls Hodsdon
Original Assignee
Microsoft Technology Licensing, Llc
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
Priority claimed from US14/486,735 external-priority patent/US9508166B2/en
Application filed by Microsoft Technology Licensing, Llc filed Critical Microsoft Technology Licensing, Llc
Publication of BR112017003480A2 publication Critical patent/BR112017003480A2/en
Publication of BR112017003480B1 publication Critical patent/BR112017003480B1/en

Links

Images

Abstract

SUAVIZAÇÃO E RENDERIZAÇÃO PERMITIDA POR UNIDADE DE PROCESSAMENTO GRÁFICO DE TINTA DIGITAL. Trata-se de sistemas, métodos e mídias de armazenamento legíveis por computador que são fornecidos para suavização de curso de tinta em tempo real eficiente, previsão de trajetória e renderização impulsionada por GPU de entrada de curso de tinta. O primeiro e o segundo pontos de tinta são recebidos e uma aproximação de Bézier ativa é computada com base nos mesmos. De modo sequencialmente posterior no tempo em que o primeiro e o segundo pontos de tinta, um terceiro ponto de tinta é recebido. Determina-se se o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier ativa. Quando se determina que o terceiro ponto de tinta se ajusta adequadamente, uma aproximação de Bézier ativa atualizada é computada que inclui os primeiro, segundo e terceiro pontos de tinta. Quando se determina que o terceiro ponto de tinta falha ao se ajustar adequadamente, uma nova aproximação de Bézier diferente é computada, a qual inclui o terceiro ponto de tinta, mas não o primeiro e o segundo pontos de tinta. Impulsionando uma GPU, um curso de tinta suavizado com base na aproximação (ou aproximações) de Bézier é renderizado.(...).SMOOTHING AND RENDERING ALLOWED BY DIGITAL INK GRAPHIC PROCESSING UNIT. These are computer-readable systems, methods, and storage media that are provided for efficient real-time ink stroke smoothing, trajectory prediction, and GPU-driven rendering of ink stroke input. The first and second ink dots are received and an active Bézier approximation is computed based on them. Sequentially later in time than the first and second ink dots, a third ink dot is received. Determines whether the third ink dot fits properly to the active Bézier approximation. When the third ink point is determined to fit properly, an updated active Bézier approximation is computed that includes the first, second, and third ink points. When the third ink dot is determined to fail to fit properly, a different new Bézier approximation is computed which includes the third ink dot but not the first and second ink dots. By driving a GPU, a smoothed ink stroke based on the Bézier approximation (or approximations) is rendered.(...).

Description

ANTECEDENTES DA INVENÇÃOBACKGROUND OF THE INVENTION

[001] "Tinta digital" refere-se a um ou mais cursos que são registrados a partir de um instrumento de entrada, tal como um mouse, um stylus/caneta em um computador do tipo tablet digitalizador, um stylus capacitivo ou um objeto capacitivo (por exemplo, um dedo) em um digitalizador sensível ao toque capacitivo ou um stylus/caneta em uma tela de exibição integrada com um computador do tipo tablet digitalizador que pode utilizar ou não uma tela de exibição sensível ao toque. Conforme usado no presente documento, o termo "tinta" é usado de modo intercambiável e se refere a "tinta digital". Ainda, os termos "caneta" e/ou "stylus" são usados genericamente e de modo intercambiável para se referir a qualquer tipo de instrumento de entrada. Cada curso pode ser armazenado como um ou mais pontos de tinta e cada ponto de tinta pode conter diversas propriedades que incluem, a título de exemplo apenas, pressão, inclinação, azimute e coordenadas (x, y) que correspondem a uma posição do instrumento de entrada. Por exemplo, um usuário pode mover uma caneta ao longo de uma tela de exibição sensível ao toque de um sistema de computador a fim de desenhar uma linha ou uma curva e o sistema de computador pode amostrar as coordenadas (x, y) ao longo da trajetória da posição de extremidade de instrumento de entrada ao longo do tempo (ou em qualquer outro intervalo, conforme conhecido pelas pessoas de habilidade comum na técnica) conforme o usuário move o instrumento de entrada. Essas coordenadas representam pontos ao longo da entrada de curva ou linha por um usuário e são denominadas no presente documento como "pontos de tinta".[001] "Digital ink" refers to one or more strokes that are recorded from an input instrument, such as a mouse, a stylus/pen on a digitizing tablet computer, a capacitive stylus, or a capacitive object (for example, a finger) on a capacitive touchscreen digitizer, or a stylus/pen on an integrated display screen with a digitizing tablet computer that may or may not use a touchscreen display. As used herein, the term "ink" is used interchangeably and refers to "digital ink". Furthermore, the terms "pen" and/or "stylus" are used generically and interchangeably to refer to any type of input instrument. Each stroke can be stored as one or more ink dots, and each ink dot can contain a variety of properties including, by way of example only, pressure, inclination, azimuth, and coordinates (x, y) that correspond to a position of the tracking instrument. Prohibited. For example, a user can move a pen across a computer system's touch-sensitive display screen to draw a line or curve, and the computer system can sample the (x, y) coordinates along the line. trajectory of the input instrument end position over time (or any other range as known to those of ordinary skill in the art) as the user moves the input instrument. These coordinates represent points along a curve or line input by a user and are referred to herein as "ink points".

SUMÁRIO DA INVENÇÃOSUMMARY OF THE INVENTION

[002] Esse Sumário é fornecido para introduzir uma seleção de conceitos de uma forma simplificada que são ainda descritos a seguir na Descrição Detalhada. Esse Sumário não é destinado a identificar recursos-chave ou recursos essenciais da matéria reivindicada, nem é destinado a ser usado como um auxílio na determinação do escopo da matéria reivindicada.[002] This Summary is provided to introduce a selection of concepts in a simplified form which are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.

[003] Em diversas modalidades, sistemas, métodos e mídias de armazenamento legíveis por computador são fornecidos para suavização de curso de tinta em tempo real eficiente e previsão de trajetória. Uma pluralidade de pontos de tinta que inclui pelo menos um primeiro e um segundo ponto de tinta é recebida. Com base pelo menos nos primeiro e segundo pontos de tinta (em que a quantidade exata é determinada, pelo menos em parte, na obtenção de um encaixe adequado em relação aos pontos de tinta subsequentemente recebidos, conforme mais completamente descrito abaixo), uma aproximação de Bézier ativa é computada. Sequencialmente em tempo ao primeiro e ao segundo pontos de tinta, um terceiro ponto de tinta é recebido e determina-se se o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier ativa. O terceiro ponto de tinta é determinado para se ajustar adequadamente à aproximação de Bézier ativa se for determinado que um usuário não tem capacidade para detectar uma diferença entre o mesmo mediante a renderização. Tal determinação é geralmente baseada em um valor de diferença limítrofe predeterminado. Determina-se que o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier ativa, em que a aproximação de Bézier ativa é atualizada para incluir o terceiro ponto de tinta. Entretanto, se for determinado que o terceiro ponto de tinta não se ajusta adequadamente à aproximação de Bézier ativa, a aproximação de Bézier ativa é terminada e uma nova aproximação de Bézier é computada. A saída de tinta suavizada é renderizada compreendendo os primeiro, segundo e terceiro pontos de tinta em associação a uma superfície de recebimento de curso, por exemplo, uma tela de exibição sensível ao toque.[003] In various embodiments, systems, methods, and computer-readable storage media are provided for efficient real-time ink stroke smoothing and trajectory prediction. A plurality of ink dots including at least a first and a second ink dot are received. Based on at least the first and second ink dots (where the exact amount is determined, at least in part, by achieving a proper fit with respect to subsequently received ink dots, as more fully described below), an approximation of Active Bézier is computed. Sequentially in time to the first and second ink dots, a third ink dot is received and it is determined whether the third ink dot fits properly to the active Bézier approximation. The third ink dot is determined to properly fit the active Bézier approximation if it is determined that a user is unable to detect a difference between them upon rendering. Such a determination is generally based on a predetermined threshold difference value. The third ink dot is determined to fit the active Bézier approximation properly, whereupon the active Bézier approximation is updated to include the third ink dot. However, if it is determined that the third ink dot does not properly fit the active Bézier approximation, the active Bézier approximation is terminated and a new Bézier approximation is computed. Smoothed ink output is rendered comprising the first, second, and third ink dots in association with a stroke-receiving surface, for example a touchscreen display.

[004] As modalidades da presente invenção fornecem entrada de tinta digital que parece suave durante e após a entrada de curso, mesmo em níveis de zoom significativos (por exemplo, níveis de zoom de 200 a 400%). As modalidades da presente invenção possibilitam ainda a suavização e a renderização de cursos de tinta digital, de forma que alterações ao curso com base na suavização não sejam substancialmente percebidas por um usuário durante entrada de curso ou após o curso. Ainda ainda, de acordo com modalidades da presente invenção, a latência de renderização não é aumentada e é normalmente diminuída pelo uso das técnicas de previsão descritas ainda no presente documento abaixo.[004] Embodiments of the present invention provide digital ink input that appears smooth during and after stroke input, even at significant zoom levels (e.g., zoom levels from 200 to 400%). Embodiments of the present invention further enable smoothing and rendering of digital ink strokes such that changes to the stroke based on the smoothing are not substantially noticeable to a user during stroke entry or after stroke. Still further, in accordance with embodiments of the present invention, rendering latency is not increased and is typically decreased by use of the prediction techniques described further herein below.

[005] Esses e outros recursos da invenção serão evidentes mediante a consideração da seguinte Descrição Detalhada. Será evidente para as pessoas versadas na tecnologia relevante, à luz do presente relatório descritivo, que combinações alternativas de aspectos da invenção, sozinhos ou em combinação com um ou mais elementos das etapas definidas no presente documento, podem ser usadas como modificações ou alterações da invenção ou como parte da invenção. Pretende-se que a descrição escrita da invenção contida no presente documento cubra tais modificações e alterações.[005] These and other features of the invention will be apparent upon consideration of the following Detailed Description. It will be apparent to persons skilled in the relevant technology, in light of the present specification, that alternative combinations of aspects of the invention, alone or in combination with one or more elements of the steps defined herein, can be used as modifications or alterations of the invention. or as part of the invention. The written description of the invention contained herein is intended to cover such modifications and alterations.

BREVE DESCRIÇÃO DOS DESENHOSBRIEF DESCRIPTION OF THE DRAWINGS

[006] O Sumário supracitado, assim como a seguinte Descrição Detalhada, é mais bem entendido quando lido em conjunto com os desenhos anexos, os quais estão incluídos a título de exemplo e não a título de limitação em relação às modalidades reivindicadas. Nos desenhos anexos, os elementos são identificados com numerais de referência, em que o primeiro dígito de um numeral de referência de três dígitos e os primeiros dois dígitos de um numeral de referência de quatro dígitos indicam o número do desenho em que o elemento é ilustrado primeiro. O mesmo numeral de referência em desenhos diferentes se refere ao mesmo elemento ou um elemento semelhante.[006] The aforementioned Summary, as well as the following Detailed Description, is better understood when read in conjunction with the attached drawings, which are included by way of example and not by way of limitation in relation to the claimed embodiments. In the accompanying drawings, elements are identified with reference numerals, where the first digit of a three-digit reference numeral and the first two digits of a four-digit reference numeral indicate the number of the drawing in which the element is illustrated. first. The same reference numeral in different designs refers to the same or a similar element.

[007] A Figura 1 é um diagrama de blocos de um ambiente de computação exemplificativo adequado para uso na implantação de modalidades da presente invenção;[007] Figure 1 is a block diagram of an exemplary computing environment suitable for use in implementing embodiments of the present invention;

[008] Figura 2 é um diagrama de blocos de um sistema de computação exemplificativo em que modalidades da invenção podem ser empregadas;[008] Figure 2 is a block diagram of an exemplary computing system in which embodiments of the invention can be employed;

[009] Figura 3 é um diagrama esquemático que mostra artefatos "ruins" exemplificativos de um spline contínuo C0 que podem ser produzidos de acordo com uma modalidade da presente invenção;[009] Figure 3 is a schematic diagram showing exemplary "bad" artifacts of a continuous spline C0 that can be produced in accordance with an embodiment of the present invention;

[0010] Figura 4 é um diagrama esquemático que mostra comportamento instável exemplificativo que pode ser produzido por um ajuste contínuo C1 de acordo com uma modalidade da presente invenção;[0010] Figure 4 is a schematic diagram showing exemplary unstable behavior that may be produced by continuous adjustment C1 in accordance with an embodiment of the present invention;

[0011] Figura 5 é um diagrama esquemático que mostra um spline contínuo exemplificativo ausente do comportamento instável mostrado na Figura 4, de acordo com uma modalidade da presente invenção;[0011] Figure 5 is a schematic diagram showing an exemplary continuous spline absent the unstable behavior shown in Figure 4, in accordance with an embodiment of the present invention;

[0012] Figura 6 é um diagrama esquemático que mostra previsão,realização e vetores de erro exemplificativos para uma previsão de cinco pontos adiante, de acordo com uma modalidade da presente invenção;[0012] Figure 6 is a schematic diagram showing exemplary forecast, performance, and error vectors for a five-point forward forecast, in accordance with an embodiment of the present invention;

[0013] Figura 7 é um diagrama esquemático que ilustra um segmento de um curso de tinta, de acordo com uma modalidade da presente invenção;[0013] Figure 7 is a schematic diagram illustrating a segment of an ink stroke, in accordance with an embodiment of the present invention;

[0014] Figura 8 é um fluxograma que mostra um método exemplificativo para renderizar tinta, de acordo com uma modalidade da presente invenção;[0014] Figure 8 is a flowchart showing an exemplary method for rendering ink, in accordance with an embodiment of the present invention;

[0015] Figura 9 é um diagrama esquemático que ilustra uma implantação exemplificativa de um mosaico de instância, de acordo com uma modalidade da presente invenção;[0015] Figure 9 is a schematic diagram illustrating an exemplary deployment of an instance tile, in accordance with an embodiment of the present invention;

[0016] Figura 10 é um diagrama esquemático que ilustra outra implantação exemplificativa de um mosaico de instância, de acordo com uma modalidade da presente invenção;[0016] Figure 10 is a schematic diagram illustrating another exemplary deployment of an instance tile, in accordance with an embodiment of the present invention;

[0017] Figura 11 é um diagrama esquemático de dois pontos de tinta adjacentes (presumindo que M é identidade), de acordo com uma modalidade da presente invenção;[0017] Figure 11 is a schematic diagram of two adjacent ink dots (assuming M is identity), in accordance with an embodiment of the present invention;

[0018] Figura 12 é um diagrama esquemático que ilustra uma ampliação ao redor de P(i+1) (presumindo que TopOrBottom=0, StartOrEnd=1 e M é identidade), de acordo com uma modalidade da presente invenção;[0018] Figure 12 is a schematic diagram illustrating a magnification around P(i+1) (assuming that TopOrBottom=0, StartOrEnd=1 and M is identity), according to an embodiment of the present invention;

[0019] Figura 13 é um diagrama esquemático que ilustra uma ampliação de uma porção da Figura 12 ao redor de P+D (presumindo que TopOrBottom=0, StartOrEnd=1 e M é identidade);[0019] Figure 13 is a schematic diagram illustrating an enlargement of a portion of Figure 12 around P+D (assuming that TopOrBottom=0, StartOrEnd=1 and M is identity);

[0020] Figura 14 é um fluxograma que ilustra um método exemplificativo para suavizar a entrada de tinta digital, de acordo com uma modalidade da presente invenção;[0020] Figure 14 is a flowchart illustrating an exemplary method for smoothing digital ink input, in accordance with an embodiment of the present invention;

[0021] Figura 15 é um fluxograma que ilustra um método exemplificativo para suavizar e renderizar a entrada de tinta digital, de acordo com uma modalidade da presente invenção; e[0021] Figure 15 is a flow chart illustrating an exemplary method for smoothing and rendering digital ink input, in accordance with an embodiment of the present invention; It is

[0022] Figura 16 é um fluxograma que ilustra outro método exemplificativo para suavizar e renderizar a entrada de tinta digital, de acordo com uma modalidade da presente invenção.[0022] Figure 16 is a flow chart illustrating another exemplary method for smoothing and rendering digital ink input, in accordance with an embodiment of the present invention.

DESCRIÇÃO DETALHADA DA INVENÇÃODETAILED DESCRIPTION OF THE INVENTION

[0023] A matéria da presente invenção é descrita com especificidade no presente documento para corresponder às exigências estatutárias. Entretanto, a própria descrição não é destinada a limitar o escopo desta patente. Em vez disso, os inventores contemplaram que a matéria reivindicada também pode ser incorporada de outras formas para incluir etapas diferentes ou combinações de etapas semelhantes àquelas descritas neste documento, em conjunto com outras tecnologias presentes ou futuras. Além disso, embora os termos "etapa" e/ou "bloco" possam ser usados no presente documento para conotar elementos diferentes de métodos empregados, os termos não devem ser interpretados como uma sugestão de qualquer ordem em particular dentre ou entre diversas etapas no presente documento reveladas, a menos que, e exceto quando, a ordem de etapas individuais esteja explicitamente descrita.[0023] The subject matter of the present invention is described with specificity in the present document to correspond to the statutory requirements. However, the description itself is not intended to limit the scope of this patent. Rather, the inventors contemplated that the claimed subject matter could also be incorporated in other ways to include different steps or combinations of steps similar to those described herein, along with other present or future technologies. Furthermore, although the terms "step" and/or "block" may be used in this document to connote different elements of methods employed, the terms should not be construed as suggesting any particular order within or between several steps in this document. documents revealed, unless and unless the order of individual steps is explicitly described.

[0024] A renderização da tinta digital sofre com diversos problemas que incluem a tinta não ser suave durante operações de zoom, mas, em vez de ter uma aparência semelhante a degrau, aumenta em latência (por exemplo, devido ao acúmulo de cache e/ou à suavização e à renderização após curso) e alterações na cor de tinta ou outras características de aparência quando uma caneta ou outro instrumento de entrada é liberado da superfície de recebimento (isto é, após o curso).[0024] Digital ink rendering suffers from several issues that include the ink not being smooth during zoom operations, but instead of having a step-like appearance, it increases in latency (e.g. due to cache buildup and/or or smoothing and rendering after stroke) and changes in ink color or other appearance characteristics when a pen or other input instrument is released from the receiving surface (ie, after stroke).

[0025] Diversos aspectos da tecnologia descrita no presente documento são geralmente destinados a sistemas, métodos e mídias de armazenamento legíveis por computador para suavização de curso de tinta em tempo real eficiente, previsão de trajetória e renderização que impulsionam uma GPU (Unidade de Processamento de Gráfico). Uma pluralidade de pontos de tinta que inclui pelo menos um primeiro e um segundo ponto de tinta é recebida conforme os respectivos pontos de tinta são digitalizados. Com base pelo menos nos primeiro e segundo pontos de tinta, uma aproximação de Bézier ativa é computada. Conforme será entendido pelas pessoas de habilidade comum na técnica, uma aproximação ou curva de Bézier é uma curva paramétrica normalmente utilizada para modelar curvas suaves na renderização de gráfico. Conforme utilizado no presente documento, uma aproximação de Bézier é considerada "ativa" se for a curva ou a aproximação à qual o ponto de tinta mais recentemente recebido e processado (nesse caso, o segundo ponto de tinta) pertence. A quantidade exata de pontos de tinta utilizados na aproximação de Bézier ativa depende, pelo menos em parte, da obtenção de um ajuste adequado para pontos de tinta subsequentemente recebidos. Isto é, N pontos de tinta podem ser acumulados para os propósitos de ajuste, em que o valor de N continua a crescer até que um ajuste apropriado não seja mais possível, conforme mais completamente descrito abaixo.[0025] Various aspects of the technology described in this document are generally intended for computer-readable systems, methods, and storage media for efficient real-time ink stroke smoothing, trajectory prediction, and rendering that drive a GPU (Ink Processing Unit). Graphic). A plurality of ink dots including at least a first and a second ink dot are received as the respective ink dots are scanned. Based on at least the first and second ink points, an active Bézier approximation is computed. As will be understood by those of ordinary skill in the art, an approximation or Bézier curve is a parametric curve commonly used to model smooth curves in graph rendering. As used herein, a Bézier approximation is considered "active" if it is the curve or approximation to which the most recently received and processed ink dot (in this case, the second ink dot) belongs. The exact amount of ink dots used in the active Bézier approximation depends, at least in part, on achieving a proper fit for subsequently received ink dots. That is, N ink dots can be accumulated for the purposes of adjustment, where the value of N continues to grow until a proper adjustment is no longer possible, as more fully described below.

[0026] De modo sequencialmente posterior no tempo em relação ao primeiro e ao segundo pontos de tinta, um terceiro ponto de tinta é recebido e determina-se se o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier ativa. O terceiro ponto de tinta é determinado para se ajustar adequadamente à aproximação de Bézier ativa se for determinado que um usuário não tem capacidade para detectar uma diferença entre o mesmo mediante a renderização. Tal determinação é geralmente baseada em um valor de diferença limítrofe predeterminado, por exemplo, 10 unidades himétricas (0,1 mm). Determina-se que o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier ativa, em que a aproximação de Bézier ativa é atualizada para incluir o terceiro ponto de tinta. Nas modalidades, a aproximação de Bézier "atualizada" pode ser considerada uma "nova" aproximação ou curva de Bézier. Entretanto, se for determinado que o terceiro ponto de tinta não se ajusta adequadamente à aproximação de Bézier ativa, a aproximação de Bézier ativa é terminada e uma nova aproximação de Bézier diferente é computada. Impulsionando uma GPU, a saída de tinta suavizada resultante é renderizada, em que a saída resultante compreende os primeiro, segundo e terceiro pontos de tinta, em associação a uma superfície de recebimento de curso, por exemplo, uma tela de exibição sensível ao toque. (Conforme será entendido e observado pelas pessoas que têm habilidade comum na técnica, embora a suavização de Bézier cúbica seja primariamente descrita no presente documento, a suavização de Bézier quadrática, Bézier na potência de quatro e além, ou qualquer outro algoritmo de suavização conhecido pode ser utilizado dentro das modalidades da presente invenção).[0026] Sequentially later in time with respect to the first and second ink dots, a third ink dot is received and it is determined whether the third ink dot fits properly to the active Bézier approximation. The third ink dot is determined to properly fit the active Bézier approximation if it is determined that a user is unable to detect a difference between them upon rendering. Such a determination is usually based on a predetermined threshold difference value, for example 10 hymetric units (0.1 mm). The third ink dot is determined to fit the active Bézier approximation properly, whereupon the active Bézier approximation is updated to include the third ink dot. In the embodiments, the "updated" Bézier approximation may be considered a "new" approximation or Bézier curve. However, if it is determined that the third ink dot does not properly fit the active Bézier approximation, the active Bézier approximation is terminated and a new, different Bézier approximation is computed. By driving a GPU, the resulting smoothed ink output is rendered, where the resulting output comprises the first, second and third ink dots, in association with a stroke receiving surface, for example a touch display screen. (As will be understood and observed by those of ordinary skill in the art, although cubic Bézier smoothing is primarily described herein, quadratic Bézier smoothing, Bézier to the power of four and beyond, or any other known smoothing algorithm can be used within the embodiments of the present invention).

[0027] Consequentemente, uma modalidade da presente invenção é destinada a um método ser realizado por um ou mais dispositivos de computação que incluem pelo menos um processador, em que o método é para suavizar a entrada de tinta digital. O método inclui receber um primeiro ponto de tinta, receber um segundo ponto de tinta, computar uma aproximação de Bézier cúbica ativa com base nos primeiro e segundo pontos de tinta, receber um terceiro ponto de tinta (em que o terceiro ponto de tinta é recebido de modo sequencialmente posterior no tempo do que o primeiro e o segundo pontos de tinta), determinar se o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier cúbica ativa e computar uma nova aproximação de Bézier cúbica que utiliza os primeiro, segundo e terceiro pontos de tinta. A nova aproximação de Bézier cúbica pode compreender uma aproximação de Bézier cúbica ativa atualizada em que se determina que o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier cúbica ativa ou a uma nova aproximação de Bézier cúbica diferente, em que se determina que o terceiro ponto de tinta falha a se ajustar adequadamente à aproximação de Bézier cúbica ativa.[0027] Accordingly, one embodiment of the present invention is intended for a method to be performed by one or more computing devices that include at least one processor, wherein the method is to smooth the input of digital ink. The method includes receiving a first ink dot, receiving a second ink dot, computing an active cubic Bézier approximation based on the first and second ink dots, receiving a third ink dot (where the third ink dot is received sequentially later in time than the first and second ink dots), determine whether the third ink dot fits properly to the active cubic Bézier approximation, and compute a new cubic Bézier approximation that uses the first, second, and third ink dots. The new cubic Bezier approximation can comprise an updated active cubic Bezier approximation where the third ink dot is determined to fit properly to the active cubic Bezier approximation or a different new cubic Bezier approximation where the new cubic Bezier approximation is determined that the third ink dot fails to properly fit the active cubic Bézier approximation.

[0028] Em outra modalidade, a presente invenção é destinada a um sistema que compreende uma unidade de processamento central (CPU) e uma unidade de processamento de gráfico (GPU). A CPU é configurada para receber sequencialmente os primeiro e segundo pontos de tinta, gerar um fragmento de tinta suavizado ativo com base nos primeiro e segundo pontos de tinta, receber um terceiro ponto de tinta (de modo sequencialmente posterior no tempo), determinar se o terceiro ponto de tinta se ajusta adequadamente ao fragmento de tinta suavizado ativo e, mediante a determinação de que o terceiro ponto de tinta se ajusta adequadamente ao fragmento de tinta suavizado ativo, atualizar o fragmento de tinta suavizado ativo. Alternativamente, mediante a determinação de que o terceiro ponto de tinta não se ajusta adequadamente ao fragmento de tinta suavizado ativo, a CPU é configurada para terminar o fragmento de tinta suavizado ativo e iniciar um segundo fragmento de tinta suavizado. A GPU é configurada para renderizar a saída de tinta suavizada que compreende os primeiro, segundo e terceiro pontos de tinta em associação a uma superfície de exibição.[0028] In another embodiment, the present invention is intended for a system comprising a central processing unit (CPU) and a graphics processing unit (GPU). The CPU is configured to sequentially receive the first and second ink dots, generate an active smoothed ink patch based on the first and second ink dots, receive a third ink dot (sequentially later in time), determine whether the third ink dot fits properly to the active smoothed ink patch, and upon determining that the third ink point fits properly to the active smoothed ink patch, update the active smoothed ink patch. Alternatively, upon determining that the third ink dot does not properly fit the active smoothed ink patch, the CPU is configured to terminate the active smoothed ink patch and start a second smoothed ink patch. The GPU is configured to render smoothed ink output comprising the first, second, and third ink dots associated with a display surface.

[0029] Em ainda outra modalidade, a presente invenção é destinada a um aparelho que compreende pelo menos um processador e uma memória que armazena uma rotina de suavização e renderização de tinta digital. Quando executada por pelo menos um processador, a rotina de suavização e renderização de tinta digital faz com que o aparelho receba um primeiro ponto de tinta; receba um segundo ponto de tinta; compute uma aproximação de Bézier cúbica ativa com base nos primeiro e segundo pontos de tinta; receba um terceiro ponto de tinta (de modo sequencialmente posterior no tempo em relação ao primeiro e ao segundo pontos de tinta); determine se o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier cúbica ativa; compute uma nova aproximação de Bézier cúbica com o uso dos primeiro, segundo e terceiro pontos de tinta; e renderize a saída de tinta suavizada que compreende os primeiro, segundo e terceiro pontos de tinta em associação a uma superfície de exibição.[0029] In yet another embodiment, the present invention is aimed at an apparatus comprising at least one processor and a memory that stores a digital ink smoothing and rendering routine. When run by at least one processor, the digital ink smoothing and rendering routine causes the device to receive a first dot of ink; receive a second ink point; compute an active cubic Bézier approximation based on the first and second ink points; receive a third ink dot (sequentially later in time than the first and second ink dots); determine if the third ink dot fits properly to the active cubic Bézier approximation; compute a new cubic Bézier approximation using the first, second, and third ink dots; and render smoothed ink output comprising the first, second, and third ink dots in association with a display surface.

[0030] Tendo descrito brevemente uma visão geral de modalidades da presente invenção, um ambiente operacional exemplificativo em que modalidades da presente invenção podem ser implantadas é descrito abaixo a fim de fornecer um contexto geral para diversos aspectos da presente invenção. Com referência às Figuras em geral e inicialmente à Figura 1 em particular, um ambiente operacional exemplificativo para implantar modalidades da presente invenção é mostrado e projetado geralmente como um dispositivo de computação 100. O dispositivo de computação 100 é apenas um exemplo de um ambiente de computação adequado e não é destinado a sugerir qualquer limitação ao escopo de uso ou à funcionalidade das modalidades da invenção. O dispositivo de computação 100 também não deve ser interpretado como tendo qualquer dependência ou exigência em relação a qualquer um componente, nem qualquer combinação de componentes ilustrada.[0030] Having briefly described an overview of embodiments of the present invention, an exemplary operating environment in which embodiments of the present invention may be deployed is described below in order to provide a general context for various aspects of the present invention. With reference to the Figures in general and initially to Figure 1 in particular, an exemplary operating environment for implementing embodiments of the present invention is shown and designed generally as computing device 100. Computing device 100 is just one example of a computing environment adequate and is not intended to suggest any limitation on the scope of use or functionality of embodiments of the invention. Computing device 100 is also not to be construed as having any dependency or requirement on any one component, nor any combination of components illustrated.

[0031] As modalidades da invenção podem ser descritas no contexto geral de código de computador ou instruções utilizáveis por máquina, incluindo instruções utilizáveis por máquina ou executáveis por computador, tais como módulos de programa, que são executadas por um computador ou outra máquina, tal como um assistente de dados pessoais ou outro dispositivo manual. Geralmente, os módulos de programa incluem rotinas, programas, objetos, componentes, estruturas de dados e semelhantes e/ou se referem a código que realiza tipos de dados abstratos de tarefas particulares ou implementos particulares. As modalidades da invenção podem ser praticadas em uma variedade de configurações de sistema, incluindo, mas sem limitação, dispositivos manuais, aparelhos eletrônicos de consumidor, computadores de propósito geral, dispositivos de computação de mais especialidade e semelhantes. As modalidades da invenção também podem ser praticadas em ambientes de computação distribuídos, em que tarefas são realizadas por dispositivos de processamento remotos que são ligados através de uma rede de comunicações.[0031] Embodiments of the invention may be described in the general context of computer code or machine-usable instructions, including machine-usable or computer-executable instructions, such as program modules, that are executed by a computer or other machine, such as such as a personal data assistant or other handheld device. Generally, program modules include routines, programs, objects, components, data structures, and the like, and/or refer to code that realizes abstract data types of particular tasks or particular implements. Embodiments of the invention may be practiced in a variety of system configurations, including, but not limited to, handheld devices, consumer electronics, general purpose computers, more specialty computing devices, and the like. Embodiments of the invention can also be practiced in distributed computing environments, where tasks are performed by remote processing devices that are linked via a communications network.

[0032] Ainda com referência à Figura 1, o dispositivo de computação 100 inclui um barramento 110 que acopla direta ou indiretamente os seguintes dispositivos: uma memória 112, um ou mais processadores 114, um ou mais componentes de apresentação 116, uma ou mais portas de entrada/saída (I/O) 118, um ou mais componentes de I/O 120 e uma fonte de alimentação ilustrativa 122. O barramento 110 representa o que pode ser um ou mais barramentos (tais como um barramento de endereço, um barramento de dados ou uma combinação dos mesmos). Embora os diversos blocos da Figura 1 sejam mostrados com linhas por uma questão de clareza, na realidade, esses blocos representam componentes lógicos, não necessariamente reais. Por exemplo, uma pessoa pode considerar um componente de apresentação, tal como um dispositivo de exibição, como sendo um componente de I/O. Além disso, os processadores têm memória. Os inventores da presente invenção reconhecem que tal é a natureza da técnica e reiteram que o diagrama da Figura 1 é meramente ilustrativo de um dispositivo de computação exemplificativo que pode ser usado em conexão com uma ou mais modalidades da presente invenção. A distinção não é feita entre tais categorias como "estação de trabalho", "servidor", "computador do tipo laptop", "dispositivo manual" etc., uma vez que todos estão contemplados no escopo da Figura 1 e na referência ao "dispositivo de computação".[0032] Still referring to Figure 1, the computing device 100 includes a bus 110 that directly or indirectly couples the following devices: a memory 112, one or more processors 114, one or more presentation components 116, one or more ports input/output (I/O) interface 118, one or more I/O components 120, and an illustrative power supply 122. Bus 110 represents what may be one or more buses (such as an address bus, a bus data or a combination thereof). Although the various blocks in Figure 1 are shown with lines for clarity, in reality these blocks represent logical, not necessarily real, components. For example, one might consider a presentation component, such as a display device, to be an I/O component. Also, processors have memory. The inventors of the present invention recognize that such is the nature of the art and reiterate that the diagram of Figure 1 is merely illustrative of an exemplary computing device that may be used in connection with one or more embodiments of the present invention. No distinction is made between such categories as "workstation", "server", "laptop computer", "handheld device", etc., as they are all within the scope of Figure 1 and the reference to "device computing".

[0033] O dispositivo de computação 100 inclui tipicamente uma variedade de mídias legíveis por computador. As mídias legíveis por computador podem ser quaisquer mídias disponíveis que são acessíveis pelo dispositivo de computação 100 e incluem tanto mídias voláteis quanto não voláteis, mídias removíveis quanto não removíveis. As mídias legíveis por computador compreendem mídias de armazenamento por computador e mídias de comunicação; mídias de armazenamento por computador que excluem sinais por si. As mídias de armazenamento de computador incluem mídias voláteis e não voláteis, mídias removíveis e não removíveis implantadas em qualquer método ou tecnologia para armazenamento de informações, tal como instruções legíveis por computador, estruturas de dados, módulos de programa ou outros dados. As mídias de armazenamento de computador incluem, mas sem limitação, RAM, ROM, EEPROM, memória flash ou outra tecnologia de memória, CD-ROM, discos versáteis digitais (DVDs) ou outro armazenamento em disco óptico, cassetes magnéticos, fita magnética, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, ou qualquer outra mídia tangível que possa ser usada para armazenar as informações desejadas e que possa ser acessada pelo dispositivo de computação 100. As mídias de comunicação, por outro lado, incorporam instruções legíveis por computador, estruturas de dados, módulos de programa ou outros dados em um sinal de dados modulados, tal como uma onda de portadora ou outro mecanismo de transporte, e inclui quaisquer mídias de entrega de informações. O termo "sinal de dados modulado" significa um sinal que tem uma ou mais características definidas ou alteradas de tal maneira a codificar as informações no sinal. A título de exemplo e não de limitação, as mídias de comunicação incluem mídias com fio, tal como uma rede com fio ou uma conexão com fio direta, e mídias sem fio, tais como acústica, infravermelho e outras mídias sem fio. As combinações de quaisquer dos supracitados também devem ser abrangidas pelo escopo de mídias legíveis por computador.[0033] Computing device 100 typically includes a variety of computer-readable media. Computer-readable media can be any available media that is accessible by computing device 100 and include both volatile and non-volatile media, removable and non-removable media. Computer readable media include computer storage media and communication media; computer storage media that delete signals themselves. Computer storage media include volatile and non-volatile media, removable and non-removable media embedded in any method or technology for storing information, such as computer-readable instructions, data structures, program modules or other data. Computer storage media include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVDs) or other optical disc storage, magnetic cassettes, magnetic tape, magnetic disk or other magnetic storage devices, or any other tangible media that can be used to store the desired information and that can be accessed by computing device 100. Communication media, on the other hand, embody computer-readable instructions, data structures, program modules or other data on a modulated data signal, such as a carrier wave or other transport mechanism, and includes any information delivery media. The term "modulated data signal" means a signal that has one or more characteristics defined or altered in such a way as to encode information in the signal. By way of example and not limitation, communication media include wired media, such as a wired network or a direct wired connection, and wireless media, such as acoustic, infrared, and other wireless media. Combinations of any of the foregoing shall also fall within the scope of computer-readable media.

[0034] A memória 112 inclui mídias de armazenamento por computador na forma de memória volátil e/ou não volátil. A memória pode ser removível, não removível ou uma combinação das mesmas. Os dispositivos de hardware exemplificativos incluem memória de estado sólido, unidades rígidas, unidades de disco óptico e semelhantes. O dispositivo de computação 100 inclui um ou mais processadores que leem dados a partir de diversas entidades, tais como a memória 112 ou os componentes de I/O 120. O componente (ou os componentes) de apresentação 116 apresentam indicações de dados para um usuário ou outro dispositivo. Os componentes de apresentação exemplificativos incluem um dispositivo de exibição, uma alto-falante, um componente de impressão, um componente de vibração e semelhantes.[0034] Memory 112 includes computer storage media in the form of volatile and/or non-volatile memory. Memory can be removable, non-removable, or a combination thereof. Exemplary hardware devices include solid state memory, hard drives, optical disk drives and the like. Computing device 100 includes one or more processors that read data from various entities, such as memory 112 or I/O components 120. Presentation component (or components) 116 present data indications to a user or another device. Exemplary presentation components include a display device, a speaker, a print component, a vibration component, and the like.

[0035] As portas de I/O 118 permitem que o dispositivo de computação 100 seja logicamente acoplado a outros dispositivos que incluem os componentes de I/O 120, em que alguns podem ser embutidos. Os componentes de I/O ilustrativo incluem um microfone, um joystick, um pad de jogos, um disco de satélite, um digitalizador, uma impressora, um dispositivo de exibição, um dispositivo sem fio, um controlador (tal como um stylus, um teclado e um mouse), uma interface de usuário natural (NUI) e semelhante. Nas modalidades, um digitalizador de caneta (não mostrado) e um instrumento de entrada anexo (também não mostrado, mas que pode incluir, a título de exemplo apenas, uma caneta ou um stylus) são fornecidos a fim de capturar digitalmente a entrada de usuário de mão livre. A conexão entre o digitalizador de caneta e o processador (ou processadores) 114 pode ser direta ou por meio de um acoplamento que utiliza uma porta em série, uma porta paralela e/ou outra interface e/ou outro sistema barramento conhecido na técnica. Além disso, o componente de entrada de digitalizador pode ser um componente separado de um componente de saída, tal como um dispositivo de exibição ou, em algumas modalidades, a área de entrada utilizável de um digitalizador pode ser coextensiva com a área de exibição de um dispositivo de exibição, integrado com o dispositivo de exibição, ou pode existir como um dispositivo separado que se sobrepõe ou é anexo de outro modo a um dispositivo de exibição. Qualquer uma e todas tais variações, e qualquer combinação das mesmas, são contempladas para estarem dentro do escopo das modalidades da presente invenção.[0035] The I/O ports 118 allow the computing device 100 to be logically coupled to other devices that include the I/O components 120, some of which may be embedded. I/O components that are illustrated include a microphone, a joystick, a game pad, a satellite disk, a digitizer, a printer, a display device, a wireless device, a controller (such as a stylus, a keyboard and a mouse), a natural user interface (NUI), and the like. In embodiments, a pen digitizer (not shown) and an accompanying input instrument (also not shown, but which may include, by way of example only, a pen or stylus) are provided in order to digitally capture user input. handheld. The connection between the digitizer pen and the processor (or processors) 114 can be direct or via a coupling utilizing a serial port, a parallel port and/or other interface and/or other bus system known in the art. Furthermore, the digitizer input component may be a separate component from an output component such as a display device or, in some embodiments, the usable input area of a digitizer may be coextensive with the display area of a digitizer. display device, integrated with the display device, or may exist as a separate device that overlays or is otherwise attached to a display device. Any and all such variations, and any combination thereof, are contemplated to be within the scope of embodiments of the present invention.

[0036] Uma NUI processa gestos de ar, voz ou outras entradas fisiológicas geradas por um usuário. As entradas de NUI apropriada podem ser interpretadas como cursos de tinta para apresentação em associação ao dispositivo de computação 100. Essas solicitações podem ser transmitidas para o elemento de rede apropriado para processamento adicional. Uma NUI implanta qualquer combinação de reconhecimento de fala, toque e reconhecimento de stylus, reconhecimento facial, reconhecimento biométrico, reconhecimento de gesto tanto na tela quanto adjacente à tela, gestos de ar, cabeça e rastreamento ocular e reconhecimento de toque associado a visores no dispositivo de computação 100. O dispositivo de computação 100 pode ser equipado com câmeras de profundidade, tais como, sistemas de câmera estereoscópicos, sistemas de câmera de infravermelho, sistemas de câmera de RGB e combinações desses para detecção e reconhecimento de gesto. Ainda, o dispositivo de computação 100 pode ser equipado com acelerômetros ou giroscópios que permitem a detecção de movimento. A saída dos acelerômetros ou dos giroscópios pode ser fornecida para p visor do dispositivo de computação 100 para renderizar realidade aumentada imersiva ou realidade virtual.[0036] A NUI processes air gestures, voice or other physiological inputs generated by a user. Appropriate NUI entries may be interpreted as ink strokes for presentation in association with computing device 100. These requests may be transmitted to the appropriate network element for further processing. A NUI deploys any combination of speech recognition, touch and stylus recognition, facial recognition, biometric recognition, both on-screen and screen-adjacent gesture recognition, air gestures, head and eye tracking, and touch recognition associated with on-device displays. computing device 100. The computing device 100 may be equipped with depth cameras such as stereoscopic camera systems, infrared camera systems, RGB camera systems and combinations thereof for gesture detection and recognition. Further, the computing device 100 may be equipped with accelerometers or gyroscopes that allow motion detection. Output from accelerometers or gyroscopes may be provided to the display of computing device 100 for rendering immersive augmented reality or virtual reality.

[0037] Os aspectos da matéria descrita no presente documento podem ser descritos no contexto geral de instruções executáveis por computador, tais como módulos de programa que são executados por um dispositivo móvel. Geralmente, os módulos de programa incluem rotinas, programas, objetos, componentes, estruturas de dados e semelhantes que executam tarefas ou implantam tipos de dados abstratos particulares. Os aspectos da matéria descrita no presente documento também podem ser praticados em ambientes de computação distribuídos, em que as tarefas são realizadas por meio de dispositivos de processamento remoto que são ligados através de redes de comunicações. Em um ambiente de computação distribuído, os módulos de programa podem estar situados em mídias de armazenamento em computador tanto locais quanto remotas, incluindo em dispositivos de armazenamento de memória. As instruções utilizáveis por computador formam uma interface para permitir que um computador reaja de acordo com uma fonte de entrada. As instruções cooperam com outros segmentos de código para iniciar uma variedade de tarefas em resposta aos dados recebidos em conjunto com a fonte dos dados recebidos.[0037] Aspects of subject matter described herein may be described in the general context of computer executable instructions, such as program modules that are executed by a mobile device. Generally, program modules include routines, programs, objects, components, data structures, and the like that perform tasks or implement particular abstract data types. Aspects of subject matter described herein may also be practiced in distributed computing environments, where tasks are performed via remote processing devices that are linked via communications networks. In a distributed computing environment, program modules may be located on both local and remote computer storage media, including on memory storage devices. Computer-usable instructions form an interface to allow a computer to react to an input source. Instructions cooperate with other code segments to initiate a variety of tasks in response to received data in conjunction with the source of the received data.

[0038] Conforme anteriormente apresentado, as modalidades da presente invenção fornecem sistemas, métodos e mídias de armazenamento legíveis por computador para sistemas, métodos e mídias de armazenamento legíveis por computador são fornecidos para suavização de curso de tinta em tempo real eficiente, previsão de trajetória e renderização de curso de tinta impulsionada por GPU. Em referência à Figura 2, um diagrama de blocos é fornecido, o qual ilustra um sistema de computação exemplificativo 200 em que modalidades da presente invenção podem ser empregadas. Geralmente, o sistema de computação 200 ilustra um ambiente em que a entrada de tinta digital parece suave durante e após a entrada de curso, mesmo em níveis de zoom significativos. O sistema de computação 200 ilustra ainda um ambiente em que a suavização e a renderização de cursos de tinta digital são fornecidas de forma que alterações ao curso com base na suavização e/ou em outro processamento não sejam substancialmente percebidas por um usuário durante a entrada de curso ou após o curso. Ainda ainda, o sistema de computação 200 ilustra um ambiente em que a latência de renderização não é aumentada e é normalmente diminuída, pelo menos em parte, pelo uso das técnicas de previsão ainda descritas no presente documento abaixo.[0038] As previously presented, embodiments of the present invention provide systems, methods and computer-readable storage media for systems, methods and computer-readable storage media are provided for efficient real-time ink stroke smoothing, trajectory prediction and GPU-driven ink stroke rendering. With reference to Figure 2, a block diagram is provided which illustrates an exemplary computing system 200 in which embodiments of the present invention may be employed. Generally, computing system 200 illustrates an environment where digital ink input appears smooth during and after stroke input, even at significant zoom levels. Computing system 200 further illustrates an environment in which smoothing and rendering of digital ink strokes are provided such that changes to the stroke based on smoothing and/or other processing are not substantially noticeable to a user during ink entry. course or after the course. Still further, computing system 200 illustrates an environment in which rendering latency is not increased and is typically decreased, at least in part, by use of the prediction techniques further described herein below.

[0039] Dentre outros componentes não mostrados, o sistema de computação 200 inclui geralmente um dispositivo de computação de usuário 210 configurado para receber a entrada de tinta digital e fornecer a saída de tinta suavizada em associação a um visor 224 e um mecanismo de suavização de tinta 212 configurado para suavizar e prever uma entrada de curso de tinta futura, conforme descrito mais completamente abaixo. Nas modalidades (e conforme mostrado na Figura 2), o dispositivo de computação de usuário 210 e o mecanismo de suavização de tinta 212 podem estar em comunicação um com o outro por meio de uma rede 214. A rede 214 pode incluir, sem limitação, uma ou mais redes de área local (LANs) e/ou redes de área ampla (WANs). Tais ambientes de rede são comuns em escritórios, redes de computador de toda a empresa, intranets e a Internet. Consequentemente, a rede 214 não é ainda descrita no presente documento.[0039] Among other components not shown, the computing system 200 generally includes a user computing device 210 configured to receive digital ink input and provide smoothed ink output in association with a display 224 and an ink smoothing mechanism ink 212 configured to smooth and predict a future ink stroke input, as described more fully below. In embodiments (and as shown in Figure 2), the user computing device 210 and the ink smoothing mechanism 212 may be in communication with each other via a network 214. The network 214 may include, without limitation, one or more local area networks (LANs) and/or wide area networks (WANs). Such network environments are common in offices, enterprise-wide computer networks, intranets, and the Internet. Consequently, the network 214 is not yet described in this document.

[0040] Deve ser entendido que qualquer número de dispositivos de computação de usuário 210 e/ou mecanismos de suavização de tinta 212 pode ser empregado no sistema de computação 200 dentro do escopo das modalidades da presente invenção. Cada um pode compreender um único dispositivo/interface ou múltiplos dispositivos/interfaces que cooperam em um ambiente distribuído. Por exemplo, o mecanismo de suavização de tinta 212 pode compreender múltiplos dispositivos e/ou módulos dispostos em um ambiente distribuído que fornecem coletivamente a funcionalidade do mecanismo de suavização de tinta 212 descrita no presente documento. Ainda, outros componentes ou módulos não mostrados também podem estar incluídos no sistema de computação 200.[0040] It should be understood that any number of user computing devices 210 and/or ink smoothing mechanisms 212 may be employed in computing system 200 within the scope of embodiments of the present invention. Each can comprise a single device/interface or multiple devices/interfaces cooperating in a distributed environment. For example, the ink smoothing engine 212 may comprise multiple devices and/or modules arranged in a distributed environment that collectively provide the functionality of the ink smoothing engine 212 described herein. Still, other components or modules not shown may also be included in computing system 200.

[0041] Em algumas modalidades, um ou mais dentre os componentes/módulos ilustrados podem ser implantados como aplicativos autônomos. Em outras modalidades, um ou mais dentre os componentes/módulos ilustrados podem ser implantados por meio do dispositivo de computação de usuário 210, do mecanismo de suavização de tinta 212 ou como um serviço com base em Internet. Será entendido pelas pessoas de habilidade comum na técnica que os componentes/módulos ilustrados na Figura 2 são exemplificativos em natureza e em número e não devem ser interpretados como limitantes. Qualquer número de componentes/módulos pode ser empregado para alcançar a funcionalidade desejada dentro do escopo das modalidades da presente invenção. Ainda, os componentes/módulos podem estar localizados em qualquer número de mecanismos de suavização de tinta 212 e/ou de dispositivos de computação de usuário 210. A título de exemplo apenas, o mecanismo de suavização de tinta 212 pode ser fornecido como um único dispositivo de computação, um agrupamento de dispositivos de computação ou um dispositivo de computação remoto a partir de um ou mais dos componentes restantes.[0041] In some embodiments, one or more of the illustrated components/modules can be deployed as standalone applications. In other embodiments, one or more of the illustrated components/modules may be deployed via user computing device 210, ink smoothing engine 212, or as an Internet-based service. It will be understood by those of ordinary skill in the art that the components/modules illustrated in Figure 2 are exemplary in nature and number and are not to be construed as limiting. Any number of components/modules can be employed to achieve the desired functionality within the scope of embodiments of the present invention. Further, the components/modules may be located in any number of ink smoothing engines 212 and/or user computing devices 210. By way of example only, the ink smoothing engine 212 may be provided as a single device. computing device, a grouping of computing devices, or a remote computing device from one or more of the remaining components.

[0042] Deve ser entendido que essa e outras disposições descritas no presente documento são apresentadas apenas como exemplos. Outras disposições e outros elementos (por exemplo, máquinas, interfaces, funções, ordens e agrupamentos de funções, etc.) podem ser usados além daqueles mostrados e/ou descritos ou no lugar dos mesmos e alguns elementos podem ser completamente omitidos. Ainda, muitos dos elementos descritos no presente documento são entidades funcionais que podem ser implantadas como componentes distintos ou distribuídos ou em conjunto com outros componentes e em qualquer combinação e local adequados. Diversas funções descritas no presente documento como sendo realizadas por uma ou mais entidades podem ser executadas por hardware, firmware, aplicativos, unidades e/ou software. Por exemplo, diversas funções podem ser executadas por um processador que executa instruções armazenadas na memória.[0042] It should be understood that this and other provisions described in this document are presented as examples only. Other layouts and other elements (eg machines, interfaces, functions, function orders and groupings, etc.) may be used in addition to those shown and/or described or in place of them, and some elements may be omitted entirely. Furthermore, many of the elements described in this document are functional entities that can be deployed as separate or distributed components or together with other components and in any suitable combination and location. Several functions described herein as being performed by one or more entities may be performed by hardware, firmware, applications, drives and/or software. For example, several functions can be performed by a processor that executes instructions stored in memory.

[0043] O dispositivo de computação de usuário 210 pode incluir qualquer tipo de dispositivo de computação, tal como o dispositivo de computação 100 descrito com referência à Figura 1, por exemplo. Conforme ilustrado, o dispositivo de computação de usuário 210 inclui um componente de recebimento de entrada de tinta 216, um componente de transmissão de entrada de tinta 218, um componente de recebimento de saída de curso de tinta suavizado (e, em modalidades, estendido) 220 e uma GPU 222 para renderizar saída de tinta suavizada em associação a um visor 224. O componente de recebimento de entrada de tinta 216 é configurado para receber uma entrada de usuário de cursos de tinta, geralmente inserida por meio de um componente de I/O, tal como uma caneta ou um stylus. O componente de transmissão de entrada de tinta 218 é configurado para transmitir cursos de tinta recebidos pelo componente de recebimento de entrada de tinta 216 para o mecanismo de suavização de tinta 212, por exemplo, por meio da rede 214. O componente de recebimento de saída de curso de tinta suavizado 220 é configurado para receber (geralmente a partir do mecanismo de suavização de tinta 212 por meio da rede 214, conforme descrito mais completamente abaixo), a saída de tinta suavizada para renderização em associação ao visor 224. A GPU 222 é configurada para processar (conforme descrito mais completamente abaixo) a saída de tinta suavizada recebida para renderização em associação ao visor 224.[0043] The user computing device 210 may include any type of computing device, such as the computing device 100 described with reference to Figure 1, for example. As illustrated, user computing device 210 includes an ink input receiving component 216, an ink input transmitting component 218, a smoothed (and, in embodiments, extended) ink stroke output receiving component 220 and a GPU 222 for rendering smoothed ink output in association with a display 224. The ink input receiving component 216 is configured to receive user input of ink strokes, generally entered via an I/O component. O, just like a pen or stylus. The input ink transmit component 218 is configured to transmit ink strokes received by the input ink receive component 216 to the ink smoothing mechanism 212, for example, via network 214. The output receive component Smoothed ink stroke engine 220 is configured to receive (generally from ink smoothing engine 212 via network 214, as described more fully below) smoothed ink output for rendering in association with display 224. GPU 222 is configured to process (as described more fully below) the smoothed ink output received for rendering in association with display 224.

[0044] Deve ser observado que a funcionalidade descrita no presente documento como sendo realizada por qualquer componente do dispositivo de computação de usuário 210 pode ser realizada por qualquer outro aplicativo, software de aplicativo, interface de usuário ou semelhantes que têm capacidade para renderizar conteúdo de gráfico. Deve ser ainda observado que as modalidades da presente invenção são igualmente aplicáveis a dispositivos de computação móveis e dispositivos que aceitam entrada de gesto, toque e/ou voz. Qualquer uma e todas tais variações, e qualquer combinação das mesmas, são contempladas para estarem dentro do escopo das modalidades da presente invenção.[0044] It should be noted that the functionality described herein as being performed by any component of the user computing device 210 may be performed by any other application, application software, user interface or the like that has the capability of rendering content from graphic. It should be further noted that embodiments of the present invention are equally applicable to mobile computing devices and devices that accept gesture, touch and/or voice input. Any and all such variations, and any combination thereof, are contemplated to be within the scope of embodiments of the present invention.

[0045] Conforme ilustrado, o mecanismo de suavização de tinta 212 inclui um ajuste de spline 226, um componente de previsão de tinta 232 e um componente de renderização de tinta 234. O ajuste de spline 226 é configurado para aproximar um curso de pontos de tinta a um conjunto de segmentos de Bézier cúbicos. O ajuste de spline 226 é alimentado a um único ponto de tinta em um momento e para cada novo ponto de tinta, é configurado para atualizar o segmento de Bézier ativo ou iniciar um novo segmento de Bézier se o novo ponto de tinta não pode ser ajustado bem o suficiente ao segmento de Bézier ativo. Desse modo, o ajuste de spline 226 inclui dois subcomponentes: um ajuste de Bézier 228 e um componente de segmentação 230.[0045] As illustrated, the ink smoothing engine 212 includes a spline adjustment 226, an ink prediction component 232, and an ink rendering component 234. The spline adjustment 226 is configured to approximate a course of dots from ink to a set of cubic Bézier segments. The 226 spline fit is fed to a single ink dot at a time and for each new ink dot, it is set to either update the active Bézier segment or start a new Bézier segment if the new ink dot cannot be adjusted well enough to the active Bézier segment. Thus, the spline fit 226 includes two subcomponents: a Bezier fit 228 and a slicer component 230.

[0046] O ajuste de Bézier 228 é configurado para manter um conjunto de pontos ativos que é recebido sequencialmente em um momento conforme os mesmos são digitalizados. Cada vez que o conjunto é atualizado, o ajuste de Bézier 228 é configurado para computar uma nova aproximação de Bézier cúbica. Entretanto, o conjunto ativo não contém necessariamente todos os pontos desde o começo do curso uma vez que o mesmo pode ser redefinido pelo componente de segmentação 230, conforme descrito mais completamente abaixo.[0046] The Bézier 228 setting is configured to maintain a set of active points that are received sequentially at a time as they are digitized. Each time the set is updated, the Bézier fit 228 is set to compute a new cubic Bézier approximation. However, the active set does not necessarily contain all points from the start of the course as it may be redefined by segmentation component 230, as described more fully below.

[0047] O componente de segmentação 230 é configurado para avaliar a qualidade do ajuste produzido pelo ajuste de Bézier 228 e decidir quando atualizar a aproximação de Bézier existente e quando iniciar uma nova aproximação ou curva de Bézier. O ajuste de Bézier 228 também realiza tarefas, tais como detecção de cúspide (descrito mais completamente abaixo) e controla as propriedades analíticas do spline configurando-se o ajuste de Bézier 228 (conforme descrito mais completamente abaixo).[0047] The segmentation component 230 is configured to evaluate the quality of the fit produced by the Bézier fit 228 and decide when to update the existing Bézier approximation and when to start a new approximation or Bézier curve. The 228 Bézier fit also performs tasks such as cusp detection (described more fully below) and controls the analytical properties of the spline by setting the 228 Bézier fit (as described more fully below).

AJUSTE DE BÉZIER 228BÉZIER ADJUSTMENT 228

[0048] Essa seção descreve como o ajuste de Bézier 228 se aproxima de um conjunto de pontos de tinta com uma aproximação ou curva de Bézier cúbica. Para brevidade, apenas informações posicionais são consideradas na presente descrição. Entretanto, é objetivo estender as fórmulas a qualquer número de recursos. Por exemplo, em algumas implantações, o raio de um ponto de tinta recebido (que pode ser proporcional à pressão exercida e ao tamanho do curso de pincel de entrada) pode ser utilizado. Em outras implantações, as propriedades que incluem inclinação, azimute ou semelhantes podem ser usadas. Qualquer um e todos os recursos, e qualquer combinação dos mesmos, são contemplados para estarem dentro do escopo das modalidades da presente invenção.[0048] This section describes how the 228 Bézier fit approximates a set of ink dots with an approximation or cubic Bézier curve. For brevity, only positional information is considered in the present description. However, it is intended to extend the formulas to any number of features. For example, in some deployments, the radius of an incoming paint dot (which can be proportional to the pressure exerted and the size of the input brush stroke) can be used. In other deployments, properties including tilt, azimuth, or the like may be used. Any and all features, and any combination thereof, are contemplated to be within the scope of embodiments of the present invention.

[0049] Em qualquer dado ponto no tempo, o ajuste de Bézier 228 se aproxima de um conjunto

Figure img0001
de pontos ativos com um único segmento de Bézier, B(t). A tarefa de ajuste é formulada como um problema de minimização:
Figure img0002
em que E é uma função de erro que será mais completamente descrita abaixo.[0049] At any given point in time, the Bézier fit 228 approximates a set
Figure img0001
of hotspots with a single Bézier segment, B(t). The fitting task is formulated as a minimization problem:
Figure img0002
where E is an error function that will be more fully described below.

[0050] Deixar que

Figure img0003
seja a linha poligonal implícita descrita pelo conjunto Sk. Então,
Figure img0004
[0050] Let
Figure img0003
let be the implicit polygonal line described by the set Sk. Then,
Figure img0004

[0051] Uma vez que é de alto custo computar a distância entre um ponto na linha poligonal e a curva de Bézier, de acordo com modalidades da presente invenção, a distância entre os dois pontos obtida amostrando-se a linha poligonal e a curva de Bézier no mesmo valor do parâmetro t é aproximada:

Figure img0005
[0051] Since it is expensive to compute the distance between a point on the polygonal line and the Bézier curve, according to embodiments of the present invention, the distance between the two points obtained by sampling the polygonal line and the curve Bézier at the same value of the parameter t is approximated:
Figure img0005

[0052] A função de erro para a qual a minimização é desejada pode, então, ser definida como:

Figure img0006
[0052] The error function for which minimization is desired can then be defined as:
Figure img0006

[0053] N = k e ti são selecionados de forma que

Figure img0007
a função de erro represente todos e apenas os pontos em Sk. Entretanto, uma vez que uma aproximação cúbica está sendo utilizada, a amostra inclui pelo menos quatro pontos.[0053] N = k and ti are selected so that
Figure img0007
the error function represents all and only the points in Sk. However, since a cubic approximation is being used, the sample includes at least four points.

MINIMIZAÇÃOMINIMIZATION

[0054] As variáveis do problema de minimização são pontos de controle de B. Deixe que C = [C0, C1, C2, C3] seja o vetor de pontos de controle. Uma abordagem descendente de gradiente é usada para encontrar valores ideais:

Figure img0008
[0054] The variables of the minimization problem are control points of B. Let C = [C0, C1, C2, C3] be the vector of control points. A gradient descent approach is used to find optimal values:
Figure img0008

[0055] O parâmetro da regra de atualização controla a taxa de convergência. Em geral, menos iteração é exigida com valores maiores, mas, ao mesmo tempo, os cálculos podem se tornar instáveis quando é grande. Um parâmetro exemplificativo que pode ser utilizado é:

Figure img0009
[0055] The update rule parameter controls the convergence rate. In general, less iteration is required with larger values, but at the same time, calculations can become unstable when large. An example parameter that can be used is:
Figure img0009

[0056] Além disso, o risco de divergência pode ser mitigado dividindo-se pelo número de iterações que não produziram quaisquer aperfeiçoamentos no erro de ajuste.[0056] Furthermore, the risk of divergence can be mitigated by dividing by the number of iterations that did not produce any improvements in the fit error.

[0057]

Figure img0010
é o gradiente do erro de aproximação em relação a pontos de controle de B e pode ser computado conforme o seguinte:
Figure img0011
[0057]
Figure img0010
is the gradient of the approximation error with respect to control points of B and can be computed as follows:
Figure img0011

[0058] Deve ser observado que existem quatro graus de liberdade na regra de atualização, que correspondem aos quatros pontos de controle de uma aproximação de Bézier cúbica. Entretanto, o componente de segmentação 230 descrito na próxima seção irá usar alguns desses graus de liberdade para impor propriedades analíticas desejáveis (por exemplo, continuidade) no spline.[0058] It should be noted that there are four degrees of freedom in the update rule, which correspond to the four control points of a cubic Bézier approximation. However, the slicer component 230 described in the next section will use some of these degrees of freedom to enforce desirable analytical properties (eg, continuity) on the spline.

COMPONENTE DE SEGMENTAÇÃO 230SEGMENTATION COMPONENT 230

[0059] O componente de segmentação 230 atinge duas tarefas de base. Primeiro, o mesmo decide a possibilidade de começar uma nova aproximação de Bézier ou atualizar a aproximação atual. Segundo, o mesmo reforça propriedades analíticas no spline (mais particularmente continuidade C0 ou C1) reconfigurando-se o ajuste de Bézier cúbico 228, em qualquer momento time uma nova aproximação ou curva é iniciada. Conforme utilizado no presente documento e conforme será entendido pelas pessoas de habilidade comum na técnica, a "continuidade" se refere à suavidade relativa nas juntas em que as curvas de Bézier adjacentes se conectam. "Continuidade C0" se refere a situações em que curvas de Bézier adjacentes compartilham os mesmos pontos terminais. "Continuidade C1" se refere a situações em que curvas de Bézier adjacentes compartilham tanto os mesmos pontos terminais quanto as mesmas derivadas.[0059] The threading component 230 accomplishes two basic tasks. First, it decides whether to start a new Bézier approximation or update the current approximation. Second, it enforces analytical properties on the spline (more particularly C0 or C1 continuity) by resetting the cubic Bézier fit 228, any time a new approximation or curve is initiated. As used herein and as will be understood by those of ordinary skill in the art, "continuity" refers to the relative smoothness at the joints where adjacent Bézier curves connect. "Continuity C0" refers to situations where adjacent Bézier curves share the same endpoints. "C1 continuity" refers to situations where adjacent Bézier curves share both the same endpoints and the same derivatives.

[0060] A decisão da possibilidade de iniciar uma nova aproximação de Bézier ou atualizar a aproximação atual é baseada na qualidade do ajuste. Mais especificamente, a decisão da possibilidade de iniciar uma nova aproximação de Bézier ou atualizar a aproximação atual é baseada na distância máxima entre os pontos de tinta digitalizados recebidos e a melhor aproximação computada pelo ajuste de Bézier cúbico 228. Nas modalidades, o limiar de corte pode ser 10 unidades himétricas (0,1mm), um ponto acima do qual os usuários em um estudo de usabilidade indicam que a tinta altera conforme novos pontos chegam (diferente de se estender para o novo ponto) foi observável. Deve ser observado, entretanto, que o limiar se correlaciona ao tamanho físico da tinta conforme o mesmo está sendo renderizado. Por exemplo, se a tinta molhada (isto é, a tinta renderizada durante a atividade de curso, antes que o instrumento de entrada seja liberado da superfície de recebimento) estiver sendo renderizada com 10x de magnificação, então, o limiar precisará ser provavelmente 10 vezes menor ou o usuário irá observar alterações de tinta. Obviamente, uma vez que a tinta seca (isto é, a tinta na superfície de recebimento uma vez que o instrumento de entrada é liberado da mesma) não altera (isto é, a segmentação já está feita), esse ponto é significativo apenas para tinta molhada. Deve ser ainda observado que o limiar pode ser uma função de qualquer quantidade de pontos de tinta anteriores, quaisquer recursos de tais pontos de tinta (por exemplo, coordenadas, pressão, inclinação, torção, etc.) e/ou pode ser dependente de dispositivo (por exemplo, DPI, memória disponível, CPU, GPU e semelhantes). Qualquer uma e todas tais variações, e qualquer combinação das mesmas, são contempladas para estarem dentro do escopo das modalidades da presente invenção.[0060] The decision whether to start a new Bézier approximation or update the current approximation is based on the quality of the fit. More specifically, the decision whether to start a new Bézier approximation or update the current approximation is based on the maximum distance between the received digitized ink dots and the best approximation computed by the cubic Bézier fit 228. In the modalities, the cutoff threshold could be 10 hymetric units (0.1mm), a point above which users in a usability study indicate the ink changes as new dots arrive (as opposed to extending to the new dot) was observable. It should be noted, however, that the threshold correlates to the physical size of the ink as it is being rendered. For example, if wet ink (that is, ink rendered during the stroke activity, before the input instrument is released from the receiving surface) is being rendered at 10x magnification, then the threshold would likely need to be 10 times smaller or the user will notice ink changes. Obviously, since ink dries (i.e. ink on receiving surface once input instrument is released from it) does not change (i.e. segmentation is already done), this point is only meaningful for ink wet. It should further be noted that the threshold may be a function of any amount of prior ink dots, any features of such ink dots (e.g. coordinates, pressure, tilt, twist, etc.) and/or may be device dependent. (e.g. DPI, available memory, CPU, GPU, and the like). Any and all such variations, and any combination thereof, are contemplated to be within the scope of embodiments of the present invention.

[0061] A outra tarefa importante realizada pelo componente de segmentação 230 é impor propriedades analíticas desejáveis no spline. Pelo menos, o spline precisa ser conectado (continuidade C0), que significa que o primeiro ponto de controle de cada curva ou segmento de Bézier precisa corresponder ao último ponto de controle da curva ou do segmento anterior, perdendo, desse modo, um grau de liberdade:

Figure img0012
[0061] The other important task performed by the segmentation component 230 is to enforce desirable analytical properties on the spline. At a minimum, the spline must be connected (C0 continuity), which means that the first control point of each Bézier curve or segment must correspond to the last control point of the previous curve or segment, thereby losing one degree of spline. freedom:
Figure img0012

[0062] Embora a continuidade C0 garanta que o spline está conectado, não é suficiente produzir tinta suave, conforme mostrado na Figura 3, em que as regiões de conexão circuladas apontam os artefatos ruins (não suaves).[0062] Although the C0 continuity ensures that the spline is connected, it is not enough to produce smooth ink, as shown in Figure 3, where the circled connection regions point out the bad (non-smooth) artifacts.

[0063] De acordo com as modalidades da presente invenção, os artefatos ruins na Figura 3 podem ser removidos impondo-se a continuidade C1. A continuidade C1 paramétrica exige que a derivada de um segmento em t=0 corresponda àquela do segmento anterior em t=1:

Figure img0013
[0063] According to the embodiments of the present invention, the bad artifacts in Figure 3 can be removed by imposing the continuity C1. Parametric C1 continuity requires that the derivative of a segment at t=0 correspond to that of the previous segment at t=1:
Figure img0013

[0064] Entretanto, outro grau de liberdade é perdido quando a continuidade C1 paramétrica é imposta, a qual deixa pouca liberdade para produzir bons ajustes. Felizmente, tudo que é necessário para que o spline pareça suave é a continuidade C1 geométrica (em oposição a paramétrica) que é menos restritiva e exige uma restrição apenas da direção do segundo ponto de controle:

Figure img0014
[0064] However, another degree of freedom is lost when parametric C1 continuity is imposed, which leaves little freedom to produce good fits. Fortunately, all that is needed to make the spline look smooth is geometric (as opposed to parametric) C1 continuity which is less restrictive and requires a constraint on just the direction of the second control point:
Figure img0014

[0065] De acordo com modalidades da presente invenção, a continuidade C1 geométrica pode ser imposta projetando-se o segundo ponto de controle na direção exigida, após a regra de atualização ter sido aplicada.[0065] According to embodiments of the present invention, geometric continuity C1 can be imposed by projecting the second control point in the required direction, after the update rule has been applied.

IMPEDIR COMPORTAMENTO INSTÁVELPREVENT UNSTABLE BEHAVIOR

[0066] Em momentos, a implantação de continuidade C1 geométrica resulta na observação de comportamento instável desagradável, por exemplo, conforme mostrado na Figura 4. Esse comportamento normalmente parece pior do que as cúspides ocasionais observados nos splines contínuos C0. A causa principal desse comportamento parece ser que a derivada do último Bézier cometido em t=1 não concorda com aquela dos pontos digitalizados correspondentes. Portanto, o problema pode ser mitigado, conforme ilustrado na Figura 5, adicionando-se uma nova restrição no ajuste de Bézier 228 que a derivada da aproximação de Bézier em t=1 precisa corresponder àquela da aproximação ou do segmento de Bézier que conecta os últimos dois pontos digitalizados. Deve ser observado que outras mitigações são possíveis dentro do escopo das modalidades da presente invenção. Por exemplo, tanto o Bézier anterior quanto o atual podem ser atualizados. Alternativamente, dois Béziers podem ser ajustados em um momento, a continuidade imposta entre os dois e um novo par de segmentos de Bézier iniciados sempre que as exigências de ajuste não são satisfeitas.[0066] At times, the deployment of geometric C1 continuity results in the observation of unsightly choppy behavior, for example, as shown in Figure 4. This behavior typically looks worse than the occasional cusps observed on the C0 continuous splines. The main cause of this behavior seems to be that the derivative of the last Bézier committed at t=1 does not agree with that of the corresponding digitized points. Therefore, the problem can be mitigated, as illustrated in Figure 5, by adding a new restriction on the Bézier fit 228 that the derivative of the Bézier approximation at t=1 must correspond to that of the approximation or the Bézier segment that connects the last two digitized points. It should be noted that other mitigations are possible within the scope of embodiments of the present invention. For example, both the previous and current Bézier can be updated. Alternatively, two Béziers can be fitted at a time, continuity imposed between the two and a new pair of Bézier segments initiated whenever the fit requirements are not satisfied.

DETECÇÃO DE CÚSPIDECUSP DETECTION

[0067] Embora, em geral, a continuidade C1 seja uma propriedade desejável, existem casos que não é benéfico reforçar. Mais particularmente, a continuidade C1 remove até cúspides pretendidas. Por esse motivo, o componente de segmentação 230 é ainda configurado para configurar o ajuste de Bézier 228 para continuidade C1 com base nos resultados de detecção de cúspide.[0067] Although, in general, C1 continuity is a desirable property, there are cases where it is not beneficial to enforce. More particularly, the C1 continuity removes even intended cusps. For this reason, segmentation component 230 is further configured to configure the Bézier fit 228 for C1 continuity based on cusp detection results.

[0068] Uma abordagem direta para detecção de cúspide é verificar o ângulo formado pelos últimos três pontos e classificar como ângulos de cúspide abaixo de um limiar predefinido. Uma abordagem semelhante é basear a decisão no ângulo formado pela derivada do segmento anterior em t=1 com aquela do segmento atual em t=0. Qualquer uma e todas as abordagens, e qualquer combinação das mesmas, são contempladas para estarem dentro do escopo das modalidades da presente invenção.[0068] A straightforward approach to cusp detection is to check the angle formed by the last three points and classify cusp angles as below a predefined threshold. A similar approach is to base the decision on the angle formed by the derivative of the previous segment at t=1 with that of the current segment at t=0. Any and all approaches, and any combination thereof, are contemplated to be within the scope of embodiments of the present invention.

COMPONENTE DE PREVISÃO DE TINTA 232INK PREDICTION COMPONENT 232

[0069] A previsão dos próximos locais do instrumento de entrada é um problema difícil de resolver devido ao fato de que a escrita à mão é cheia de alterações pontuais e imprevisíveis em direção e o usuário pode levantar a caneta (ou outro instrumento de entrada) em qualquer momento, torando, desse modo, a previsão não apenas desnecessária, mas potencialmente prejudicial.[0069] Predicting the next locations of the input instrument is a difficult problem to solve due to the fact that handwriting is full of punctual and unpredictable changes in direction and the user can lift the pen (or other input instrument) at any time, thereby making prediction not only unnecessary but potentially harmful.

[0070] O componente de previsão de tinta 232 é configurado para estabelecer, primeiro, a qualidade de previsão definindo-se uma métrica que permite a avaliação da qualidade de uma previsão de tinta. Existem dois aspectos principais a se considerar: experiência do usuário e desempenho. Em termos de experiência de usuário, o resultado de uma previsão errada é que um pedaço de tinta é renderizado em uma tela ou outra superfície de exibição e é, então, liberada dentro de alguns quadros, assim que a previsão se prova errada. Isso pode produzir um efeito cintilante que é exacerbado quando as previsões não são estáveis por todos os quadros. A métrica precisa refletir se o erro de previsão pode ser observado pelo usuário terminal.[0070] The ink prediction component 232 is configured to first establish the prediction quality by defining a metric that allows the evaluation of the quality of an ink prediction. There are two main aspects to consider: user experience and performance. In terms of user experience, the result of a misprediction is that a piece of ink is rendered onto a screen or other display surface and is then released within a few frames once the prediction proves to be wrong. This can produce a flickering effect that is exacerbated when predictions are not stable across all frames. The metric needs to reflect whether the prediction error can be observed by the terminal user.

[0071] Em termos de desempenho, uma abordagem exemplificativa é usar os componentes principais

Figure img0015
do vetor de erro como métricas para a qualidade de previsão. A Figura 5 fornece um exemplo para uma previsão de cinco pontos posteriores. Os pontos digitalizados são representados com pontos. Os pontos conectados com uma linha sólida 610 já foram digitalizados, enquanto os pontos que não são conectados (e aparecem no interior do triângulo maior) estão no futuro. Os pontos previstos são conectados pela linha tracejada 612. O vetor
Figure img0016
que conecta o ponto previsto ao último ponto digitalizado é o vetor de previsão. O vetor
Figure img0017
que conecta o ponto digitalizado no futuro com o último ponto digitalizado é o vetor de realização. O vetor
Figure img0018
é o erro de previsão e
Figure img0019
são seus componentes principais.
Figure img0020
mede o quanto a previsão está atrasando ou ultrapassando.
Figure img0021
mede o quão longe o ponto previsto está do vetor de realização.[0071] In terms of performance, an exemplary approach is to use the core components
Figure img0015
of the error vector as metrics for forecasting quality. Figure 5 provides an example for a five point forward forecast. Digitized points are represented with dots. Points connected with a solid line 610 have already been digitized, while points that are not connected (and appear inside the larger triangle) are in the future. The predicted points are connected by the 612 dashed line.
Figure img0016
that connects the predicted point to the last scanned point is the prediction vector. the vector
Figure img0017
that connects the digitized point in the future with the last digitized point is the realization vector. the vector
Figure img0018
is the forecast error and
Figure img0019
are its main components.
Figure img0020
measures how much the forecast is lagging or overshooting.
Figure img0021
measures how far the predicted point is from the realization vector.

[0072] Uma técnica que pode ser usada pelo componente de previsão de tinta 232 para previsão de tinta envolve ajustar pontos digitalizados a um spline de Bézier cúbico. A ideia básica é fazer previsão estendendo-se o último segmento de Bézier B(t) para seu futuro, o que significa simplesmente amostrar B(t) em algum t > 1 (linha tracejada na Figura 6).[0072] A technique that can be used by the ink prediction component 232 for ink prediction involves fitting digitized points to a cubic Bezier spline. The basic idea is to do prediction by extending the last Bézier segment B(t) into its future, which simply means sampling B(t) at some t > 1 (dashed line in Figure 6).

ESCOLHA DE tCHOICE OF t

[0073] Permitir que k seja o número de pontos para o qual a previsão futura é desejada e permitir

Figure img0022
que a distância entre os últimos dois pontos digitalizados. t > 1 pode, então, ser selecionado de tal forma que o comprimento do arco da curva ou do segmento de Bézier entre B(1) e B(t) seja igual a
Figure img0023
[0073] Let k be the number of points for which the future forecast is desired and allow
Figure img0022
than the distance between the last two digitized points. t > 1 can then be selected such that the arc length of the curve or Bézier segment between B(1) and B(t) is equal to
Figure img0023

[0074] Uma vez que não existe nenhuma solução de forma fechada para o comprimento de arco de uma curva cúbica, uma aproximação pode ser utilizada, a qual explora um número de fatos conhecidos. Primeiro, a distância entre os pontos terminais da curva de Bézier é um limite inferior para seu comprimento de arco. Segundo, o comprimento do polígono de controle da curva de Bézier é um limite superior para seu comprimento de arco.[0074] Since there is no closed form solution for the arc length of a cubic curve, an approximation can be used which exploits a number of known facts. First, the distance between the endpoints of the Bézier curve is a lower bound on its arc length. Second, the length of the Bézier curve's control polygon is an upper bound on its arc length.

REPARAMETRIZAÇÃOREPARAMETERIZATION

[0075] A opção mais simples para renderizar a previsão é desenhar uma linha a partir do último ponto digitalizado até o ponto previsto. Entretanto, uma abordagem melhor é desenhar a extensão da curva de Bézier conforme mostrado na Figura 6 (linha tracejada 6). Consequentemente, o componente de previsão de tinta 232 é ainda configurado para reparametrizar a curva de Bézier de tal forma que a curva não é alterada, e:

Figure img0024
[0075] The simplest option for rendering the prediction is to draw a line from the last scanned point to the predicted point. However, a better approach is to draw the extent of the Bézier curve as shown in Figure 6 (dashed line 6). Consequently, the ink prediction component 232 is further configured to reparameterize the Bézier curve such that the curve is not changed, and:
Figure img0024

[0076] em que B é o Bézier original e ’ é o Bézier reparametrizado. O custo da reparametrização é desprezível conforme a mesma pode ser realizada em tempo constante.[0076] where B is the original Bézier and ’ is the reparameterized Bézier. The cost of reparameterization is negligible as it can be performed in constant time.

[0077] Com a utilização dessa técnica, o componente de previsão de tinta 232 pode fazer previsões aproximadamente 16ms à frente sem introduzir artefatos ruins (isto é, previsões erradas visíveis).[0077] Using this technique, the ink prediction component 232 can make predictions approximately 16ms ahead without introducing bad artifacts (ie visible wrong predictions).

RENDERIZAÇÃO DE TINTAINK RENDERING

[0078] Na conclusão do ajuste e da previsão, o resultado é um conjunto de aproximações de Bézier

Figure img0025
e um conjunto correspondente de raios
Figure img0026
Em geral,
Figure img0027
’s são funções cúbicas, parametrizadas por quatro pontos de controle:
Figure img0028
Em algumas manifestações, o
Figure img0029
pode ser linear e parametrizado apenas pelos raios de início e de fim:
Figure img0030
[0078] At the completion of the fit and forecast, the result is a set of Bézier approximations
Figure img0025
and a corresponding set of rays
Figure img0026
In general,
Figure img0027
's are cubic functions, parameterized by four control points:
Figure img0028
In some demonstrations, the
Figure img0029
can be linear and parameterized only by the start and end radii:
Figure img0030

[0079] Em outras manifestações, os mesmos podem ser cúbicos e parametrizados por pesos em cada um dentre os quatro pontos de controle, com o uso de polinomiais de Bernstein, conforme é bem conhecido pelas pessoas que têm habilidade comum na técnica:

Figure img0031
[0079] In other manifestations, they can be cubic and parameterized by weights in each of the four control points, with the use of Bernstein polynomials, as is well known by people who have common skill in the technique:
Figure img0031

[0080] Em conjunto, um dado

Figure img0032
par representa um segment do curso de tinta, conforme mostrado na Figura 7. Simbolicamente, isso corresponde ao lugar geométrico dos pontos
Figure img0033
[0080] Together, a given
Figure img0032
par represents a segment of the ink stroke, as shown in Figure 7. Symbolically, this corresponds to the locus of the dots
Figure img0033

[0081] O fluxograma da Figura 8 ilustra um processo geral exemplificativo 800 para renderizar tinta, de acordo com modalidades da presente invenção. As funções descritas à esquerda da linha tracejada podem ser realizadas, por exemplo, com o uso do componente de renderização de tinta 234 do mecanismo de suavização de tinta 212 da Figura 2. As funções descritas à direita da linha tracejada podem ser realizadas, por exemplo, com o uso da GPU 222 do dispositivo de computação de usuário 210 da Figura 2.[0081] The flowchart of Figure 8 illustrates an exemplary general process 800 for rendering ink, in accordance with embodiments of the present invention. The functions described to the left of the dashed line can be performed, for example, using the ink rendering component 234 of the ink smoothing engine 212 of Figure 2. The functions described to the right of the dashed line can be performed, for example , using GPU 222 of user computing device 210 of Figure 2.

TRANSFORMAÇÃO DE CONTORNO 810CONTOUR TRANSFORMATION 810

[0082] As modalidades da presente invenção permitem transformações afim 2D arbitrárias (definidas por uma matriz 3x2

Figure img0034
sejam aplicadas à tinta após a tinta ter sido capturada e ajustada, mas antes de renderizar. Tais transformadas são úteis para modelar, por exemplo, panorama e ampliação de um documento que contém tinta.[0082] Embodiments of the present invention allow arbitrary 2D affine transformations (defined by a 3x2 matrix
Figure img0034
are applied to the ink after the ink has been captured and adjusted, but before rendering. Such transforms are useful for modeling, for example, panning and zooming a document that contains ink.

[0083] As transformações são implantadas em duas etapas. Na primeira etapa (transformação de "contorno"), as funções de Bézier

Figure img0035
são transformadas. Isso é atingido simplesmente multiplicando- se os pontos de controle de Bézier
Figure img0036
pela matriz especificada (conceitualmente, isso afeta o formato geral da tinta, mas não afeta a espessura).[0083] The transformations are implemented in two steps. In the first step ("outline" transformation), the Bézier functions
Figure img0035
are transformed. This is achieved simply by multiplying the Bézier control points
Figure img0036
by the specified matrix (conceptually, this affects the overall shape of the ink, but does not affect the thickness).

[0084] A segunda etapa é transformar os raios. Isso é atingido no sombreador de vértice 820, descrito mais completamente no presente documento abaixo. Observe que os componentes de translação de (m31 e m32) não são usados quando se transforma os raios. Doravante, na presente descrição, o símbolo irá se referir à matriz 2x2

Figure img0037
[0084] The second step is to transform the spokes. This is achieved in vertex shader 820, described more fully herein below. Note that the translational components of (m31 and m32) are not used when transforming the radii. Henceforth, in the present description, the symbol will refer to the 2x2 matrix
Figure img0037

ACHATAMENTO 812FLATTENING 812

[0085] Para renderizar um dado curso, cada uma dentre as aproximações de Bézier constituintes é "achatada". Formalmente, um conjunto de

Figure img0038
é escolhido para cada
Figure img0039
par e as funções são avaliadas naqueles t (isso é essencialmente um ajuste de curva em reverso). O método exato para escolher o conjunto de
Figure img0040
é a implantação definida. Em uma implantação exemplificativa, um algoritmo de Diferenciação de Encaminhamento Híbrida pode ser utilizado, conforme descrito na Patente no U.S. 5.367.617, a qual está incorporada no presente documento a título de referência, como se apresentada em sua totalidade no presente documento. Será entendido pelas pessoas que têm habilidade comum na técnica que outras técnicas, tais como diferenciação de encaminhamento, são comuns e bem conhecidas na indústria e também podem ser utilizadas.[0085] To render a given course, each of the constituent Bézier approximations is "flattened". Formally, a set of
Figure img0038
is chosen for each
Figure img0039
par and the functions are evaluated at those t (this is essentially a reverse curve fit). The exact method for choosing the set of
Figure img0040
is the defined deployment. In an exemplary implementation, a Hybrid Routing Differentiation algorithm may be utilized, as described in US Patent No. 5,367,617, which is incorporated herein by reference, as if set forth in its entirety herein. It will be understood by those of ordinary skill in the art that other techniques, such as routing differentiation, are common and well known in the industry and may also be used.

[0086] O resultado é uma lista de pontos e raios

Figure img0041
que estão ao longo da curva. Esses dados são, então, enviados para a GPU e armazenados em um chamado "armazenamento temporário de vértice" (doravante, designado VB1).[0086] The result is a list of points and radii
Figure img0041
that are along the curve. This data is then sent to the GPU and stored in a so-called "vertex buffer" (hereinafter referred to as VB1).

MOSAICO DE INSTÂNCIA 814INSTANCE MOSAIC 814

[0087] Também passado à GPU são outros dois armazenamentos temporários de vértice: um que contém uma rede de triângulo que se aproxima a um círculo e o outro uma rede de triângulo que representa um trapezoide. Essas redes são computadas uma vez durante a inicialização e são colocadas em cache e reutilizadas em operações de renderização subsequentes.[0087] Also passed to the GPU are two other vertex buffers: one that contains a triangle network that approximates a circle and the other a triangle network that represents a trapezoid. These networks are computed once during initialization and are cached and reused in subsequent render operations.

[0088] As implantações particulares podem representar os mosaicos de formas diferentes. Uma implantação exemplificativa utiliza o seguinte esquema:[0088] Particular deployments may represent mosaics in different ways. An example deployment uses the following schema:

[0089] Cada vértice na rede de triângulo de círculo contém os seguintes dados: CenterOrEdge: 1 bit (0: Centro, 1:Borda) InteriorOrExterior: 1 bit (0: Interior, 1:Exterior) Direção: float2 (normalizada)[0089] Each vertex in the circle triangle network contains the following data: CenterOrEdge: 1 bit (0: Center, 1:Edge) InteriorOrExterior: 1 bit (0: Interior, 1:Outer) Direction: float2 (normalized)

[0090] Os triângulos que contêm vértices interior e exterior são usados para fornecer antisserrilhamento (designado pelo gradiente de claro a escuro ilustrado na Figura 8). Deve ser observado que nenhuma coordenada absoluta é realmente armazenada em um vértice, apenas a relação topológica do vértice, uma vez que a mesma se relacionada às outras, é registrada. Por exemplo, o vértice -i no diagrama a seguir é um vértice de borda interior e é armazenado como:

Figure img0042
enquanto o vértice estáJ em um vértice de borda exterior e é armazenado como:
Figure img0043
(presumindo um eixo geométrico invertido). Existe apenas um vértice central (designado C na Figura 9), o qual é interior e é atribuída uma direção arbitrária.[0090] Triangles containing inner and outer vertices are used to provide anti-aliasing (designated by the light to dark gradient illustrated in Figure 8). It should be noted that no absolute coordinates are actually stored at a vertex, only the topological relationship of the vertex, as it relates to the others, is recorded. For example, vertex -i in the following diagram is an interior edge vertex and is stored as:
Figure img0042
while the vertex is at an outer edge vertex and is stored as:
Figure img0043
(assuming an inverted geometry axis). There is only one central vertex (designated C in Figure 9), which is interior and is assigned an arbitrary direction.

[0091] Também deve ser observado que o número exato de triângulos (e, logo, vértices) pode variar na implantação e é geralmente dependente do raio máximo da tinta que é renderizada.[0091] It should also be noted that the exact number of triangles (and therefore vertices) can vary in deployment and is generally dependent on the maximum radius of the ink that is rendered.

[0092] Cada vértice no trapezoide contém os seguintes dados: StartOrEnd: 1 bit (0: Início, 1: Fim) InteriorOrExterior: 1 bit (0: Interior, 1: Exterior) TopOrBottom: 1 bit (0: Topo, 1: Fundo)[0092] Each vertex in the trapezoid contains the following data: StartOrEnd: 1 bit (0: Start, 1: End) InteriorOrExterior: 1 bit (0: Interior, 1: Exterior) TopOrBottom: 1 bit (0: Top, 1: Bottom )

[0093] Por exemplo, o vértice no seguinte diagrama é um vértice de início interior no topo e será armazenado como:

Figure img0044
[0093] For example, the vertex in the following diagram is an interior start vertex at the top and will be stored as:
Figure img0044

[0094] O vértice é um vértice de fim interior no fundo e sera armazenado como:

Figure img0045
[0094] The vertex is an interior end vertex at the bottom and will be stored as:
Figure img0045

[0095] conforme mostrado na Figura 10. Nesse caso, o número de vértices únicos é fixo em oito, independente do raio da tinta que é renderizada.[0095] as shown in Figure 10. In this case, the number of unique vertices is fixed at eight, regardless of the radius of the ink that is rendered.

AMPLIAÇÃO E RASTERIZAÇÃO 816ENLARGEMENT AND RASTERIZATION 816

[0096] Uma vez que os dados são transferidos por upload para a GPU, as etapas restantes de rasterização são realizadas em duas etapas: uma para renderizar círculos e uma para renderizar trapezoides. Uma implantação exemplificativa realiza cada etapa com o uso, por exemplo, dos cinco estágios da tubulação de Direct3D padrão descrita abaixo (818, 820, 822, 824 e 826). Será entendido e observado pelas pessoas de habilidade comum na técnica que outras implantações diretamente análogas a Direct3D são possíveis em outras plataformas, tais como OpenGL. Qualquer uma e todas tais variações, e qualquer combinação das mesmas, são contempladas para estarem dentro do escopo das modalidades da presente invenção.[0096] Once the data is uploaded to the GPU, the remaining rasterization steps are performed in two steps: one to render circles and one to render trapezoids. An example deployment accomplishes each step using, for example, the five stages of standard Direct3D piping described below (818, 820, 822, 824, and 826). It will be understood and observed by those of ordinary skill in the art that other directly analogous implementations of Direct3D are possible on other platforms, such as OpenGL. Any and all such variations, and any combination thereof, are contemplated to be within the scope of embodiments of the present invention.

[0097] O montador de entrada 818, o rasterizador 822 e a fusão de saída 826 são uma função fixa e realizadas de modo essencialmente automático pela própria GPU. O sombreador de vértice 820 e o sombreador de pixel 824 são programáveis.[0097] The input assembler 818, the rasterizer 822 and the output merger 826 are a fixed function and performed essentially automatically by the GPU itself. Vertex shader 820 and pixel shader 824 are programmable.

MONTADOR DE ENTRADA 818ENTRY ASSEMBLER 818

[0098] O montador de entrada 818 é configurado para pegar as redes de círculo/trapezoide e os vértices em VB1 e preparar os mesmos para processamento pelo restante da tubulação. Em parte, isso envolve replicar cópias das redes por todos os vértices em VB1 (uma técnica comum conhecida pelas pessoas que têm habilidade comum na técnica como "instanciação"). Na etapa de círculo, o montador de entrada 818 é configurado para alocar uma cópia da rede por vértice em VB1. Na etapa de trapezoide, o montador de entrada 818 aloca uma cópia por par de vértices consecutivos em VB1. Os vértices emitidos pelo montador de entrada 818 contêm os dados fundidos a partir tanto da rede quanto dos dados de VB1:[0098] The 818 input assembler is configured to take the circle/trapezoid networks and the vertices in VB1 and prepare them for processing by the rest of the pipe. In part, this involves replicating copies of the networks across all vertices in VB1 (a common technique known to people of ordinary skill in the technique as "instantiation"). In the circle step, input assembler 818 is configured to allocate one copy of the network per vertex in VB1. In the trapezoid step, input assembler 818 allocates one copy per pair of consecutive vertices in VB1. The vertices outputted by the input assembler 818 contain the merged data from both the network and the VB1 data:

[0099] Formato de vértice da etapa de círculo:

Figure img0046
[0099] Circle step vertex format:
Figure img0046

[00100] Formato de vértice da etapa de trapezoide:

Figure img0047
[00100] Trapezoid step vertex format:
Figure img0047

[00101] De acordo com modalidades da presente invenção, um sombreador de vértice 820 é fornecido, o qual pega cada saída de vértice pelo montador de entrada 818 e condensa o mesmo para uma posição e opacidade. Para a etapa de círculo, as seguintes fórmulas são usadas:

Figure img0048
[00101] According to embodiments of the present invention, a vertex shader 820 is provided which takes each vertex output by input assembler 818 and condenses it to a position and opacity. For the circle step, the following formulas are used:
Figure img0048

[00102] Aqui, i: é a matriz 2x2 definida anteriormente no documento e

Figure img0049
é sua transposição inversa.[00102] Here, i: is the 2x2 matrix previously defined in the document and
Figure img0049
is its inverse transposition.

[00103] As funções de desvio e opacityModifier são discutidas em maiores detalhes posteriormente, mas, no caso comum, os mesmos são simplesmente

Figure img0050
[00103] The offset and opacityModifier functions are discussed in greater detail later, but in the common case they are simply
Figure img0050

[00104] Para a etapa de trapezoide, fórmulas mais complexas podem ser usadas:

Figure img0051
[00104] For the trapezoid step, more complex formulas can be used:
Figure img0051

[00105] Aqui,

Figure img0052
é a matriz de rotação de 90 graus
Figure img0053
[00105] Here,
Figure img0052
is the 90 degree rotation matrix
Figure img0053

[00106] Deve ser observado que versões semelhantes dessas fórmulas foram usadas em versões anteriores de renderização de tinta. Diferente de encarnações anteriores, entretanto, as modalidades da presente invenção realizam a transformação na GPU.[00106] It should be noted that similar versions of these formulas were used in previous versions of ink rendering. Unlike previous incarnations, however, embodiments of the present invention perform the transformation on the GPU.

[00107] Deve ser ainda observado que as derivações dessas fórmulas estão além do escopo da presente descrição. Entretanto, as Figuras 11, 12 e 13 podem auxiliar na relação das diversasquantidades entre si. A Figura 11 ilustra um diagrama de dois pontos de tinta adjacentes (presumindo que M é identidade). A Figura 12 ilustra uma ampliação ao redor de P(i+1) (presumindo que TopOrBottom=0, StartOrEnd=1 e M é identidade). A Figura 13 ilustra uma ampliação ao redor de P+D (presumindo que TopOrBottom=0, StartOrEnd=1 e M é identidade).[00107] It should be further noted that the derivations of these formulas are beyond the scope of the present description. However, Figures 11, 12 and 13 can help in relating the various quantities to each other. Figure 11 illustrates a diagram of two adjacent ink dots (assuming M is identity). Figure 12 illustrates zooming around P(i+1) (assuming TopOrBottom=0, StartOrEnd=1 and M is identity). Figure 13 illustrates zooming around P+D (assuming TopOrBottom=0, StartOrEnd=1 and M is identity).

RASTERIZADOR 822RATERIZER 822

[00108] Uma vez que os vértices das redes replicadas foram transformados, os triângulos correspondentes são "rasterizados" pela GPU que utiliza o rasterizador 822. Em outras palavras, os pixels cobertos pelos triângulos são identificados e o sombreador de pixel 824 é invocado uma vez por pixel coberto. A rasterização de D3D é conhecida pelas pessoas que têm habilidade comum na técnica e, consequentemente, não é ainda descrita no presente documento.[00108] Once the vertices of the replicated networks have been transformed, the corresponding triangles are "rasterized" by the GPU using rasterizer 822. In other words, the pixels covered by the triangles are identified and the pixel shader 824 is invoked once per pixel covered. D3D rasterization is known to people having ordinary skill in the art and, accordingly, is not yet described in the present document.

SOMBREADOR DE PIXEL 824PIXEL SHADER 824

[00109] O sombreador de pixel 824 é configurado para pegar a opacidade do rasterizador 8222 e usar a mesma para modular a cor da tinta:

Figure img0054
[00109] The 824 pixel shader is configured to take the opacity of the 8222 rasterizer and use it to modulate the ink color:
Figure img0054

[00110] Essa modulação de cor simula antisserrilhamento ao longo das bordas da tinta. (Em algumas manifestações, essa é uma cor sólida simples, mas, em manifestações mais complexas, a cor pode ser dependente do local do pixel). Esse valor de cor é, então, passado para a fusão de saída 826.[00110] This color modulation simulates anti-aliasing along ink edges. (In some manifestations this is a simple solid color, but in more complex manifestations the color can be pixel location dependent.) This color value is then passed to output merger 826.

FUSÃO DE SAÍDA 826OUTPUT MERGE 826

[00111] A fusão de saída 826 é configurada para pegar o valor de cor e misturar o mesmo no alvo de renderização. A fusão de saída é conhecida pelas pessoas que têm habilidade comum na técnica e, consequentemente, não é ainda descrita no presente documento.[00111] The 826 Output Blender is configured to take the color value and blend it into the render target. Outbound merging is known to those of ordinary skill in the art and, accordingly, is not yet described herein.

MITIGAÇÃO DE RECURSO FINOFINE RESOURCE MITIGATION

[00112] Conforme mencionado no presente documento acima, as modalidades da presente invenção suprem um sombreador de vértice 820 que faz uso de duas funções auxiliares, desvio e opacityModifier. O propósito de desvio é desviar o vértice por uma metade de pixel em espaço de tela, simulando antisserrilhamento. Quando as dimensões do círculo/trapezoide que são renderizadas são menos que 1 pixel, a lógica especial pode ser adicionada para reduzir a chance que esse desvio irá causar triângulos de sobreposição. Quando tal lógica é realizada, a opacidade do vértice é modificada de modo correspondente.[00112] As mentioned in the present document above, embodiments of the present invention provide a vertex shader 820 that makes use of two auxiliary functions, offset and opacityModifier. The purpose of offset is to offset the vertex by one-half of a pixel in screen space, simulating anti-aliasing. When the dimensions of the circle/trapezoid that are rendered are less than 1 pixel, special logic can be added to reduce the chance that this deviation will cause overlapping triangles. When such logic is performed, the opacity of the vertex is modified accordingly.

[00113] As definições completas de desvio e opacityModifier são conforme o seguinte:

Figure img0055
[00113] The complete offset and opacityModifier definitions are as follows:
Figure img0055

[00114] Em relação agora à Figura 14, um fluxograma é ilustrado, o qual mostra um método exemplificativo 1400 para suavizar a entrada de tinta digital, de acordo com uma modalidade da presente invenção. Conforme indicado no bloco 1410, um primeiro ponto de tinta é recebido. Um segundo ponto de tinta também é recebido, conforme indicado no bloco 1412. Conforme indicado no bloco 1414, uma aproximação de Bézier cúbica ativa é computada com base nos primeiro e segundo pontos de tinta. Um terceiro ponto de tinta é recebido, conforme indicado no bloco 1416. É determinada a possibilidade de o terceiro ponto de tinta se ajustar adequadamente à aproximação de Bézier cúbica ativa, conforme indicado no bloco 1418, e uma nova aproximação de Bézier cúbica ser computada com o uso dos primeiro, segundo e terceiro pontos de tinta, conforme indicado no bloco 1420.[00114] Referring now to Figure 14, a flow chart is illustrated which shows an exemplary method 1400 for smoothing digital ink input, in accordance with an embodiment of the present invention. As indicated at block 1410, a first ink dot is received. A second ink dot is also received, as indicated at block 1412. As indicated at block 1414, an active cubic Bezier approximation is computed based on the first and second ink dots. A third ink dot is received, as indicated in block 1416. The third ink dot is determined to fit properly to the active cubic Bézier approximation, as indicated in block 1418, and a new cubic Bézier approximation is computed with the use of the first, second, and third ink dots as indicated at block 1420.

[00115] Com referência à Figura 15, um fluxograma é ilustrado, o qual mostra um método exemplificativo 1500 para suavizar e renderizar a entrada de tinta digital, de acordo com uma modalidade da presente invenção. Conforme indicado, o bloco 1510 recebe o primeiro e o segundo pontos de tinta; os mesmos são sequencialmente recebidos. Conforme indicado no bloco 1512, um fragmento de tinta suavizado ativo é gerado com base nos primeiro e segundo pontos de tinta. Um terceiro ponto de tinta é recebido, conforme indicado no bloco 1514. É, então, determinado se o terceiro ponto de tinta se ajusta adequadamente o fragmento de tinta suavizado ativo, conforme indicado no bloco de decisão 1516. Determina-se que o terceiro ponto de tinta se ajusta adequadamente ao fragmento de tinta suavizado ativo, em que o fragmento de tinta suavizado ativo é atualizado, conforme indicado no bloco 1518. Entretanto, se for determinado que o terceiro ponto de tinta não se ajusta adequadamente ao fragmento de tinta suavizado ativo, o fragmento de tinta suavizado ativo é terminado e um segundo fragmento de tinta suavizado é iniciado, conforme indicado no bloco 1520. Com o uso de uma GPU, a saída de tinta suavizada é renderizada que compreende os primeiro, segundo e terceiro pontos de tinta. Isso é indicado no bloco 1522.[00115] With reference to Figure 15, a flowchart is illustrated which shows an exemplary method 1500 for smoothing and rendering digital ink input, in accordance with an embodiment of the present invention. As indicated, block 1510 receives the first and second dots of ink; they are sequentially received. As indicated at block 1512, an active smoothed ink patch is generated based on the first and second ink dots. A third ink dot is received, as indicated in block 1514. It is then determined whether the third ink dot properly fits the active smoothed ink fragment, as indicated in decision block 1516. It is determined that the third ink dot ink patch fits properly to the active smoothed ink patch, whereupon the active smoothed ink patch is updated, as indicated in block 1518. However, if it is determined that the third ink dot does not fit properly to the active smoothed patch , the active smoothed ink snippet is terminated and a second smoothed ink snippet is started, as indicated at block 1520. Using a GPU, smoothed ink output is rendered that comprises the first, second, and third ink dots . This is indicated in block 1522.

[00116] Em relação agora à Figura 16, um fluxograma é ilustrado, o qual mostra um método exemplificativo 1600 para suavizar e renderizar a entrada de tinta digital, de acordo com uma modalidade da presente invenção. Conforme indicado no bloco 1610, um primeiro ponto de tinta é recebido. Um segundo ponto de tinta também é recebido, conforme indicado no bloco 1612. Conforme indicado no bloco 1614, uma aproximação de Bézier cúbica ativa é computada com base nos primeiro e segundo pontos de tinta. Um terceiro ponto de tinta é recebido, conforme indicado no bloco 1616. É, então, determinado se o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier cúbica ativa, conforme indicado no bloco 1618. Conforme indicado no bloco 1620, uma nova aproximação de Bézier cúbica é computada, a qual usa os primeiro, segundo e terceiro pontos de tinta. A saída de tinta suavizada é, então, renderizada, a qual compreende os primeiro, segundo e terceiro pontos de tinta. Isso é indicado no bloco 1622.[00116] Referring now to Figure 16, a flowchart is illustrated which shows an exemplary method 1600 for smoothing and rendering digital ink input, in accordance with an embodiment of the present invention. As indicated at block 1610, a first ink dot is received. A second ink dot is also received, as indicated at block 1612. As indicated at block 1614, an active cubic Bezier approximation is computed based on the first and second ink dots. A third ink dot is received, as indicated at block 1616. It is then determined whether the third ink dot fits properly with the active cubic Bézier approximation, as indicated at block 1618. As indicated at block 1620, a new approximation cubic Bézier is computed, which uses the first, second, and third ink points. Smoothed ink output is then rendered, which comprises the first, second, and third ink dots. This is indicated in block 1622.

[00117] Conforme pode ser entendido, as modalidades da presente invenção fornecem sistemas, métodos e mídias de armazenamento legíveis por computador para, dentre outras coisas, a suavização de curso de tinta em tempo real eficiente, previsão de trajetória e renderização impulsionada por GPU de entrada de curso de tinta. Uma pluralidade de pontos de tinta que inclui pelo menos um primeiro e um segundo ponto de tinta é recebida. Com base nos primeiro e segundo pontos de tinta, uma aproximação de Bézier ativa é computada. Sequencialmente em tempo ao primeiro e ao segundo pontos de tinta, um terceiro ponto de tinta é recebido e determina-se se o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier ativa. O terceiro ponto de tinta é determinado para se ajustar adequadamente à aproximação de Bézier ativa se for determinado que um usuário não tem capacidade para detectar uma diferença entre o mesmo mediante a renderização. Tal determinação é geralmente baseada em um valor de diferença limítrofe predeterminado. Determina-se que o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier ativa, em que a aproximação de Bézier ativa é atualizada para incluir o terceiro ponto de tinta. Entretanto, se for determinado que o terceiro ponto de tinta não se ajusta adequadamente à aproximação de Bézier ativa, a aproximação de Bézier ativa é terminada e uma nova aproximação de Bézier é computada. A saída de tinta suavizada é renderizada compreendendo os primeiro, segundo e terceiro pontos de tinta em associação a uma superfície de recebimento de curso, por exemplo, uma tela de exibição sensível ao toque.[00117] As can be understood, embodiments of the present invention provide systems, methods, and computer-readable storage media for, among other things, efficient real-time ink stroke smoothing, trajectory prediction, and GPU-driven rendering of ink stroke input. A plurality of ink dots including at least a first and a second ink dot are received. Based on the first and second ink points, an active Bézier approximation is computed. Sequentially in time to the first and second ink dots, a third ink dot is received and it is determined whether the third ink dot fits properly to the active Bézier approximation. The third ink dot is determined to properly fit the active Bézier approximation if it is determined that a user is unable to detect a difference between them upon rendering. Such a determination is generally based on a predetermined threshold difference value. The third ink dot is determined to fit the active Bézier approximation properly, whereupon the active Bézier approximation is updated to include the third ink dot. However, if it is determined that the third ink dot does not properly fit the active Bézier approximation, the active Bézier approximation is terminated and a new Bézier approximation is computed. Smoothed ink output is rendered comprising the first, second, and third ink dots in association with a stroke-receiving surface, for example a touchscreen display.

[00118] A presente invenção foi descrita em relação a modalidades particulares, as quais são destinadas, em todos os aspectos, a serem ilustrativas em vez de restritivas. As modalidades alternativas se tornarão evidente para as pessoas de habilidade comum na técnica à qual a presente invenção pertence sem se afastar de seu escopo.[00118] The present invention has been described with respect to particular embodiments, which are intended, in all respects, to be illustrative rather than restrictive. Alternative embodiments will become apparent to those of ordinary skill in the art to which the present invention belongs without departing from its scope.

[00119] Embora a invenção seja suscetível a diversas modificações e construções alternativas, determinadas modalidades ilustradas da mesma são mostradas nos desenhos e foram descritas acima em detalhes. Deve ser entendido, entretanto, que não há a intenção de limitar a invenção às formas específicas reveladas, mas, pelo contrário, a intenção deve cobrir todas as modificações, construções alternativas e equivalentes abrangidos pelo espírito e escopo da invenção.[00119] Although the invention is susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that it is not intended to limit the invention to the specific forms disclosed, but, on the contrary, the intent must cover all modifications, alternative constructions and equivalents falling within the spirit and scope of the invention.

[00120] Será entendido pelas pessoas de habilidade comum na técnica que a ordem das etapas mostrada nos métodos 1400 da Figura14, 1500 da Figura 15 e 1600 da Figura 16 não é destinada a limitar o escopo da presente invenção de qualquer forma e, na verdade, as etapas podem ocorrer em uma variedade de sequências diferentes dentro das modalidades da presente invenção. Qualquer uma e todas tais variações, e qualquer combinação das mesmas, são contempladas para estarem dentro do escopo das modalidades da presente invenção.[00120] It will be understood by those of ordinary skill in the art that the order of steps shown in methods 1400 of Figure 14, 1500 of Figure 15 and 1600 of Figure 16 is not intended to limit the scope of the present invention in any way, and indeed , the steps can occur in a variety of different sequences within embodiments of the present invention. Any and all such variations, and any combination thereof, are contemplated to be within the scope of embodiments of the present invention.

Claims (8)

1. Método (1400) sendo realizado por um ou mais dispositivos de computação incluindo pelo menos um processador, o método para suavizar entrada de tinta digital, o método compreendendo etapas de: receber (1410) um primeiro ponto de tinta; receber (1412) um segundo ponto de tinta; computar (1414) uma aproximação de Bézier cúbica ativa com base pelo menos nos primeiro e segundo pontos de tinta; receber (1416) um terceiro ponto de tinta; determinar (1418) se o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier cúbica ativa; e computar (1420) uma nova aproximação de Bézier cúbica utilizando pelo menos os primeiro, segundo e terceiro pontos de tinta; em que mediante determinar que o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier cúbica ativa, computar uma nova aproximação de Bézier cúbica compreende atualizar a aproximação de Bézier cúbica ativa; em que mediante determinar que o terceiro ponto de tinta não se ajusta adequadamente à aproximação de Bézier cúbica ativa, computar uma nova aproximação de Bézier cúbica compreende terminar a aproximação de Bézier cúbica ativa e iniciar uma segunda aproximação de Bézier cúbica; e caracterizado pelo fato de que um único ponto de tinta por vez é recebido e para cada novo ponto de tinta, ou o segmento de Bézier ativo é atualizado, ou um novo segmento de Bézier é iniciado.1. Method (1400) being performed by one or more computing devices including at least one processor, the method for smoothing digital ink input, the method comprising steps of: receiving (1410) a first ink dot; receiving (1412) a second ink dot; computing (1414) an active cubic Bezier approximation based on at least the first and second ink points; receiving (1416) a third ink dot; determining (1418) whether the third ink dot properly fits the active cubic Bezier approximation; and computing (1420) a new cubic Bézier approximation using at least the first, second and third ink dots; where upon determining that the third ink dot fits properly to the active cubic Bezier approximation, computing a new cubic Bezier approximation comprises updating the active cubic Bezier approximation; wherein upon determining that the third ink dot does not properly fit the active cubic Bezier approximation, computing a new cubic Bezier approximation comprises terminating the active cubic Bezier approximation and starting a second cubic Bezier approximation; and characterized by the fact that a single ink dot is received at a time and for each new ink dot, either the active Bézier segment is updated, or a new Bézier segment is started. 2. Método (1400), de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende uma etapa de determinar se uma ou mais cúspides pretendidas estão presentes, em que a continuidade C1 é preservada entre a aproximação de Bézier cúbica ativa e a segunda aproximação de Bézier cúbica quando nenhuma cúspide pretendida é detectada.2. Method (1400), according to claim 1, characterized in that it further comprises a step of determining whether one or more intended cusps are present, in which C1 continuity is preserved between the active cubic Bézier approximation and the second cubic Bézier approximation when no intended cusp is detected. 3. Método (1400), de acordo com a reivindicação 1, caracterizado pelo fato de que os primeiro, segundo e terceiro pontos de tinta são sequencialmente recebidos conforme os mesmos são digitalizados, e em que a aproximação de Bézier ativa é computada enquanto um instrumento de entrada continua a fornecer dados de entrada.3. Method (1400), according to claim 1, characterized in that the first, second and third ink dots are sequentially received as they are digitized, and in which the active Bézier approximation is computed as an instrument input continues to provide input data. 4. Método (1400), de acordo com a reivindicação 1, caracterizado pelo fato de que a etapa de determinar (1418) se o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier cúbica ativa compreende aproximar uma distância entre uma linha poligonal descrita pelos segundo e terceiro pontos de tinta e pela aproximação de Bézier cúbica ativa.4. Method (1400) according to claim 1, characterized in that the step of determining (1418) whether the third ink dot fits properly to the active cubic Bézier approximation comprises approximating a distance between a described polygonal line by the second and third ink points and by the active cubic Bézier approximation. 5. Método (1400), de acordo com a reivindicação 4, caracterizado pelo fato de que, se a distância entre a linha poligonal conectando os segundo e terceiro pontos de tinta e a aproximação de Bézier cúbica ativa for menor do que ou igual a um valor limite, é determinado que o terceiro ponto de tinta se ajusta adequadamente à aproximação de Bézier cúbica ativa.5. Method (1400), according to claim 4, characterized in that if the distance between the polygonal line connecting the second and third ink points and the active cubic Bézier approximation is less than or equal to one threshold value, it is determined that the third ink dot fits properly to the active cubic Bézier approximation. 6. Método (1400), de acordo com a reivindicação 5, caracterizado pelo fato de que o valor limite é baseado, pelo menos em parte, em uma ou ambas dentre a resolução de um visor no qual a tinta digital é renderizada e uma transformada com a qual a tinta digital é renderizada.6. Method (1400) according to claim 5, characterized in that the threshold value is based, at least in part, on one or both of the resolution of a display on which digital ink is rendered and a transform with which digital ink is rendered. 7. Método (1400), de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende uma etapa de prever pelo menos um ponto de tinta subsequente a ser recebido em um ponto posterior no tempo ao estender a aproximação de Bézier ativa ao futuro.7. Method (1400) according to claim 1, characterized in that it further comprises a step of predicting at least one subsequent ink dot to be received at a later point in time by extending the active Bézier approximation into the future . 8. Método (1400), de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende uma etapa de renderizar saída de tinta suavizada compreendendo pelo menos os primeiro, segundo e terceiro pontos de tinta.8. Method (1400) according to claim 1, characterized in that it further comprises a step of rendering smoothed ink output comprising at least the first, second and third ink dots.
BR112017003480-8A 2014-09-15 2015-09-15 METHOD FOR SMOOTHING AND RENDERING DIGITAL INK BR112017003480B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/486,735 2014-09-15
US14/486,735 US9508166B2 (en) 2014-09-15 2014-09-15 Smoothing and GPU-enabled rendering of digital ink
PCT/US2015/050097 WO2016044214A1 (en) 2014-09-15 2015-09-15 Smooothing and gpu-enabled rendering of digital ink

Publications (2)

Publication Number Publication Date
BR112017003480A2 BR112017003480A2 (en) 2017-12-12
BR112017003480B1 true BR112017003480B1 (en) 2023-05-23

Family

ID=

Similar Documents

Publication Publication Date Title
JP6918053B2 (en) Digital ink smoothing and GPU-enabled rendering
WO2018201551A1 (en) Facial image fusion method and apparatus and computing device
WO2018188534A1 (en) Face image processing method and device, and electronic device
US11698788B2 (en) Path simplification for computer graphics applications
US10943375B2 (en) Multi-state vector graphics
US20120139918A1 (en) Layer combination in a surface composition system
JP2017529623A (en) Wet ink predictor
US10482622B2 (en) Locating features in warped images
Huang et al. Transformation guided image completion
JP5558949B2 (en) Image processing apparatus, image processing method, and program
US9613288B2 (en) Automatically identifying and healing spots in images
BR112017003480B1 (en) METHOD FOR SMOOTHING AND RENDERING DIGITAL INK
WO2019065784A1 (en) Image processing device, image processing method, and computer-readable recording medium
US20230011809A1 (en) Mesh correction depending on mesh normal direction
US10740968B2 (en) Patch-based surface relaxation
JP7294702B2 (en) Image processing device, image processing method, and program
JP7276978B2 (en) Image processing device, image processing method, and program
US20230066846A1 (en) Systems for generating presentations of eyebrow designs
US8890885B1 (en) Efficiently copying and blending a source region into a target region
Kopf et al. Transformation Guided Image Completion