#include <bits/stdc++.h>
using namespace std;
const double INF = 1e100;
const double EPS = 1e-12;
const long long INFL = LLONG_MAX;
const long double pi = acos(-1);
struct PT {
  double x, y;
  PT() {}
  PT(double x, double y) : x(x), y(y) {}
  PT(const PT &p) : x(p.x), y(p.y) {}
  PT operator+(const PT &p) const { return PT(x + p.x, y + p.y); }
  PT operator-(const PT &p) const { return PT(x - p.x, y - p.y); }
  PT operator*(double c) const { return PT(x * c, y * c); }
  PT operator/(double c) const { return PT(x / c, y / c); }
};
double dot(PT p, PT q) { return p.x * q.x + p.y * q.y; }
double dist2(PT p, PT q) { return dot(p - q, p - q); }
double cross(PT p, PT q) { return p.x * q.y - p.y * q.x; }
ostream &operator<<(ostream &os, const PT &p) {
  os << "(" << p.x << "," << p.y << ")";
  return os;
}
PT ProjectPointLine(PT a, PT b, PT c) {
  return a + (b - a) * dot(c - a, b - a) / dot(b - a, b - a);
}
int main() {
  ios_base::sync_with_stdio(0);
  cout.precision(15);
  cout << fixed;
  cout.tie(0);
  cin.tie(0);
  double x1, y1, x2, y2;
  cin >> x1 >> y1 >> x2 >> y2;
  const PT origin = PT(x1, y1);
  const PT goal = PT(x2, y2);
  double v_max, T;
  cin >> v_max >> T;
  double vx, vy, wx, wy;
  cin >> vx >> vy >> wx >> wy;
  const PT wind1 = PT(vx, vy);
  const PT wind2 = PT(wx, wy);
  double answer = 1e30;
  double notanswer = 0;
  for (int(iidejedked) = 0, j123 = 300; (iidejedked) < j123; (iidejedked)++) {
    double m = (answer + notanswer) / 2;
    double first = min(T, m);
    double second = max(0.0, m - T);
    PT movedOrigin = origin + (wind1 * first) + (wind2 * second);
    double curdist = sqrt(dist2(movedOrigin, goal));
    if (curdist <= m * v_max)
      answer = m;
    else
      notanswer = m;
  }
  assert(answer < 1e20);
  cout << answer << '\n';
}
