Dbscan.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using System.Collections.Generic;
  2. using UnityEngine;
  3. using System;
  4. namespace DbscanImplementation
  5. {
  6. public class Dbscan
  7. {
  8. public static DbscanResult<Vector2> Run(List<Vector2> features, Func<Vector2, Vector2, double> metricFunc, double epsilon, int minimumPoints)
  9. {
  10. var simpleDbscan = new DbscanAlgorithm<Vector2>(metricFunc);
  11. return simpleDbscan.ComputeClusterDbscan(allPoints: features.ToArray(),
  12. epsilon: epsilon, minimumPoints: minimumPoints);
  13. //Console.WriteLine($"Noise: {result.Noise.Count}");
  14. //Console.WriteLine($"# of Clusters: {result.Clusters.Count}");
  15. }
  16. /// <summary>
  17. /// Example distance function
  18. /// </summary>
  19. /// <param name="feature1"></param>
  20. /// <param name="feature2"></param>
  21. /// <returns></returns>
  22. private static double ExampleDistanceFunction(Vector2 feature1, Vector2 feature2)
  23. {
  24. return Mathf.Sqrt(
  25. ((feature1.x - feature2.x) * (feature1.x - feature2.x)) +
  26. ((feature1.y - feature2.y) * (feature1.y - feature2.y))
  27. );
  28. }
  29. }
  30. }