#include <bits/stdc++.h>
using namespace std;
const long long int MX = 1000000000LL;
vector<pair<double, double>> intervals;
const double PI = acos(-1.0);
void myupdate(double l_idx, double r_idx) {
  if (l_idx < 0) {
    myupdate(l_idx + 2 * PI, 2 * PI);
    myupdate(0, r_idx);
  } else if (r_idx > 2 * PI) {
    myupdate(l_idx, 2 * PI);
    myupdate(0, r_idx - 2 * PI);
  } else {
    intervals.push_back({l_idx, r_idx});
  }
}
double max(double a, double b) { return a < b ? b : a; }
template <typename T>
T sqr(T val) {
  return val * val;
}
double solve() {
  long long int x0, y0, v, t;
  scanf("%lld %lld %lld %lld", &x0, &y0, &v, &t);
  long long int z = v * t;
  int N;
  scanf("%d", &N);
  while (N--) {
    long long int x, y, r;
    scanf("%lld %lld %lld", &x, &y, &r);
    x -= x0, y -= y0;
    long long int d2 = x * x + y * y;
    if (z <= 2 * MX && sqr(z + r) < d2) continue;
    long long int z2 = -1;
    if (z >= 3 * MX || z * z >= d2 - r * r) {
      z2 = d2 - r * r;
    } else {
      z2 = z * z;
    }
    if ((z2 == 0 && d2 <= r * r) || d2 < r * r) {
      return 1.0;
    }
    double base_angle = atan2(y, x);
    double t = z2 ? ((double(z2) + double(d2) - double(r * r)) /
                     double(2.0 * sqrt(z2) * sqrt(d2)))
                  : 0;
    double theta = acos(t);
    double l_idx = (base_angle - theta + PI), r_idx = (base_angle + theta + PI);
    myupdate(l_idx, r_idx);
  }
  double res = 0.0;
  sort(intervals.begin(), intervals.end());
  double prv = 0.0;
  for (auto &interval : intervals) {
    double from = max(interval.first, prv), to = interval.second;
    res += max(0.0, to - from);
    prv = max(prv, to);
  }
  return double(res) / double(2 * PI);
}
int main(void) { printf("%.15lf\n", solve()); }
