问题:已知大圆R与两小圆R1,R2内切,且两小圆R1,R2外切。
并已知大圆R的半径r0、圆心坐标x0,y0,小圆R1的半径r1、圆心坐标x1,y1,以及小圆R2半径r2。求R2圆心坐标。即已知r0,x0,y0,r1,x1,y1,r2,
列方程组
(x0-x2)*(x0-x2)+(y0-y2)*(y0-y2)=(r0-r2)*(r0-r2)
(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)=(r1+r2)*(r1+r2)求x2,y2.求代码...
并已知大圆R的半径r0、圆心坐标x0,y0,小圆R1的半径r1、圆心坐标x1,y1,以及小圆R2半径r2。求R2圆心坐标。即已知r0,x0,y0,r1,x1,y1,r2,
列方程组
(x0-x2)*(x0-x2)+(y0-y2)*(y0-y2)=(r0-r2)*(r0-r2)
(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)=(r1+r2)*(r1+r2)求x2,y2.求代码...
解决方案 »
- 关于清除缓存的理解
- java--图片与声音
- JAVA编程求助
- 问一个java 计算问题
- 求高手细心 解释 9行代码~~~1234随即不重复排列
- 一个老问题 关于多级的级联菜单--求救 (struts+JSP)急!!!!!!分不够再加!!!
- java如何实现:获得远程客户端的MAC ADDRESS?
- 准备开始学java,求推荐
- 请问各位牛人,有高分哦!在线等待...............
- 急!!请问如何将输入的INT或LONG型的数据按位(十进制)数输出,日期型按照如1988年12月12日 3点50分输出???
- 最基础的自定义泛型方法,请教。
- 100分 求一个Struts的 查询例子 (简单点的)
(x0-x2)*(x0-x2)+(y0-y2)*(y0-y2)=(r0-r2)*(r0-r2)
笔算,怎么算的,你函数就怎么写,很简单的啊
直接在里面画图,结果就出来了
可能是语法上的错误,偶是java新手...
望高手解惑。
import static java.lang.Math.*;public class Account {
private double x2=0;
private double y2=0;
public static void main(String[] args) {
double x0 = 512;
double y0 = 384;
double x1 = 512;
double y1 = 284;
double r0 = 300;
double r1 = 100;
double r2 = 50;
Account Third = new Account(x0,y0,x1,y1,r0,r1,r2);
System.out.println(Third.getX()+","+Third.getY());
}
public Account(double x0,double y0,double x1,double y1,double r0,double r1,double r2){
double[] x=new double[10000];
double[] y=new double[10000];
double[] j=new double[10000];
double resultX=0;
double resultY=0;
x[0]=1;
y[0]=1; for(int i=0;i<j.length;i++){
j[i]=4*((x[i]-x0)*(y[i]-y1)-(x[i]-x1)*(y[i]-y0));
if(j[i]!=0) {
x[i+1]=x[i]+2*((y[i]-y0)*f2(x[i],y[i],x1,y1,r0,r1)-(y[i]-y1)*f1(x[i],y[i],x0,y0,r0,r2))/j[i];
y[i+1]=y[i]+2*((x[i]-x1)*f1(x[i],y[i],x0,y0,r0,r2)-(x[i]-x0)*f2(x[i],y[i],x1,y1,r0,r1))/j[i];
resultX=abs(x[i+1]-x[i]);
resultY=abs(y[i+1]-y[i]);
}
else {
System.err.print("错误!");
}
if(max(resultX,resultY)<0.1){
double x2=x[i+1];
double y2=y[i+1];
break;
}
}
}
public double getX(){
return x2;
}
public double getY(){
return y2;
}
double f1(double x,double y,double x0,double y0,double r0,double r2){
double result1=(x-x0)*(x-x0)+(y-y0)*(y-y0)-(r0-r2)*(r0-r2);
return result1;
}
double f2(double x,double y,double x1,double y1,double r0,double r1){
double result2=(x-x1)*(x-x1)+(y-y1)*(y-y1)-(r0+r1)*(r0+r1);
return result2;
}
}