#include <bits/stdc++.h>
using namespace std;
vector<pair<double, double> > ve;
long long xx, yy, r0, v, t, n;
bool cmp(pair<double, double> a, pair<double, double> b) {
  if (fabs(a.first - b.first) <= 1e-9) return a.second < b.second;
  return a.first < b.first;
}
int main() {
  scanf("%I64d%I64d%I64d%I64d", &xx, &yy, &v, &t);
  r0 = v * t;
  scanf("%I64d", &n);
  double ans = 0.0;
  bool sym = true;
  while (n--) {
    long long x1, y1, r1;
    scanf("%I64d%I64d%I64d", &x1, &y1, &r1);
    if (!sym) continue;
    double dis = sqrt(((double)x1 - xx) * (x1 - xx) + (y1 - yy) * (y1 - yy));
    if ((x1 - xx) * (x1 - xx) + (yy - y1) * (yy - y1) <= r1 * r1) {
      ans = 1.0;
      printf("%f\n", ans);
      sym = false;
      continue;
    }
    if ((double)r1 + r0 <= dis) continue;
    double angle = acos((x1 - xx) / dis), range;
    if (y1 - yy <= 0) {
      angle = -angle;
      angle += 2 * acos(-1.0);
    }
    long long a1 = (x1 - xx) * (x1 - xx) + (yy - y1) * (yy - y1), b1 = r1 * r1;
    if (a1 - b1 <= (double)r0 * r0) {
      range = asin(1.0 * r1 / dis);
    } else
      range = acos((dis * dis + r0 * r0 - r1 * r1) / (2 * dis * r0));
    double l = angle - range, r = angle + range;
    if (l < 0.0) {
      l += 2 * acos(-1.0);
      ve.push_back(make_pair(l, 2 * acos(-1.0)));
      ve.push_back(make_pair(0.0, r));
    } else if (r > 2 * acos(-1.0)) {
      r -= 2 * acos(-1.0);
      ve.push_back(make_pair(l, 2 * acos(-1.0)));
      ve.push_back(make_pair(0.0, r));
    } else
      ve.push_back(make_pair(l, r));
  }
  if (sym) {
    double ans = 0.0, pre = 0.0;
    sort(ve.begin(), ve.end(), cmp);
    for (int i = 0; i < ve.size(); i++) {
      double preL = ve[i].first, preR = ve[i].second;
      if (preR > pre) {
        ans += preR - max(pre, preL);
        pre = preR;
      }
    }
    printf("%f\n", ans / (2 * acos(-1.0)));
  }
  return 0;
}
