浏览代码

Add mu-nu angle metric

Kirk Trombley 3 年之前
父节点
当前提交
f96010798b
共有 2 个文件被更改,包括 16 次插入4 次删除
  1. 6 0
      web/metrics.js
  2. 10 4
      web/render.js

+ 6 - 0
web/metrics.js

@@ -71,6 +71,12 @@ const metrics = {
     `,
     evaluate: data => data.mu.lightness,
   },
+  muNuAngle: {
+    option: "Mu-Nu Angle (V)",
+    displayName: p => String.raw`V\left(${p}\right)`,
+    displayBody: p => String.raw`\angle \left( \vec{\mu}\left(${p}\right), \vec{\nu}\left(${p}\right) \right)`,
+    evaluate: data => rad2deg * Math.acos(vectorDot(data.mu.unit, data.nu) / vectorMag(data.nu)),
+  },
   size: {
     option: "Size (N)",
     displayName: p => String.raw`N\left(${p}\right)`,

+ 10 - 4
web/render.js

@@ -60,13 +60,17 @@ const renderPokemonTileCluster = (area, totalSize, { mu, nu }, scores) => {
         <span class="pkmn-tile_label">I =</span>
         <span class="pkmn-tile_value">${scores.inertia.toFixed(2)}</span>
       </div>
+      <div class="pkmn-tile_row">
+        <span class="pkmn-tile_label">ℒ =</span>
+        <span class="pkmn-tile_value">${scores.lightness.toFixed(2)}</span>
+      </div>
       <div class="pkmn-tile_row">
         <span class="pkmn-tile_label">ν =</span>
         <span class="pkmn-tile_vector">(${nu.map(c => c.toFixed(2)).join(", ")})</span>
       </div>
       <div class="pkmn-tile_row">
-        <span class="pkmn-tile_label"> =</span>
-        <span class="pkmn-tile_value">${scores.lightness.toFixed(2)}</span>
+        <span class="pkmn-tile_label">V =</span>
+        <span class="pkmn-tile_value">${scores.muNuAngle.toFixed(2)}°</span>
       </div>
       <div class="pkmn-tile_row">
         <span class="pkmn-tile_label">N =</span>
@@ -134,12 +138,14 @@ const renderPokemonTile = (kind, name, { total: { mu, nu, size }, clusters }, sc
             <span class="pkmn-tile_vector">(${mu.vector.map(c => c.toFixed(2)).join(", ")})</span>
             <span class="pkmn-tile_label">I =</span>
             <span class="pkmn-tile_value">${scores.total.inertia.toFixed(2)}</span>
+            <span class="pkmn-tile_label">ℒ =</span>
+            <span class="pkmn-tile_value">${scores.total.lightness.toFixed(2)}</span>
           </div>
           <div class="pkmn-tile_row">
             <span class="pkmn-tile_label">ν =</span>
             <span class="pkmn-tile_vector">(${nu.map(c => c.toFixed(2)).join(", ")})</span>
-            <span class="pkmn-tile_label"> =</span>
-            <span class="pkmn-tile_value">${scores.total.lightness.toFixed(2)}</span>
+            <span class="pkmn-tile_label">V =</span>
+            <span class="pkmn-tile_value">${scores.total.muNuAngle.toFixed(2)}°</span>
             <span class="pkmn-tile_label">N =</span>
             <span class="pkmn-tile_value">${size}px</span>
           </div>