#include<bits/stdc++.h>
#define pair_double pair<double,double>
using namespace std;
double a_x,a_y,b_x,b_y;
double c_x,c_y,d_x,d_y;
double p,q,r;
double abs_(double num){
if(num>=0) return num;
else return -num;
}
pair_double mid(double a_x,double a_y,double b_x,double b_y,double x,double y){
pair_double ret;
ret.first=((y-x)*a_x+x*b_x)/y;
ret.second=((y-x)*a_y+x*b_y)/y;
return ret;
}
double pow_(double num){
return num*num;
}
double length(double a_x,double a_y,double b_x,double b_y){
double x_=a_x-b_x;
double y_=a_y-b_y;
return sqrt(pow_(x_)+pow_(y_));
}
double sanfen2(double e_x,double e_y,double c_x,double c_y,double d_x,double d_y){
double ans=1e7;
while(abs(c_x-d_x)>1e-5||abs(c_y-d_y)>1e-5){
pair_double ret1=mid(c_x,c_y,d_x,d_y,1,2);
pair_double ret2=mid(c_x,c_y,d_x,d_y,1,3);
pair_double ret3=mid(c_x,c_y,d_x,d_y,2,3);
double f_x=ret2.first;
double f_y=ret2.second;
double f_ans=length(f_x,f_y,d_x,d_y)/q+length(f_x,f_y,e_x,e_y)/r;
double g_x=ret3.first;
double g_y=ret3.second;
double g_ans=length(g_x,g_y,d_x,d_y)/q+length(g_x,g_y,e_x,e_y)/r;
double h_x=ret1.first;
double h_y=ret1.second;
if(f_ans<g_ans){
d_x=h_x;
d_y=h_y;
}
else{
c_x=h_x;
c_y=h_y;
}
ans=min(ans,min(f_ans,g_ans));
}
return ans;
}
double sanfen1(double a_x,double a_y,double b_x,double b_y){
double final=1e7;
while(abs_(a_x-a_y)>1e-5||abs_(b_x-b_y)>1e-5){
pair_double ret1=mid(a_x,a_y,b_x,b_y,1,2);
pair_double ret2=mid(a_x,a_y,b_x,b_y,1,3);
pair_double ret3=mid(a_x,a_y,b_x,b_y,2,3);
double f_x=ret2.first;
double f_y=ret2.second;
double g_x=ret3.first;
double g_y=ret3.second;
double f_ans=length(f_x,f_y,a_x,a_y)/p+sanfen2(f_x,f_y,c_x,c_y,d_x,d_y);
double g_ans=length(g_x,g_y,a_x,a_y)/p+sanfen2(g_x,g_y,c_x,c_y,d_x,d_y);
double h_x=ret1.first;
double h_y=ret1.second;
if(f_ans<g_ans){
b_x=h_x;
b_y=h_y;
}
else{
a_x=h_x;
a_y=h_y;
}
final=min(final,min(f_ans,g_ans));
}
return final;
}
int main(){
cin>>a_x>>a_y>>b_x>>b_y;
cin>>c_x>>c_y>>d_x>>d_y;
cin>>p>>q>>r;
printf("%.2lf",sanfen1(a_x,a_y,b_x,b_y));
return 0;
}
提交记录