|
@@ -172,17 +172,22 @@ const pokemonDisplayLookup = Object.fromEntries(
|
|
|
);
|
|
|
|
|
|
const calcScores = (data, target) => {
|
|
|
- const { centroid, unitCentroid, tilt, stddev, chromaMean, chromaDev, hue } = data;
|
|
|
+ const { centroid, unitCentroid, tilt, stddev, stddevTotal, chromaMean, chromaDev, hue } = data;
|
|
|
const deltaVec = centroid.map((c, i) => c - target.vector[i]);
|
|
|
+ const delta = Math.hypot(...deltaVec);
|
|
|
const psiVec = stddev.map((s, i) => Math.hypot(s, deltaVec[i]));
|
|
|
const psi = Math.hypot(...psiVec);
|
|
|
const theta = Math.acos(Math.min(1, vectorDot(tilt, target.unit))) * rad2deg;
|
|
|
const deltaC = chromaMean - target.chroma;
|
|
|
const deltaH = Math.abs(hue - target.hue) * rad2deg;
|
|
|
+ const likelihood = Math.exp(-Math.pow(delta / (2 * stddevTotal), 2)) / stddevTotal;
|
|
|
+ const arcDiff = psi * theta;
|
|
|
|
|
|
return {
|
|
|
...data,
|
|
|
- arcDiff: psi * theta,
|
|
|
+ probArcDiff: arcDiff / likelihood,
|
|
|
+ arcDiff,
|
|
|
+ likelihood,
|
|
|
|
|
|
psi,
|
|
|
psiVec,
|
|
@@ -193,7 +198,7 @@ const calcScores = (data, target) => {
|
|
|
|
|
|
theta,
|
|
|
|
|
|
- delta: Math.hypot(...deltaVec),
|
|
|
+ delta,
|
|
|
deltaVec,
|
|
|
deltaL: Math.abs(deltaVec[0]),
|
|
|
deltaA: Math.abs(deltaVec[1]),
|