Geometria para Canvas 2D

Construtores de traçado e contas de ângulo para o Canvas 2D. Toda função de traçado apenas monta o traçado; ela nunca chama fill() nem stroke(), então quem a usa decide como pintar.

Uso

import { roundRectByArc, getLinearGradient } from 'ranuts/utils';

const ctx = canvas.getContext('2d')!;

roundRectByArc(ctx, 10, 10, 200, 80, 12);
ctx.fillStyle = getLinearGradient(ctx, 10, 10, 200, 80, 'linear-gradient(90deg, #06f, #0cf)');
ctx.fill();

API

getAngle

De graus para radianos.

Parâmetros

Parâmetro Descrição Tipo Padrão
deg Ângulo em graus number Obrigatório

Retorna

Argumento Descrição Tipo
rad Ângulo em radianos number

getArcPointerByDeg

O ponto da circunferência que corresponde a um ângulo.

Parâmetros

Parâmetro Descrição Tipo Padrão
deg Ângulo em radianos number Obrigatório
r Raio number Obrigatório

Retorna

Argumento Descrição Tipo
point [x, y] [number, number]

getTangentByPointer

A reta tangente num ponto da circunferência.

Parâmetros

Parâmetro Descrição Tipo Padrão
x Coordenada x number Obrigatório
y Coordenada y number Obrigatório

Retorna

Argumento Descrição Tipo
line [inclinação, intercepto] Array<number>

roundRectByArc

Traça um retângulo de cantos arredondados. Um raio maior que a metade do lado mais curto é cortado nessa metade, de modo que cantos vizinhos nunca se sobrepõem.

Parâmetros

Parâmetro Descrição Tipo Padrão
ctx Contexto 2D do canvas CanvasRenderingContext2D Obrigatório
...rest x, y, w, h, r number[] Obrigatório

Retorna

Sem valor de retorno (void)

fanShapedByArc

Traça uma fatia de pizza, incluindo o vão que a separa das outras.

Parâmetros

Parâmetro Descrição Tipo Padrão
ctx Contexto 2D do canvas CanvasRenderingContext2D Obrigatório
maxRadius Raio externo number Obrigatório
start Ângulo inicial em radianos number Obrigatório
end Ângulo final em radianos number Obrigatório
gutter Largura do vão entre as fatias number Obrigatório

Retorna

Sem valor de retorno (void)

getLinearGradient

Traduz uma string linear-gradient(...) do CSS para um CanvasGradient do Canvas.

O createLinearGradient só aceita um ponto inicial e um final, enquanto o CSS descreve a direção como um ângulo. Por isso a circunferência é dividida em oito setores de 45° e a tangente devolve o ângulo em forma de coordenadas de início e fim sobre a borda do retângulo. As direções por palavra-chave (to top, to bottom, to left, to right) são tratadas diretamente.

Parâmetros

Parâmetro Descrição Tipo Padrão
ctx Contexto 2D do canvas CanvasRenderingContext2D Obrigatório
x x do canto superior esquerdo do retângulo number Obrigatório
y y do canto superior esquerdo do retângulo number Obrigatório
w Largura do retângulo number Obrigatório
h Altura do retângulo number Obrigatório
background por exemplo linear-gradient(90deg, red, blue) string Obrigatório

Retorna

Argumento Descrição Tipo
gradient Pode ser atribuído direto a fillStyle ou strokeStyle CanvasGradient