#include <bits/stdc++.h>
using namespace std;
struct point {
  double x, y;
  point(double _x = 0.0, double _y = 0.0) { x = _x, y = _y; }
  bool operator<(point foo) {
    if (fabs(x - foo.x) > 1e-9) {
      return x < foo.x;
    }
    return y < foo.y;
  }
  bool operator==(point foo) {
    return (fabs(x - foo.x) < 1e-9 && fabs(y - foo.y) < 1e-9);
  }
};
struct line {
  double a, b, c;
  line(double _a, double _b, double _c) { a = _a, b = _b, c = _c; }
};
struct vect {
  double x, y;
  vect(double _x, double _y) { x = _x, y = _y; }
};
struct circle {
  double rad;
  point center;
  circle(point _center, double _rad) {
    rad = _rad;
    center = _center;
  }
  bool operator==(circle other) {
    return (other.center == center && fabs(rad - other.rad) < 1e-9);
  }
};
double sqr(double a) { return a * a; }
double deg_to_rad(double deg) { return (deg * 3.141592653589793) / 180.0; }
double distance(point p1, point p2) {
  double ret = sqr(p1.x - p2.x) + sqr(p1.y - p2.y);
  return sqrt(ret);
}
double area_circle(int rad) {
  double ret = 3.141592653589793 * rad * rad;
  return ret;
}
int insideCircle(circle C, point p1) {
  double d1 = distance(C.center, p1);
  if (fabs(d1 - C.rad) < 1e-9) {
    return 1;
  }
  if (C.rad > d1) {
    return 0;
  }
  return 2;
}
vector<pair<double, int> > v;
int main() {
  ios_base::sync_with_stdio(false);
  int x0, y0, V, T, n, x, y, r, i;
  scanf("%d %d %d %d", &x0, &y0, &V, &T);
  scanf("%d", &n);
  double rr = (double)V * T;
  for (i = 0; i < n; i++) {
    scanf("%d %d %d", &x, &y, &r);
    x -= x0;
    y -= y0;
    double d1 = distance(point(x, y), point(0, 0));
    if ((1.0 * r * r + 1e-9) > (d1 * d1)) {
      printf("%.11f\n", 1.0);
      return 0;
    }
    if (d1 >= (rr + r)) {
      continue;
    }
    double d2 = sqrt(1.0 * d1 * d1 - 1.0 * r * r);
    double ang;
    if ((d2 - rr) < 1e-9) {
      ang = asin((double)r / d1);
    } else {
      ang = acos((d1 * d1 + rr * rr - 1.0 * r * r) / (2 * d1 * rr));
    }
    double corr = atan2(y, x);
    if (corr < 0) {
      corr += 2 * 3.141592653589793;
    }
    double L = corr - ang, R = corr + ang;
    if (L < -1e-9) {
      v.push_back(make_pair(L + 2 * 3.141592653589793, 1));
      v.push_back(make_pair(2 * 3.141592653589793, -1));
      v.push_back(make_pair(0.0, 1));
      v.push_back(make_pair(R, -1));
    } else if (R > 2 * 3.141592653589793) {
      v.push_back(make_pair(L, 1));
      v.push_back(make_pair(2 * 3.141592653589793, -1));
      v.push_back(make_pair(0.0, 1));
      v.push_back(make_pair(R - 2 * 3.141592653589793, -1));
    } else {
      v.push_back(make_pair(L, 1));
      v.push_back(make_pair(R, -1));
    }
  }
  sort(v.begin(), v.end());
  double last = 0, ans = 0;
  int cnt = 0;
  for (i = 0; i < v.size(); i++) {
    if (cnt > 0) {
      ans += (v[i].first - last);
    }
    cnt += v[i].second;
    last = v[i].first;
  }
  ans /= (2 * 3.141592653589793);
  printf("%.11lf\n", ans);
  return 0;
}
