คำอธิบายปัญหา
ให้จำนวนด้าน N และความยาวด้าน A ของรูปหลายเหลี่ยมปกติ หารัศมีและพื้นที่ของวงกลมล้อมรอบ (circumcircle)
สูตร
- รัศมี r = A / √(2(1 - cos(360°/N)))
- พื้นที่ = π × r²
การนำสูตรมาใช้
มุมกลาง = 360°/N
จากกฎโคไซน์: A² = r² + r² - 2r²cos(360°/N) = 2r²(1-cos(360°/N))
→ r = A / √(2(1-cos(360°/N)))
ตัวอย่าง
N=5, A=6 → r ≈ 5.10, Area ≈ 81.71
ตัวอย่างโค้ด C++
#include <bits/stdc++.h>
using namespace std;
void calcCircumcircle(float n, float a) {
// cos ใน C++ ใช้ radian ต้องแปลง
float angle = 360.0 / n;
float rad = angle * M_PI / 180.0;
float r = a / sqrt(2 * (1 - cos(rad)));
float area = M_PI * r * r;
cout << "Radius = " << r << endl;
cout << "Area = " << area << endl;
}
int main() {
float n = 5, a = 6;
calcCircumcircle(n, a);
return 0;
}
ผลลัพธ์
Radius = 5.1039 Area = 81.71
หมายเหตุ
- ฟังก์ชัน cos() ใน <cmath> ใช้ radian ต้องแปลงจากองศา
- M_PI 定義在 <cmath> (อาจต้อง define _USE_MATH_DEFINES ใน Windows)