#include <bits/stdc++.h>
using namespace std;
const int MAXN = 120000;
struct point {
  long double x, y, r;
  long double len() { return sqrt(x * x + y * y); }
};
const long double PI = acos(-1);
const long double PI2 = PI * 2;
int n;
long double x0, y0_1289749, v, t;
point arr[MAXN];
int main() {
  int fl = 0;
  ios_base::sync_with_stdio(false);
  cout.setf(ios::fixed);
  cout.precision(6);
  cin >> x0 >> y0_1289749 >> v >> t;
  cin >> n;
  for (int i = 0; i < n; ++i) {
    long long x, y;
    cin >> x >> y;
    arr[i].x = x;
    arr[i].y = y;
    cin >> arr[i].r;
    arr[i].x -= x0;
    arr[i].y -= y0_1289749;
    x -= x0;
    y -= y0_1289749;
    if (x * x + y * y <= arr[i].r * arr[i].r) {
      fl = 1;
    }
  }
  if (fl) {
    cout << 1.00000000000 << "\n";
    return 0;
  }
  if (v < 1e-2 || t < 1e-2) {
    cout << 0.00000000000 << "\n";
    return 0;
  }
  vector<pair<long double, long double> > vv;
  for (int i = 0; i < n; ++i) {
    long double len = t * v;
    len = min(len, sqrt(arr[i].len() * arr[i].len() - arr[i].r * arr[i].r));
    long double cs =
        (len * len + arr[i].len() * arr[i].len() - arr[i].r * arr[i].r) /
        (2 * len * arr[i].len());
    if (abs(cs) >= 1)
      cs = 0;
    else
      cs = acos(cs);
    long double cs2 = atan2(arr[i].y, arr[i].x);
    vv.push_back(make_pair(cs2 - cs, cs2 + cs));
    vv.push_back(make_pair(cs2 - cs + PI2, cs2 + cs + PI2));
    vv.push_back(make_pair(cs2 - cs - PI2, cs2 + cs - PI2));
  }
  sort(vv.begin(), vv.end());
  long double sum = 0;
  long double mx = -PI;
  for (int i = 0; i < (int)vv.size(); ++i) {
    if (vv[i].first > mx && PI > mx) sum += min(PI, vv[i].first) - mx;
    mx = max(mx, vv[i].second);
  }
  cout << 1 - (sum / PI2) << "\n";
  return 0;
}
