问题:已知大圆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.求代码...
解决方案 »
- SAX解析XML,与内存无关吗?
- 正则表达式问题请教
- short s1 = 1; s1 = s1 + 1;问题
- 在 JSP 里可以直接调用的 String(A,B) 型构造函数(转换字符编码用的)在 .java 普通程序里该如何调用?
- java 简单的测试出现的奇怪问题
- 100分求助:编写RMI分布式应用系统 非常急!请各位高手帮帮忙,不甚感激~~~~~~
- 求一最快算法查找并移除字符串中得特定字符
- 高分请教? 大家在JAVA中怎么做拓扑图?
- 怎么使用java生成一个包含table表格的图片,table里面的文字动态传入,要居中对齐,求思路,求方法
- maven引入这个插件一直报错
- 最基础的自定义泛型方法,请教。
- 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;
}
}