Skip to content

Geometría para Canvas 2D

Constructores de trazado y cuentas de ángulos para Canvas 2D. Toda función de trazado solo construye el trazado; nunca llama a fill() ni a stroke(), así que quien la usa decide cómo pintarlo.

Uso

ts
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 grados a radianes.

Parámetros

ParámetroDescripciónTipoPor defecto
degÁngulo en gradosnumberObligatorio

Devuelve

ArgumentoDescripciónTipo
radÁngulo en radianesnumber

getArcPointerByDeg

El punto de una circunferencia que corresponde a un ángulo.

Parámetros

ParámetroDescripciónTipoPor defecto
degÁngulo en radianesnumberObligatorio
rRadionumberObligatorio

Devuelve

ArgumentoDescripciónTipo
point[x, y][number, number]

getTangentByPointer

La recta tangente en un punto de una circunferencia.

Parámetros

ParámetroDescripciónTipoPor defecto
xCoordenada xnumberObligatorio
yCoordenada ynumberObligatorio

Devuelve

ArgumentoDescripciónTipo
line[pendiente, ordenada en el origen]Array<number>

roundRectByArc

Traza un rectángulo de esquinas redondeadas. Un radio mayor que la mitad del lado más corto se recorta a esa mitad, de modo que dos esquinas contiguas nunca se solapan.

Parámetros

ParámetroDescripciónTipoPor defecto
ctxContexto 2D del canvasCanvasRenderingContext2DObligatorio
...restx, y, w, h, rnumber[]Obligatorio

Devuelve

Sin valor de retorno (void)

fanShapedByArc

Traza una porción de tarta, con el hueco que la separa de las demás.

Parámetros

ParámetroDescripciónTipoPor defecto
ctxContexto 2D del canvasCanvasRenderingContext2DObligatorio
maxRadiusRadio exteriornumberObligatorio
startÁngulo inicial en radianesnumberObligatorio
endÁngulo final en radianesnumberObligatorio
gutterAncho del hueco entre porcionesnumberObligatorio

Devuelve

Sin valor de retorno (void)

getLinearGradient

Traduce una cadena linear-gradient(...) de CSS a un CanvasGradient de Canvas.

createLinearGradient solo admite un punto inicial y uno final, mientras que CSS describe la dirección como un ángulo. Por eso la circunferencia se parte en ocho sectores de 45° y la tangente convierte el ángulo de vuelta en coordenadas de inicio y fin sobre el borde del rectángulo. Las direcciones por palabra clave (to top, to bottom, to left, to right) se tratan directamente.

Parámetros

ParámetroDescripciónTipoPor defecto
ctxContexto 2D del canvasCanvasRenderingContext2DObligatorio
xx de la esquina superior izquierda del rectángulonumberObligatorio
yy de la esquina superior izquierda del rectángulonumberObligatorio
wAncho del rectángulonumberObligatorio
hAlto del rectángulonumberObligatorio
backgroundpor ejemplo linear-gradient(90deg, red, blue)stringObligatorio

Devuelve

ArgumentoDescripciónTipo
gradientSe puede asignar directamente a fillStyle o strokeStyleCanvasGradient

WARNING

Las paradas de color han de ir sin unidad (red 0, blue 1). Una parada en porcentaje (red 50%) se analiza como NaN y addColorStop lanzará.

Publicado bajo la licencia MIT.