我有一个圆弧段和一些有关它所属圆的信息。
提供信息:
我需要计算JavaScript中圆弧段的 area
。但这还应取决于地球的半径(例如great-circle distance)。
我不知道该怎么做,也找不到任何算法。
感谢帮助
答案 0 :(得分:1)
geeksforgeeks.org上有关于此问题的出色教程。
我已经翻译了他们的JavaScript代码,因为他们没有该语言的代码,而您在问题中标记了它:
//Code ported from: https://www.geeksforgeeks.org/program-find-area-circular-segment/
function AreaOfSegment(radius, angle) {
// Calculating area of sector
var areaOfSector = Math.PI * (radius * radius) *
(angle / 360);
// Calculating area of triangle
var areaOfTriangle = 0.5 * (radius * radius)
* Math.sin((angle * Math.PI) / 180);
return areaOfSector - areaOfTriangle;
}
//TEST
var radiusLabel = document.body.appendChild(document.createElement("label"));
radiusLabel.textContent = "Radius: ";
var radiusInput = radiusLabel.appendChild(document.createElement("input"));
radiusInput.type = "number";
radiusInput.step = "any";
radiusInput.min = "0";
radiusInput.value = "6371008.0";
var angleLabel = document.body.appendChild(document.createElement("label"));
angleLabel.textContent = "Angle: ";
var angleInput = angleLabel.appendChild(document.createElement("input"));
angleInput.type = "number";
angleInput.step = "any";
angleInput.min = "0";
angleInput.max = "360";
angleInput.value = "90";
var output = document.body.appendChild(document.createElement("p"));
function compute() {
var radius = parseFloat(radiusInput.value);
var angle = parseFloat(angleInput.value);
output.textContent = 'Area is: ' + AreaOfSegment(radius, angle).toString();
}
compute();
["change", "keyup", "mouseup"].forEach(function (evt) {
angleInput.addEventListener(evt, compute);
radiusInput.addEventListener(evt, compute);
});