Interpolazione colore Bézier cubica
L’interpolazione del colore con Bézier cubica calcola il colore esatto raggiunto tra due estremi esadecimali dopo che una curva temporale ha trasformato la frazione richiesta.
Esegui gratis nel browser
Indichi il colore iniziale e finale, una frazione compresa tra zero e uno e le quattro coordinate di controllo usate dall’easing cubic-bezier di CSS. Il risultato include la frazione interpolata, i colori normalizzati, il valore esadecimale e i canali RGB, rendendo riproducibili le transizioni in strumenti di progettazione, pipeline di animazione, test e risorse generate senza dipendere dall’orologio di animazione del browser.
Separi l’avanzamento temporale da quello visivo del colore
Una miscelazione lineare considera il cinquanta per cento del tempo trascorso come il cinquanta per cento della distanza tra due colori. Le interfacce reali richiedono spesso un ritmo diverso: una transizione può iniziare dolcemente, accelerare nella parte centrale e rallentare vicino alla destinazione. Questa capacità applica una curva temporale di Bézier cubica prima di miscelare i canali RGB. L’input t rimane la frazione della sequenza temporale, mentre eased_t indica la frazione di colore prodotta dalla curva. Tale distinzione rende il risultato semplice da esaminare e riutilizzare. Al tempo zero viene restituito il colore iniziale e al tempo uno quello finale. Tra questi estremi, la curva controlla la velocità con cui avanzano i canali. Poiché l’operazione riceve numeri espliciti e non consulta un orologio, richieste ripetute con input identici producono output identici. È utile quando un renderer, un esportatore di design, una suite di test o un processo di build deve concordare su un fotogramma di transizione senza eseguire un’animazione né stimare ciò che il browser ha mostrato in un istante preciso.
Come viene risolta la frazione della Bézier cubica
Una curva di Bézier cubica in stile CSS parte da zero, termina a uno e possiede due punti di controllo forniti da chi effettua la chiamata. La frazione temporale richiesta appartiene all’asse x della curva, quindi valutare direttamente il polinomio y con lo stesso numero sarebbe errato per la maggior parte delle curve. Il calcolatore trova innanzitutto il parametro interno la cui coordinata x corrisponde alla frazione richiesta. Usa una ricerca di Newton limitata quando la pendenza è adatta e una ricerca per bisezione con passi fissi come alternativa stabile. Quindi valuta la coordinata y nel parametro trovato. Le coordinate x di controllo devono rimanere tra zero e uno, conservando la monotonicità del tempo e garantendo una risposta univoca. I controlli y possono variare da meno dieci a dieci, consentendo curve con anticipazione e overshoot. Se l’easing esce dall’intervallo normale, i canali RGB interpolati vengono limitati a byte validi. I decimali visualizzati sono arrotondati in modo uniforme e i canali all’intero più vicino. Queste regole eliminano la dipendenza dal motore del browser, dal frame rate e dal campionamento dell’animazione specifico della piattaforma.
Scelga gli input e utilizzi il colore restituito
Inserisca ogni colore come tre o sei cifre esadecimali, facoltativamente precedute da un cancelletto. I colori abbreviati vengono espansi e ogni colore accettato ritorna normalizzato con sei cifre minuscole. Fornisca t tra zero e uno, quindi x1, y1, x2 e y2 nel consueto ordine cubic-bezier. Per esempio, la comune forma ease-in-out usa 0.42, 0, 0.58 e 1. La risposta conserva gli estremi normalizzati e la curva, espone la frazione interpolata calcolata e fornisce sia un colore esadecimale sia i canali rosso, verde e blu separati. Usi il valore esadecimale in CSS, SVG, token di design o istruzioni per immagini; usi l’oggetto dei canali quando sono preferibili dati numerici strutturati. Per una sequenza di fotogrammi, ripeta l’operazione con frazioni temporali equidistanti mantenendo costanti estremi e controlli. La convalida rifiuta colori non validi, numeri non finiti, frazioni fuori dalla sequenza, controlli x non monotoni e controlli y eccessivi, impedendo a una configurazione errata di generare silenziosamente un campione ingannevole.
Casi d'uso
Generi fotogrammi di animazione deterministici
Campioni una transizione di colore interpolata a frazioni esatte per un renderer o una pipeline di risorse senza dipendere dall’orologio reale.
Verifichi i colori di transizione dell’interfaccia
Calcoli il valore esadecimale intermedio previsto per test visivi e di componenti che usano una curva di Bézier cubica documentata.
Crei una scala interpolata di token di design
Produca token di colore la cui spaziatura segua il ritmo di accelerazione e assestamento di un’animazione dell’interfaccia.
Domande frequenti
Quanto costa una richiesta?
Ogni richiesta API costa $0.002. La versione per browser può essere eseguita localmente senza inviare il calcolo all’API.
Equivale a una miscelazione lineare dei colori?
No. Una miscelazione lineare usa direttamente la frazione fornita; questa operazione la trasforma prima mediante la curva di Bézier cubica.
Perché x1 e x2 devono essere compresi tra zero e uno?
Il vincolo mantiene monotono l’avanzamento temporale, rispetta le regole delle funzioni temporali CSS e consente di invertire x senza ambiguità.
La curva di easing può produrre un overshoot?
Sì. y1 e y2 possono uscire dall’intervallo tra zero e uno. La frazione interpolata mostra l’overshoot, mentre i canali RGB vengono limitati a valori validi.
Quali formati di colore sono accettati?
Sono accettati colori RGB esadecimali di tre o sei cifre, con o senza cancelletto iniziale. I canali alfa e i nomi dei colori non sono supportati.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/color/bezier-interpolate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"color1":"#ff6600","color2":"#3366ff","t":0.5,"x1":0.42,"y1":0,"x2":0.58,"y2":1}'const res = await fetch("https://api.kit.forhosting.com/color/bezier-interpolate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"color1": "#ff6600",
"color2": "#3366ff",
"t": 0.5,
"x1": 0.42,
"y1": 0,
"x2": 0.58,
"y2": 1
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/bezier-interpolate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"color1": "#ff6600",
"color2": "#3366ff",
"t": 0.5,
"x1": 0.42,
"y1": 0,
"x2": 0.58,
"y2": 1
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/bezier-interpolate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"color1":"#ff6600","color2":"#3366ff","t":0.5,"x1":0.42,"y1":0,"x2":0.58,"y2":1}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"color1":"#ff6600","color2":"#3366ff","t":0.5,"x1":0.42,"y1":0,"x2":0.58,"y2":1}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/bezier-interpolate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"color1": "#ff6600",
"color2": "#3366ff",
"t": 0.5,
"x1": 0.42,
"y1": 0,
"x2": 0.58,
"y2": 1
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.bezier_interpolate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |