#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
const int maxn = 1e5 + 10;
const int maxv = 1e3 + 10;
const double eps = 1e-6;
const double PI = acos(-1);
int comp(double x) {
  if (abs(x) < eps) return 0;
  return x < 0 ? -1 : 1;
}
struct Point {
  double x, y;
  Point(double _x = 0, double _y = 0) : x(_x), y(_y) {}
  void read() { scanf("%lf%lf", &x, &y); }
  Point operator+(Point rhs) { return Point(x + rhs.x, y + rhs.y); }
  Point operator-(Point rhs) { return Point(x - rhs.x, y - rhs.y); }
  Point operator*(double rhs) { return Point(x * rhs, y * rhs); }
  Point operator/(double rhs) { return Point(x / rhs, y / rhs); }
  double operator*(Point rhs) { return x * rhs.x + y * rhs.y; }
  double operator^(Point rhs) { return x * rhs.y - y * rhs.x; }
  double dis() { return sqrt(x * x + y * y); }
};
struct Circle {
  Point o;
  double r;
  void read() {
    o.read();
    scanf("%lf", &r);
  }
  void print() { printf("%f  %f  %f\n", o.x, o.y, r); }
} c[maxn];
void add(vector<pair<double, double> >& vec, double st, double ed) {
  if (st < -PI + eps) {
    vec.push_back(pair<double, double>(st + 2 * PI, PI));
    st = -PI;
  }
  if (ed > PI - eps) {
    vec.push_back(pair<double, double>(-PI, ed - 2 * PI));
    ed = PI;
  }
  vec.push_back(pair<double, double>(st, ed));
}
int main() {
  double x, y, v, t;
  scanf("%lf%lf%lf%lf", &x, &y, &v, &t);
  Circle p;
  p.o.x = x;
  p.o.y = y;
  p.r = v * t;
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    c[i].read();
  }
  vector<pair<double, double> > vec;
  int flag = 0;
  for (int i = 1; i <= n; i++) {
    double dis = (c[i].o - p.o).dis();
    Point k = c[i].o - p.o;
    double r1 = c[i].r;
    double r2 = p.r;
    if (k.x * k.x + k.y * k.y <= r1 * r1) {
      flag = 1;
      break;
    }
    if (comp(r1 + r2 - dis) <= 0) continue;
    double rk = sqrt(dis * dis - r1 * r1);
    double ang = atan2(k.y, k.x);
    if (rk <= r2) {
      double a = asin(r1 / dis);
      double st = ang - a;
      double ed = ang + a;
      add(vec, st, ed);
      continue;
    }
    double a = acos((r2 * r2 + dis * dis - r1 * r1) / (2.0 * dis * r2));
    double st = ang - a;
    double ed = ang + a;
    add(vec, st, ed);
  }
  if (flag)
    puts("1.0");
  else {
    sort(vec.begin(), vec.end());
    double res = 0;
    double st = -PI;
    for (int i = 0; i < vec.size(); i++) {
      if (st < vec[i].first) st = vec[i].first;
      if (vec[i].second <= st) continue;
      res += vec[i].second - st;
      st = vec[i].second;
    }
    printf("%.4f\n", res / 2.0 / PI);
  }
  return 0;
}
