using System.Collections.Generic; using UnityEngine; using System; namespace DbscanImplementation { public class Dbscan { public static DbscanResult Run(List features, Func metricFunc, double epsilon, int minimumPoints) { var simpleDbscan = new DbscanAlgorithm(metricFunc); return simpleDbscan.ComputeClusterDbscan(allPoints: features.ToArray(), epsilon: epsilon, minimumPoints: minimumPoints); //Console.WriteLine($"Noise: {result.Noise.Count}"); //Console.WriteLine($"# of Clusters: {result.Clusters.Count}"); } /// /// Example distance function /// /// /// /// private static double ExampleDistanceFunction(Vector2 feature1, Vector2 feature2) { return Mathf.Sqrt( ((feature1.x - feature2.x) * (feature1.x - feature2.x)) + ((feature1.y - feature2.y) * (feature1.y - feature2.y)) ); } } }