whiteOfSharingan; //System.out.println(miniCircleSemi); //沟玉球半径 sharinganSemi = miniCircleSemi+whiteOfSharingan; //System.out.println(sharinganSemi); //由于白球和mini小球都是在外圆上,所以通过弦对应的角度来求的小圆落后于白球的角度 angleOfWhiteMini = Math.asin(sharinganSemi/2/extendCircleSemi)*2; //System.out.println(angleOfWhiteMini); //沟玉球心到白球中心距离 distansOfWhiteShar = (whiteOfSharingan-miniCircleSemi)/2; //沟玉球心到中心点的距离 distansOfSharSemi = Math.sqrt( extendCircleSemi*extendCircleSemi -((whiteOfSharingan+miniCircleSemi)/2)*((whiteOfSharingan+miniCircleSemi)/2) +((whiteOfSharingan-miniCircleSemi)/2)*((whiteOfSharingan-miniCircleSemi)/2)); //沟玉球心和白求在中心圆上所成的角度 //通过这里可以可以求出由于计算机计算产生的计算误差为(0.02500260489936114) //System.out.println(distansOfSharSemi); angleOfwhiteShar = Math.asin(distansOfWhiteShar/2/distansOfSharSemi); //System.out.println(angleOfwhiteShar); if (angleCircle == 120) { flag = false; } }else { angleCircle += 2; //沟玉白球中的黑球半径 blackOfWhiteSemi = 240-angleCircle; //根据目前写轮眼沟玉球转过角度来确定mini小球目前的对应的半径 miniCircleSemi = (240.0-angleCircle)/120*whiteOfSharingan; //miniCircleSemi = (angleCircle+0.0)/120*whiteOfSharingan; //沟玉球半径 sharinganSemi = miniCircleSemi+whiteOfSharingan; //由于白球和mini小球都是在外圆上,所以通过弦对应的角度来求的小圆落后于白球的角度 angleOfWhiteMini = Math.asin(sharinganSemi/2/extendCircleSemi)*2; //沟玉球心到白球中心距离 distansOfWhiteShar = (whiteOfSharingan-miniCircleSemi)/2; //沟玉球心到中心点的距离 distansOfSharSemi = Math.sqrt( extendCircleSemi*extendCircleSemi -((whiteOfSharingan+miniCircleSemi)/2)*((whiteOfSharingan+miniCircleSemi)/2) +((whiteOfSharingan-miniCircleSemi)/2)*((whiteOfSharingan-miniCircleSemi)/2)); //沟玉球心和白求在中心圆上所成的角度 angleOfwhiteShar = Math.asin(distansOfWhiteShar/2/distansOfSharSemi); if (angleCircle == 240) { angleCircle = 0; flag = true; } } try { Thread.sleep(20); } catch (InterruptedException e) { e.printStackTrace(); } repaint(); } }; }.start(); } public static void main(String[] args) { new SharinganJFrame(); } }
|