📄 shrink1.java
字号:
public class shrink1{
public static double[] shrink1(double[] vmedian, double[] vrep, double vper/*centage*/){
double x1=vmedian[0], y1=vmedian[1];
double x2=vrep[0], y2=vrep[1], r=Math.sqrt( (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) ), per=vper;
double a1=y1-y2, b1=x2-x1, c1=-( ((y1-y2)*x1) + ((x2-x1)*y1) );
double a=( (a1*a1) + (b1*b1) )/(b1*b1);
double b=(-2*x1)+(2*y1*(a1/b1))+( (2*a1*c1)/(b1*b1) );
double c=(x1*x1) + ( (c1*c1)/(b1*b1) ) + (y1*y1) + (2*c1*y1/b1) - (r*r*per*per);
double resx1,resx2;
resx1=( (-b)+Math.sqrt( (b*b)-(4*a*c) ) ) / (2*a);
resx2=( (-b)-Math.sqrt( (b*b)-(4*a*c) ) ) / (2*a);
double resy1, resy2;
resy1=(-c1/b1)- (a1*resx1/b1);
resy2=(-c1/b1)- (a1*resx2/b1);
System.out.println("given median is:(" + x1 +"," + y1+")" );
System.out.println("given 2nd point is:(" + x2 +"," + y2+")" );
System.out.println("shrinked points r:(" + resx1 +"," + resy1+")" );
System.out.println("shrinked points r:(" + resx2 +"," + resy2+")" );
double[] res=new double[2];
if( (x1<=resx1 && x2>=resx1) || (x1>=resx1 && x2<=resx1) ) { res[0]=resx1; res[1]=resy1; }
else if( (x1<=resx2 && x2>=resx2) || (x1>=resx2 && x2<=resx2) ){ res[0]=resx2; res[1]=resy2; }
System.out.println("final shrinked point is:(" + res[0] +"," + res[1] +")" );
return res;
}
/* public static void main(String[] args){
double a1[]={20,20}, a2[]={10,10};
shrink1.shrink1( a1, a2, 0.75);
}*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -