import java.util.Scanner;
import java.text.DecimalFormat;
public class HitRingCalculator {
public static double calculateHitRing(double x, double y) {
double distanceFromCenter = Math.sqrt(x * x + y * y); // 到中心的距离
System.out.println("击中位置 (" + x + ", " + y + ") :: " + distanceFromCenter+"毫米");
// 计算激光在电子靶上命中的环数
// if (x < 0.25 && y < 0.25) {
// double offset = 0.25 - x;
// double extraRings = Math.round(offset / 0.025) / 10.0; // 计算多出来的环数
// System.out.println("击中位置 (" + x + ", " + y + ") 对应的环数是:: " +(10.0 + extraRings)+" 环");
// return 10.0 + extraRings;
// }
if (distanceFromCenter<0.25) {
double offset = 0.25 - distanceFromCenter;
double extraRings = Math.round(offset / 0.027) / 10.0; // 计算多出来的环数
System.out.println("击中位置 (" + x + ", " + y + ") 大于10环数是:: " +extraRings+" 环");
System.out.println("击中位置 (" + x + ", " + y + ") 对应的环数是:: " +(10.0 + extraRings)+" 环");
return 10.0 + extraRings;
}
// double[] radii = {0.25, 2.75, 5.25, 7.75, 10.25, 12.75, 15.25, 17.75, 20.25, 22.75};
// double hitRing = 1.0;
// for (int i = 0; i < radii.length; i++) {
// if (distanceFromCenter <= radii[i]) {
// hitRing = 10.0 - i;
// if(distanceFromCenter==radii[i]){
// System.out.println("击中位置 (" + x + ", " + y + ") 对应的原始环数是: " + hitRing + " 环");
// return hitRing;
// }
// break;
// }
// }
// int currentNum=0;
// double hitRing = 10;
// double[] allarr={0.5,0.75,1.0,1.25,1.5,1.75,2.0,2.25,2.5,2.75,3.0,3.25,3.5,3.75,4.0,4.25,4.5,4.75,5.0,5.25,5.5,5.75,6.0,6.25,6.5,6.75,7.0,7.25,7.5,7.75,8.0,8.25,8.5,8.75,9.0,9.25,9.5,9.75,10.0,10.25,10.5,10.75,11.0,11.25,11.5,11.75,12.0,12.25,12.5,12.75,13.0,13.25,13.5,13.75,14.0,14.25,14.5,14.75,15.0,15.25,15.5,15.75,16.0,16.25,16.5,16.75,17.0,17.25,17.5,17.75,18.0,18.25,18.5,18.75,19.0,19.25,19.5,19.75,20.0,20.25,20.5,20.75,21.0,21.25,21.5,21.75,22.0,22.25,22.5,22.75};
// for (int i = 0; i < allarr.length; i++) {
// if (distanceFromCenter >= allarr[i]) {
// }
// else
// {
// currentNum=i;
// break;
// }
// }
// double a= allarr[currentNum]-distanceFromCenter;
// double b=distanceFromCenter-allarr[currentNum-1];
// if(a>b){
// for (int i = 1; i <= (currentNum-1); i++) {
// hitRing=hitRing-0.1;
// }
// }
// else
// {
// for (int i = 1; i <= currentNum; i++) {
// hitRing=hitRing-0.1;
// }
// }
// 计算激光命中环数的增量,基于环之间的距离(5毫米)
double ringInterval = 2.5; // 环之间的距离为5毫米
//distanceFromCenter = distanceFromCenter/10; // 到中心的距离
// 计算激光击中的环数
double hitRing = 10.0 - (distanceFromCenter / ringInterval); // 按照距离计算击中环数,允许小数环
System.out.println("击中位置 (" + x + ", " + y + ") 对应的原始环数是: " + hitRing + " 环");
// double distanceRatio = (distanceFromCenter - currentRadius) / ringInterval; // 距离比例
// double increment = distanceRatio * 0.00001; // 按比例计算增量
// hitRing += increment; // 更新命中环数
// 计算精确到0.1环
// double increment = (radii[(int)(hitRing - 1)] - distanceFromCenter) / 100;
// hitRing += increment;
DecimalFormat df = new DecimalFormat("#.##");
String formattedRing = df.format(hitRing);
double roundedRing = Double.parseDouble(formattedRing);
roundedRing = Math.round(roundedRing * 10.0) / 10.0;
System.out.println("击中位置 (" + x + ", " + y + ") 对应的环数是:: " + roundedRing+"环");
// System.out.println("击中位置 (" + x + ", " + y + ") 对应的完整环数是:: " + hitRing+"环");
return hitRing;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("模拟击中位置x坐标: ");
double x = scanner.nextDouble();
System.out.print("模拟击中位置y坐标: ");
double y = scanner.nextDouble();
calculateHitRing(x,y);
scanner.close();
}
}