#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100000 + 10;
const double pi = acos(-1.0);
const double eps = 1e-10;
int n;
double x[MAXN], y[MAXN], r[MAXN], x0, yy, v, T;
vector<pair<double, double> > Q;
double dist(double x1, double y1, double x2, double y2) {
  return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}
int main() {
  scanf("%lf%lf%lf%lf", &x0, &yy, &v, &T);
  double d = v * T;
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) scanf("%lf%lf%lf", &x[i], &y[i], &r[i]);
  for (int i = 1; i <= n; ++i)
    if (dist(x[i], y[i], x0, yy) < r[i] + eps) {
      puts("1.00000000");
      return 0;
    }
  if (d < eps) {
    puts("0.00000000");
    return 0;
  }
  for (int i = 1; i <= n; ++i) {
    if (dist(x[i], y[i], x0, yy) + eps > d + r[i]) continue;
    double l, rr, ang;
    ang = atan2(y[i] - yy, x[i] - x0);
    double di = dist(x[i], y[i], x0, yy);
    double vang;
    if (d > sqrt(di * di - r[i] * r[i]))
      vang = asin(r[i] / di);
    else
      vang = acos((di * di + d * d - r[i] * r[i]) / 2 / d / di);
    l = ang - vang;
    rr = ang + vang;
    if (rr + eps > pi) {
      Q.push_back(make_pair(-pi, rr - 2 * pi));
      rr = pi;
    }
    if (l < -pi + eps) {
      Q.push_back(make_pair(l + 2 * pi, pi));
      l = -pi;
    }
    Q.push_back(make_pair(l, rr));
  }
  if (Q.size() == 0) {
    puts("0.00000000");
    return 0;
  }
  sort(Q.begin(), Q.end());
  double l = Q[0].first, rr = Q[0].second, ans = 0;
  for (int i = 0; i < (int)Q.size(); ++i) {
    if (Q[i].first + eps > rr) {
      ans += (rr - l);
      l = Q[i].first;
      rr = Q[i].second;
    }
    rr = max(rr, Q[i].second);
  }
  ans += (rr - l);
  printf("%.9f\n", ans / (2 * pi));
  return 0;
}
