#include <bits/stdc++.h>
using namespace std;
const int N = 400005;
inline double max(double a, double b) {
  if (a > b)
    return a;
  else
    return b;
}
int X, Y, v, t, n, S_, T_;
double S[N], T[N];
pair<double, double> A[N];
int cnt;
int main() {
  scanf("%d%d%d%d", &X, &Y, &v, &t);
  double R = 1ll * v * t;
  scanf("%d", &n);
  for (int i = 1, x, y, r; i <= n; i++) {
    scanf("%d%d%d", &x, &y, &r);
    double Dis = 1ll * (X - x) * (X - x) + 1ll * (Y - y) * (Y - y);
    if (Dis <= 1ll * r * r) {
      printf("1\n");
      return 0;
    }
    if (Dis > (R + r) * (R + r)) continue;
    double Ang = asin(r / sqrt(Dis));
    double Ang_ = atan2(y - Y, x - X);
    if (Dis > R * R)
      Ang = acos((Dis + R * R - 1ll * r * r) / 2.0 / sqrt(Dis) / R);
    double L = Ang_ - Ang, R = Ang_ + Ang;
    if (L < 0) L += 2 * acos(-1);
    if (R < 0) R += 2 * acos(-1);
    if (R < L) {
      A[++cnt] = make_pair(L, 2 * acos(-1));
      A[++cnt] = make_pair(0, R);
    } else
      A[++cnt] = make_pair(L, R);
  }
  sort(A + 1, A + cnt + 1);
  double Ans = 0, last = 0;
  for (int i = 1; i <= cnt; i++) {
    double x = A[i].first, y = A[i].second;
    if (x >= last) {
      Ans += y - x;
      last = y;
    } else {
      Ans += max(0.0, y - last), last = max(last, y);
    }
  }
  printf("%.8lf\n", Ans / acos(-1) / 2.0);
}
