#include <bits/stdc++.h>
using namespace std;
double const EPS = 1e-8;
double const PI = acos(-1.0);
struct PT {
  double x, y;
  PT(double x, double y) : x(x), y(y) {}
  PT operator-(const PT &p) const { return PT(x - p.x, y - p.y); }
};
double dot(PT p, PT q) { return p.x * q.x + p.y * q.y; }
double dist(PT p, PT q) { return sqrt(dot(p - q, p - q)); }
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cout << fixed << setprecision(10);
  long long xx, yy, v, t, rr, n;
  cin >> xx >> yy >> v >> t >> n;
  rr = v * t;
  PT p(xx, yy);
  vector<pair<double, int> > u;
  for (long long i = 0, x, y, r; i < n; i++) {
    cin >> x >> y >> r;
    double dst = dist(PT(x, y), p);
    if (dst - EPS > rr + r) continue;
    if (dst <= r) return cout << 1, 0;
    double angl, angr, ang, angm = atan2(y - yy, x - xx);
    if (angm < 0) angm += 2 * PI;
    double tt = sqrt(dst * dst - 1.0 * r * r);
    if (tt < rr + EPS)
      ang = asin(r / dst);
    else
      ang = acos((dst * dst + rr * rr - 1.0 * r * r) / (2 * dst * rr));
    angl = angm - ang;
    angr = angm + ang;
    if (angl < 0) {
      u.emplace_back(angl + 2 * PI, 1);
      u.emplace_back(2 * PI, -1);
      u.emplace_back(0.0, 1);
      u.emplace_back(angr, -1);
    } else if (angr > 2 * PI) {
      u.emplace_back(angl, 1);
      u.emplace_back(2 * PI, -1);
      u.emplace_back(0.0, 1);
      u.emplace_back(angr - 2 * PI, -1);
    } else {
      u.emplace_back(angl, 1);
      u.emplace_back(angr, -1);
    }
  }
  sort(u.begin(), u.end());
  double lang = 0, ans = 0;
  int o = 0;
  for (auto i : u) {
    if (o > 0) ans += i.first - lang;
    o += i.second;
    lang = i.first;
  }
  cout << ans / (2 * PI);
}
