#include <stdio.h>
#include <math.h>
// 计算六边形的面积
double hex_area(double X) {
return (3 * sqrt(3) / 2) * X
* X
; }
// 计算总投影面积 A(N, Y, Z)
double compute_projection_area(double N, double Y, double Z) {
// 计算 X
double X = (1 - N * Y) / (2 * N);
// 计算六边形的中心间距
double dx = 2 * X + Y;
double dy
= (sqrt(3) / 2) * dx
;
// 计算单个六边形的面积
double A_hex = hex_area(X);
// 计算可容纳的六边形数量
double Mx
= floor(Z
/ dx
) + 1; // 水平方向六边形数 double My
= floor(Z
/ dy
) + 1; // 竖直方向六边形数
// 计算六边形贡献因子
double gx = fmin(1, Z / dx);
double gy = fmin(1, Z / dy);
// 计算最终投影面积
double A_total = Mx * My * gx * gy * A_hex;
return A_total;
}
int main() {
double N, Y, Z;
// 用户输入
// 计算投影面积
double result = compute_projection_area(N, Y, Z);
// 输出结果
printf("六边形在 %.2lf x %.2lf 正方形上的投影面积: %.6lf\n", Z
, Z
, result
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CgovLyDorqHnrpflha3ovrnlvaLnmoTpnaLnp68KZG91YmxlIGhleF9hcmVhKGRvdWJsZSBYKSB7CiAgICByZXR1cm4gKDMgKiBzcXJ0KDMpIC8gMikgKiBYICogWDsKfQoKLy8g6K6h566X5oC75oqV5b2x6Z2i56evIEEoTiwgWSwgWikKZG91YmxlIGNvbXB1dGVfcHJvamVjdGlvbl9hcmVhKGRvdWJsZSBOLCBkb3VibGUgWSwgZG91YmxlIFopIHsKICAgIC8vIOiuoeeulyBYCiAgICBkb3VibGUgWCA9ICgxIC0gTiAqIFkpIC8gKDIgKiBOKTsKCiAgICAvLyDorqHnrpflha3ovrnlvaLnmoTkuK3lv4Ppl7Tot50KICAgIGRvdWJsZSBkeCA9IDIgKiBYICsgWTsKICAgIGRvdWJsZSBkeSA9IChzcXJ0KDMpIC8gMikgKiBkeDsKCiAgICAvLyDorqHnrpfljZXkuKrlha3ovrnlvaLnmoTpnaLnp68KICAgIGRvdWJsZSBBX2hleCA9IGhleF9hcmVhKFgpOwoKICAgIC8vIOiuoeeul+WPr+Wuuee6s+eahOWFrei+ueW9ouaVsOmHjwogICAgZG91YmxlIE14ID0gZmxvb3IoWiAvIGR4KSArIDE7ICAvLyDmsLTlubPmlrnlkJHlha3ovrnlvaLmlbAKICAgIGRvdWJsZSBNeSA9IGZsb29yKFogLyBkeSkgKyAxOyAgLy8g56uW55u05pa55ZCR5YWt6L655b2i5pWwCgogICAgLy8g6K6h566X5YWt6L655b2i6LSh54yu5Zug5a2QCiAgICBkb3VibGUgZ3ggPSBmbWluKDEsIFogLyBkeCk7CiAgICBkb3VibGUgZ3kgPSBmbWluKDEsIFogLyBkeSk7CgogICAgLy8g6K6h566X5pyA57uI5oqV5b2x6Z2i56evCiAgICBkb3VibGUgQV90b3RhbCA9IE14ICogTXkgKiBneCAqIGd5ICogQV9oZXg7CiAgICByZXR1cm4gQV90b3RhbDsKfQoKaW50IG1haW4oKSB7CiAgICBkb3VibGUgTiwgWSwgWjsKCiAgICAvLyDnlKjmiLfovpPlhaUKICAgIHByaW50Zigi6L6T5YWlIE46ICIpOwogICAgc2NhbmYoIiVsZiIsICZOKTsKICAgIHByaW50Zigi6L6T5YWlIFk6ICIpOwogICAgc2NhbmYoIiVsZiIsICZZKTsKICAgIHByaW50Zigi6L6T5YWlIFo6ICIpOwogICAgc2NhbmYoIiVsZiIsICZaKTsKCiAgICAvLyDorqHnrpfmipXlvbHpnaLnp68KICAgIGRvdWJsZSByZXN1bHQgPSBjb21wdXRlX3Byb2plY3Rpb25fYXJlYShOLCBZLCBaKTsKICAgIAogICAgLy8g6L6T5Ye657uT5p6cCiAgICBwcmludGYoIuWFrei+ueW9ouWcqCAlLjJsZiB4ICUuMmxmIOato+aWueW9ouS4iueahOaKleW9semdouenrzogJS42bGZcbiIsIFosIFosIHJlc3VsdCk7CiAgICAKICAgIHJldHVybiAwOwp9Cg==