Advertisement
Guest User

Untitled

a guest
Mar 24th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.80 KB | None | 0 0
  1. vector<vector<int> > delaunayTriangulation(vector<double> x, vector<double> y) {
  2.     int n = x.size(); vector<double> z(n); vector<vector<int>> ret;
  3.     for (int i = 0; i < n; i++) z[i] = x[i] * x[i] + y[i] * y[i];
  4.     for (int i = 0; i < n - 2; i++) for (int j = i + 1; j < n; j++) for (int k = i + 1; k < n; k++) {
  5.         if (j == k) continue;
  6.         double xn = (y[j] - y[i]) * (z[k] - z[i]) - (y[k] - y[i]) * (z[j] - z[i]);
  7.         double yn = (x[k] - x[i]) * (z[j] - z[i]) - (x[j] - x[i]) * (z[k] - z[i]);
  8.         double zn = (x[j] - x[i]) * (y[k] - y[i]) - (x[k] - x[i]) * (y[j] - y[i]);
  9.         bool f = zn < 0;
  10.         for (int m = 0; f && m < n; m++) f = f && ((x[m] - x[i]) * xn + (y[m] - y[i]) * yn + (z[m] - z[i]) * zn <= 0);
  11.         if (f) ret.push_back({i, j, k});
  12.     }
  13.     return ret;
  14. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement