import java.io.*;
import java.util.*;
import java.math.*;

public class move_aa_wrong {

	public static void main(String[] args) throws Throwable {
		new move_aa_wrong().run();
	}

	BufferedReader br;
	StringTokenizer st;
	PrintWriter out;
	boolean eof = false;
	Random rand = new Random(this.hashCode());

	public void run() throws Throwable {
		Locale.setDefault(Locale.US);
		br = new BufferedReader(new FileReader(FNAME + ".in"));
		out = new PrintWriter(FNAME + ".out");
		solve();
		out.close();
	}

	String nextToken() {
		while (st == null || !st.hasMoreTokens()) {
			try {
				st = new StringTokenizer(br.readLine());
			} catch (Exception e) {
				eof = true;
				return "0";
			}
		}
		return st.nextToken();
	}

	int nextInt() {
		return Integer.parseInt(nextToken());
	}

	void myAssert(boolean u, String message) {
		if (!u) {
			throw new Error("Assertion failed!!! " + message);
		}
	}

	int inBounds(int x, int l, int r, String name) {
		myAssert(l <= x && x <= r, name + " not in bounds: " + x + " not in ["
				+ l + ".." + r + "]");
		return x;
	}

	String FNAME = "move";

	int step = 100;

	private void solve() throws IOException {
		int x1 = inBounds(nextInt(), -1000, 1000, "x1");
		int y1 = inBounds(nextInt(), -1000, 1000, "y1");
		int x2 = inBounds(nextInt(), -1000, 1000, "x2");
		int y2 = inBounds(nextInt(), -1000, 1000, "y2");
		int x3 = inBounds(nextInt(), -1000, 1000, "x3");
		int y3 = inBounds(nextInt(), -1000, 1000, "y3");
		int xd = inBounds(nextInt(), -1000, 1000, "xd");
		int yd = inBounds(nextInt(), -1000, 1000, "yd");
		int v1 = inBounds(nextInt(), 1, 1000, "v1");
		int v2 = inBounds(nextInt(), 1, v1 - 1, "v1");
		if (inside(x1, y1, x2, y2, x3, y3, xd, yd)) {
			double ans = Double.POSITIVE_INFINITY;
			ans = Math.min(ans, getAns(x1, y1, x2, y2, xd, yd, v1, v2));
			ans = Math.min(ans, getAns(x1, y1, x3, y3, xd, yd, v1, v2));
			ans = Math.min(ans, dist(x1, y1, x2, y2) / v1
					+ getAns(x2, y2, x3, y3, xd, yd, v1, v2));
			ans = Math.min(ans, dist(x1, y1, x3, y3) / v1
					+ getAns(x3, y3, x2, y2, xd, yd, v1, v2));
			out.println(ans);
			return;
		}
		{
			long a1 = y2 - y1;
			long b1 = x1 - x2;
			long c1 = -a1 * x1 - b1 * y1;
			long a2 = y3 - y1;
			long b2 = x1 - x3;
			long c2 = -a2 * x1 - b2 * y1;
			long a3 = y3 - y2;
			long b3 = x2 - x3;
			long c3 = -a3 * x2 - b3 * y2;
			long s1 = a1 * xd + b1 * yd + c1;
			long s2 = a2 * xd + b2 * yd + c2;
			long s3 = a3 * xd + b3 * yd + c3;
			long s4 = a3 * x1 + b3 * y1 + c3;
			if (s3 * s4 > 0 || s1 * s2 >= 0) {
				out.println(dist(x1, y1, xd, yd) / v1);
				return;
			}
		}
		double ans = Double.POSITIVE_INFINITY;
		ans = Math.min(ans, getAns2(x1, y1, x2, y2, x3, y3, xd, yd, v1, v2));
		ans = Math.min(ans, getAns2(x1, y1, x3, y3, x2, y2, xd, yd, v1, v2));
		ans = Math.min(ans, getAns3(x1, y1, x2, y2, x3, y3, xd, yd, v1, v2));
		ans = Math.min(ans, (dist(x1, y1, x2, y2) + dist(x2, y2, xd, yd)) / v1);
		ans = Math.min(ans, (dist(x1, y1, x3, y3) + dist(x3, y3, xd, yd)) / v1);
		out.println(ans);
	}

	private double getAns3(double x1, double y1, int x2, int y2, int x3,
			int y3, int xd, int yd, int v1, int v2) {
		double l = 0;
		double r = 1;
		for (int i = 0; i < step; i++) {
			double ml = (2 * l + r) / 3;
			double mr = (l + 2 * r) / 3;
			double dl = dist(x1, y1, x2 + ml * (x3 - x2), y2 + ml * (y3 - y2))
					/ v2
					+ dist(xd, yd, x2 + ml * (x3 - x2), y2 + ml * (y3 - y2))
					/ v1;
			double dr = dist(x1, y1, x2 + mr * (x3 - x2), y2 + mr * (y3 - y2))
					/ v2
					+ dist(x1, y1, x2 + mr * (x3 - x2), y2 + mr * (y3 - y2))
					/ v1;
			if (dl < dr) {
				r = mr;
			} else {
				l = ml;
			}
		}
		return dist(x1, y1, x2 + l * (x3 - x2), y2 + l * (y3 - y2)) / v2
				+ dist(xd, yd, x2 + l * (x3 - x2), y2 + l * (y3 - y2)) / v1;
	}

	private double getAns2(int x1, int y1, int x2, int y2, int x3, int y3,
			int xd, int yd, int v1, int v2) {
		double l = 0;
		double r = 1;
		for (int i = 0; i < step; i++) {
			double ml = (2 * l + r) / 3;
			double mr = (l + 2 * r) / 3;
			double dl = 0;
			{
				double xl = x1 + (x2 - x1) * ml;
				double yl = y1 + (y2 - y1) * ml;
				dl = dist(x1, y1, xl, yl) / v1
						+ getAns3(xl, yl, x2, y2, x3, y3, xd, yd, v1, v2);
			}
			double dr = 0;
			{
				double xr = x1 + (x2 - x1) * mr;
				double yr = y1 + (y2 - y1) * mr;
				dr = dist(x1, y1, xr, yr) / v1
						+ getAns3(xr, yr, x2, y2, x3, y3, xd, yd, v1, v2);
			}
			if (dl < dr) {
				r = mr;
			} else {
				l = ml;
			}
		}
		double xl = x1 + (x2 - x1) * l;
		double yl = y1 + (y2 - y1) * l;
		double a = yd - yl;
		double b = xl - xd;
		double c = -a * xd - b * yd;
		double a1 = y3 - y2;
		double b1 = x2 - x3;
		double c1 = -a1 * x2 - b1 * y2;
		double x = -(c1 * b - b1 * c) / (a1 * b - b1 * a);
		double y = -(a1 * c - a1 * c) / (a1 * b - b1 * a);
		return dist(x1, y1, xl, yl) / v1 + dist(xl, yl, x, y) / v2
				+ dist(x, y, xd, yd) / v1;
	}

	private double getAns(int x1, int y1, int x2, int y2, int xd, int yd,
			int v1, int v2) {
		double l = 0;
		double r = 1;
		for (int i = 0; i < step; i++) {
			double ml = (2 * l + r) / 3;
			double mr = (l + 2 * r) / 3;
			double xl = x1 + (x2 - x1) * ml;
			double yl = y1 + (y2 - y1) * ml;
			double xr = x1 + (x2 - x1) * mr;
			double yr = y1 + (y2 - y1) * mr;
			double dl = dist(x1, y1, xl, yl) / v1 + dist(xl, yl, xd, yd) / v2;
			double dr = dist(x1, y1, xr, yr) / v1 + dist(xr, yr, xd, yd) / v2;
			if (dl < dr) {
				r = mr;
			} else {
				l = ml;
			}
		}
		double xl = x1 + (x2 - x1) * l;
		double yl = y1 + (y2 - y1) * l;
		return dist(x1, y1, xl, yl) / v1 + dist(xl, yl, xd, yd) / v2;
	}

	private double dist(double x1, double y1, double x2, double y2) {
		return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
	}

	private boolean inside(int x1, int y1, int x2, int y2, int x3, int y3,
			int xd, int yd) {
		return Math.abs(x1 * y2 - x1 * y3 + x2 * y3 - x2 * y1 + x3 * y1 - x3
				* y2) == Math.abs(xd * y2 - xd * y3 + x2 * y3 - x2 * yd + x3
				* yd - x3 * y2)
				+ Math.abs(x1 * yd - x1 * y3 + xd * y3 - xd * y1 + x3 * y1 - x3
						* yd)
				+ Math.abs(x1 * y2 - x1 * yd + x2 * yd - x2 * y1 + xd * y1 - xd
						* y2);
	}

}
