react-native-skia-example
Version:
This is a **Clone coding** from [**react-native-skia**](https://shopify.github.io/react-native-skia/docs/tutorials)
34 lines (29 loc) • 977 B
text/typescript
import type {Color, Vector} from '@shopify/react-native-skia';
import {mixColors, dist, vec} from '@shopify/react-native-skia';
export const bilinearInterpolate = (
[color0, color1, color2, color3]: Color[],
size: Vector,
pos: Vector,
) => {
'worklet';
const uv = vec(pos.x / size.x, pos.y / size.y);
const colorA = mixColors(uv.x, color0, color1);
const colorB = mixColors(uv.x, color2, color3);
return mixColors(uv.y, colorA, colorB);
};
export const inRadius = (a: Vector, b: Vector, r = 20) => {
'worklet';
return dist(a, b) < r;
};
export const getPointAtLength = (length: number, from: Vector, to: Vector) => {
'worklet';
const angle = Math.atan2(to.y - from.y, to.x - from.x);
const x = from.x + length * Math.cos(angle);
const y = from.y + length * Math.sin(angle);
return vec(x, y);
};
export const symmetric = (v: Vector, center: Vector) => {
'worklet';
const d = dist(v, center);
return getPointAtLength(d * 2, v, center);
};