creek
The AI Image Editor of 2030git clone https://github.com/maydayv7/creek
lib/utils/image_utils.dart (1009B)
1import 'dart:math';
2import 'dart:ui';
3
4// Extension to normalize Rect
5extension RectNormalize on Rect {
6 Rect normalize() {
7 return Rect.fromLTRB(
8 left < right ? left : right,
9 top < bottom ? top : bottom,
10 left < right ? right : left,
11 top < bottom ? bottom : top,
12 );
13 }
14}
15
16List<double> l2Normalize(List<double> vec) {
17 double sum = vec.fold(0, (p, c) => p + c * c);
18 double norm = sqrt(sum);
19 if (norm == 0) return vec;
20 return vec.map((v) => v / norm).toList();
21}
22
23double dotProduct(List<double> a, List<double> b) {
24 double sum = 0;
25 // Ensure lengths match to avoid range errors
26 int len = min(a.length, b.length);
27 for (int i = 0; i < len; i++) {
28 sum += a[i] * b[i];
29 }
30 return sum;
31}
32
33double cosineSim(List<double> a, List<double> b) {
34 double dot = 0.0, nA = 0.0, nB = 0.0;
35 for (int i = 0; i < a.length; i++) {
36 dot += a[i] * b[i];
37 nA += a[i] * a[i];
38 nB += b[i] * b[i];
39 }
40 return (nA == 0 || nB == 0) ? 0.0 : dot / (sqrt(nA) * sqrt(nB));
41}