#include <bits/stdc++.h>
using namespace std;
const int N = 100000 + 7;
const int M = 550;
const int mid = M / 2;
const int mod = 1e7 + 7;
const int inf = 1e9 + 7;
const long long linf = 1ll * inf * inf;
const double pi = acos(-1);
const double eps = 1e-9;
const double ep = 1e-5;
const int maxn = 1e5 + 7;
const double PI = acos(-1);
long long sqr(long long u) { return u * u; }
struct Point {
  int x, y;
  int r;
  long long sqDist(Point u) { return sqr(u.x - x) + sqr(u.y - y); }
  double dist(Point u) { return sqrt(sqDist(u)); }
};
Point r;
Point P[N];
int v, t;
vector<pair<double, double> > segment;
void solve() {
  cin >> r.x >> r.y >> v >> t;
  long long distant = 1ll * v * t;
  int n;
  cin >> n;
  for (int i = (0); i < (n); i++) {
    scanf("%d%d%d", &P[i].x, &P[i].y, &P[i].r);
    if (r.sqDist(P[i]) <= sqr(P[i].r)) {
      printf("%.9lf", 1.0);
      return;
    }
  }
  if (v == 0 || t == 0) {
    printf("%.9lf", 0.0);
    return;
  }
  for (int i = (0); i < (n); i++) {
    double cur = r.dist(P[i]);
    double goc = atan2(P[i].y - r.y, P[i].x - r.x);
    if (goc + eps >= 2 * pi) goc -= 2 * pi;
    double lef, rig;
    if (sqrt(cur * cur - 1.0 * P[i].r * P[i].r) <= eps + distant) {
      double alpha = asin(P[i].r / cur);
      lef = goc - alpha;
      rig = goc + alpha;
    } else {
      if (distant + eps >= cur - P[i].r) {
        double alpha =
            acos((1.0 * distant * distant + cur * cur - sqr(P[i].r)) / 2.0 /
                 distant / cur);
        lef = goc - alpha;
        rig = goc + alpha;
      } else {
        continue;
      }
    }
    if (lef + eps >= 2 * pi) lef -= 2 * pi;
    if (rig + eps >= 2 * pi) rig -= 2 * pi;
    if (lef < eps) lef += 2 * pi;
    if (rig < eps) rig += 2 * pi;
    if (abs(lef - rig) < eps) continue;
    if (lef + eps <= rig) {
      segment.push_back(make_pair(lef, rig));
    } else {
      segment.push_back(make_pair(0, rig));
      segment.push_back(make_pair(lef, 2 * pi));
    }
  }
  double totalAns = 0;
  if (segment.size() == 0) {
    printf("%.9lf", 0.0);
    return;
  }
  sort(segment.begin(), segment.end());
  double last = segment[0].second;
  double fir = segment[0].first;
  for (int i = (0); i < (segment.size()); i++) {
    if (segment[i].first + eps > last) {
      totalAns += last - fir;
      fir = segment[i].first;
      last = segment[i].second;
    } else {
      last = max(last, segment[i].second);
    }
    if (i == segment.size() - 1) {
      totalAns += last - fir;
    }
  }
  printf("%.9lf", totalAns / 2.0 / pi);
}
int main() {
  int T = 1;
  for (int i = (1); i < (T + 1); i++) {
    solve();
  }
}
