#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5, MOD = 1e9 + 7;
const double EPS = 1e-9;
double PI = acos(-1);
double square(long long x) {
  double ret = double(x) * double(x);
  return ret;
}
vector<pair<double, int> > V;
double deg(double x) { return (x * 180) / PI; }
double mod(double x) {
  while (x < 0) x += 2 * PI;
  while (x >= 2 * PI) x -= 2 * PI;
  return x;
}
int main() {
  int n;
  long long x0, y0, v, T, d, x, y, r;
  cin >> x0 >> y0 >> v >> T;
  double dist = v * T;
  double start = 0, ans = 0;
  int cntr = 0;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> x >> y >> r;
    x -= x0, y -= y0;
    double d = sqrt(square(x) + square(y));
    if (d <= r) {
      cout << "1.000000000\n";
      return 0;
    }
    if (dist >= d - r) {
      double angle;
      if (square(x) + square(y) - square(r) <= square(dist))
        angle = asin(r / d);
      else
        angle = acos((square(dist) + square(x) + square(y) - square(r)) /
                     (2 * dist * d));
      angle += EPS;
      double slope = atan2(y, x);
      double a = mod(slope - angle), b = mod(slope + angle);
      V.push_back({a, 1});
      V.push_back({b, -1});
      if (a > b) cntr++;
    }
  }
  sort(V.begin(), V.end());
  for (auto v : V) {
    if (v.second == 1) {
      if (cntr == 0) start = v.first;
      cntr++;
    } else {
      if (cntr == 1) ans += (v.first - start);
      cntr--;
    }
  }
  if (cntr > 0) ans += 2 * PI - start;
  ans = ans / (2 * PI);
  cout << setprecision(10) << fixed << ans << endl;
}
