Hvordan beregne Color Gradient

Hvordan beregne Color Gradient


Fargemodellene er metoder for å tallmessig kartlegge fargespekteret. Modellene består vanligvis av tre eller fire komponent verdier, slik som de røde, grønne og blå komponentene i RGB-fargemodellen. For å få til å skape en følelse av dybde eller andre grafiske effekter, er det ofte ønskelig å bruke modeller for å skape fargeoverganger, som er jevne overganger mellom en farge og en annen. Opprette gradienter er et spørsmål om matematisk interpole mellom farge modellkomponenter. Stigningen Beregningene kan være så enkelt eller komplisert som du vil.

Bruksanvisning

1 Definerer et par av koordinater som svarer til begynnelsen og slutten av gradienten. For en lineær gradient, vil disse koordinater også angi gradient retning, slik at i praksis de tjene som hode og hale av en vektor, som er en retningsbestemt mengde. For en radial gradient, tilsvarer vektoren hale til sentrum, og vektoren magnitude lik radius. For eksempel, hvis du ønsker en diagonal gradient å fylle et kvadrat som har øvre venstre koordinat er (0, 0), og nederst til høyre er (100, 100) definerer de samme koordinater som hode og hale av vektoren. Hver linje vinkelrett på vektoren mellom halen og hodet vil gradvis endres fra utgangsfarge ved (0, 0) til den endelige fargen ved (100, 100).

2 Beregn størrelsen av gradienten vektor med ligningen M = sqrt ((x2 - x1) ² + (y2 - y1) ²), hvor (x1, y1) og (x2, y2) er koordinatene til halen og hodet hhv . For eksempel, M = sqrt ((100 - 0) + (100 - 0) ²) = 141,4.

3 Beregn avstanden til gradient vektor hale for hvert punkt i området. For en radial vektor, er ligningen D = sqrt ((x - x1) ² + (y - y1) ²), hvor (x, y) er punktets koordinatparet. For lineære gradienter, er avstanden ikke til hale seg selv, men til den linje som går gjennom halevinkelrett på vektoren. Ligningen er D = (x

(x2 - x1) - x1 x2 + x1² + y (y2 - y1) - y1 y2 + y1²) / M. Angi en hvilken som helst avstand som er mindre enn 0 til 0, og angi hvilken som helst avstand som er større enn størrelsen til den størrelsesorden. For eksempel er avstanden av punktet (20, 30) er D = (20 100 + 30 100) /141.1 = 35,4 . Alle punktene på den linje som passerer vinkelrett gjennom det punktet har samme avstand.

4 Beregn punktets avstand til magnitude forholdet med ligningen R = D / M. For eksempel er forholdet for det punkt (20, 30) R = 35,4 / 141,4 = 0,25.

5 Finn hver av fargekomponentene for poenget med formelen Cp = R (C2 - C1) + C1, hvor C1 og C2 er de tilsvarende komponenter for den første og endelige fargen på graderingen. Denne formelen fungerer for noen fargemodell, men når du arbeider med sykliske komponenter, for eksempel nyansen av HSL-modellen (Hue Saturation Letthet modell), bruker verdier for C1 og C2 slik at C2 minus C1 er mindre enn halvparten av komponenten rekkevidde.

For eksempel, hvis begynnelses- og slutt HSL farger på graderings-er (10, 93, 33) og (355, 28, 60), differansen C2 minus C1 for nyansen er 355-10 = 345, noe som er mer enn halvparten av HSL sin utvalg på 360 grader, så det er bare å jobbe med vinklene i en sirkel, legge til 360 grader for å finne en tilsvarende vinkel. La C1 = 360 + 10 = 370. Derfor nyansen komponenten er Cp = 0,25 (355-370) + 370 = 366,3. Det er utenfor rekkevidde, så trekke fra 360 til en verdi av 6,3. De andre HSL komponenter er ikke syklisk, slik at beregningene er mer oversiktlig. For metning, Cp = 0,25 (28-93) + 93 = 76,8, og for letthet, Cp = 0,25 * (60 - 33) + 33 = 40,0. Rund av alle beregningene for en endelig HSL farge (6, 77, 40).

Hint

  • Hvis du vil ha en ikke-lineær interpolering mellom komponentene, gjelder noen funksjon både teller og nevner for R = D / M, og ta den absolutte verdien. For eksempel prøve R = abs (sqrt (2D - D²) / sqrt (2M - m²)).
  • Man kan utlede den lineære avstanden formel i trinn 3 ved å definere en annen vektor med samme halen som gradienten vektoren, men med et hode ved (x, y). Ved hjelp av vektoralgebra, ta prikken produktet av de to vektorer, og dividere med gradient vektoren magnitude.