#include <bits/stdc++.h>
using namespace std;
double pi = asin(1.0) * 2.0;
map<double, int> a;
map<double, int>::iterator it;
double area(double a, double b, double c) {
  double p = (a + b + c) / 2;
  return sqrt(p * (p - a) * (p - b) * (p - c));
}
double angle(double a, double b, double c) {
  double ans, s, h;
  s = area(a, b, c);
  h = 2 * s / b;
  ans = asin(h / a);
  return ans;
}
int main() {
  int n;
  long long x0, y0, v, t, r0, x, y, r;
  double p, q, ans = 0;
  scanf("%I64d %I64d %I64d %I64d", &x0, &y0, &v, &t);
  r0 = v * t;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%I64d %I64d %I64d", &x, &y, &r);
    x = x - x0;
    y = y - y0;
    if (r0 > 3000000000ll || (r0 + r) * (r0 + r) >= x * x + y * y) {
      if (r * r >= x * x + y * y)
        ans = 1.0;
      else {
        if (x == 0) {
          if (y > 0)
            p = pi / 2;
          else
            p = -pi / 2;
        } else {
          p = atan(((double)y) / x);
        }
        if (r0 > 3000000000ll || x * x + y * y - r * r <= r0 * r0)
          q = angle(sqrt(x * x + y * y - r * r), sqrt(x * x + y * y), r);
        else
          q = angle(r0, sqrt(x * x + y * y), r);
        if (x < 0) q += pi;
        a[p + q >= 3 * pi / 2 ? p + q - 2 * pi : p + q] -= 1;
        a[p - q < -pi / 2 ? p - q + 2 * pi : p - q] += 1;
      }
    }
  }
  if (ans) {
    printf("%.12lf", ans);
    return 0;
  }
  int w = 0, k = 0;
  for (it = a.begin(); it != a.end(); it++) {
    w += it->second;
    k = min(k, w);
  }
  k = -k;
  double be, en;
  be = -pi / 2;
  for (it = a.begin(); it != a.end(); it++) {
    if (k == 0) be = it->first;
    k += it->second;
    if (k == 0) {
      en = it->first;
      ans += en - be;
    }
  }
  if (k != 0) {
    en = 3 * pi / 2;
    ans += en - be;
  }
  ans /= 2 * pi;
  ans = min(1.0, ans);
  printf("%.12lf", ans);
}
