用割圆法求圆的面积
思路如下:就是将一个圆看作是由无数个矩形组成的不规则图形,通过这种思路则可以将圆的面积近似为这些矩形的面积相加,因为每一个分割都只是逼近圆的面积而不是等于圆,但是是要分割的越小则面积越接近,所以分割的份数越多则面积越接近真实面积;
代码实现如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
html,
body {
width: 100%;
height: 100%;
}
form {
margin: 100px auto;
width: 300px;
height: 300px;
display: block;
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
line-height: 40px;
position: relative;
}
span {
display: block;
height: 30px;
width: 120px;
float: left;
}
input {
height: 30px;
width: 150px;
}
div {
width: 300px;
height: 40px;
display: flex;
}
button{
position: absolute;
left: 0px;
top: 300px;
width: 60px;
}
</style>
</head>
<body>
<form action="##">
<div>圆的半径:<input type="text"></div>
<div> 圆的精度:<input type="text"></div>
<div>得到结果:<textarea name="" id="" cols="20" rows="10" style="height: 100px;"></textarea></div>
<button>输出</button>
</form>
</body>
<script type="text/javascript">
function Round(radius, acc) {
this.radius = radius; //圆的半径
this.acc = acc; //圆的精度,即for循环次数
}
Round.prototype.area = function () {
let area = 0; //分割的每一份长方形的面积和
let acc = this.acc; //循环次数
let radius = this.radius; //圆的半径
let width = radius / acc; //切割的每一份的宽度
for (var i = 1; i <= acc; i++) { //循环
//通过勾股定理求分割的每一份的长方形的高度
let height = Math.sqrt(Math.pow(radius, 2) - Math.pow((radius - width * i), 2));
area += height * width; //将每个长方形的面积相加,得到四分之一圆的面积
}
area = area * 4; //圆的总面积
let pi = area / Math.pow(radius, 2); //由圆的面积公式求pi值
return `面积是${area},pi值是${pi}`; //返回字符串输出
}
//在网页输出
var r = Number(document.querySelectorAll('div>input')[0].value);
var a = Number(document.querySelectorAll('div>input')[1].value);
document.querySelectorAll('div>input')[0].onblur = function () {
r = Number(document.querySelectorAll('div>input')[0].value);
}
document.querySelectorAll('div>input')[1].onblur = function () {
a = Number(document.querySelectorAll('div>input')[1].value);
}
document.querySelector('button').onclick = function () {
let round = new Round(r, a);
let area = round.area(); //调用函数
document.querySelector('textarea').value = area;
}
</script>
</html>
实现如图: