계산: http://k10206.oranc.co.kr/zb5/?sid=147
피라미드 비율 공식
밑변 / 높이 = π / 2
밑변 = 높이 x π / 2
높이 = 2 x 밑변 / π
옆면의 높이 = √((밑변 / 2) ^ 2 + 높이 ^ 2)
옆면의 모서리 = √((밑변 / 2) ^ 2 + 옆면의 높이 ^ 2))
옆면의 각도 = 아크탄젠트{옆면의 높이 / (밑변 / 2)}
방바닥 면적 = 밑바닥 면적 / 2
밑바닥 대각선 길이 = 밑변√2
방바닥 대각선 길이 = 밑변 길이
방변 길이 = 밑바닥 대각선 길이 / 2
방의 높이 = 방변 * 2 / π
밑바닥에서 방바닥의 높이 = 높이 - 방의 높이
각도 = 아크탄젠트{높이 / (밑변 / 2)}
소스보기
<?
foreach ($_REQUEST as $key => $VALUE) {
$$key = $VALUE;
}
?>
<form method=post>
밑변: <input type="text" name="width" value="<?=$width?>"> <input type="submit" value="입력">
</form>
<?
//피라미드
//밑변
if ($width) $var = pyramid($width);
function pyramid($b) {
//높이 = 밑변 * 2 / π
$var[h] = $b * 2 / pi();
//옆면의 높이 = √{(밑변 / 2)^2 + 높이^2}
$var[sh] = $var[h] * sqrt((pow(pi(), 2) + 16) / 16);
//옆면의 모서리 = √{(밑변 / 2)^2 + 옆면의 높이^2}
$var[ss] = $var[h] * sqrt((pow(pi(), 2) + 8) / 8);
//방바닥 면적 = 밑바닥 면적 / 2
$var[rm] = pow($b, 2) / 2;
//밑바닥 대각선 길이 = 밑변 * √2
$var[pd] = $b * sqrt(2);
//방바닥 대각선 길이 = 밑변
$var[rd] = $b;
//방변 = 밑바닥 대각선 길이 / 2
$var[rb] = $var[pd] / 2;
//방의 높이 = 방변 * 2 / π
$var[rh] = $var[rb] * 2 / pi();
//밑바닥에서 방바닥의 높이 = 높이 - 방의 높이
$var[prh] = $var[h] - $var[rh];
return $var;
}
//옆면의 각도 = 아크탄젠트{옆면의 높이 / (밑변 / 2)}
$var[sdeg] = rad2deg(atan(sqrt((pow(pi(), 2) + 16) / pow(pi(), 2))));
//각도 = 아크탄젠트{높이 / (밑변 / 2)}
$var[deg] = rad2deg(atan(4 / pi()));
echo "
<table>
<tr><td>밑변:</td> <td>".$width."</td></tr>
<tr><td>높이:</td> <td>".$var[h]."</td></tr>
<tr><td>한 면의 높이:</td> <td>".$var[sh]."</td></tr>
<tr><td>한 면의 모서리:</td> <td>".$var[ss]."</td></tr>
<tr><td>한 면의 각도 :</td> <td>".$var[sdeg]."°</td></tr>
<tr><td>방바닥 면적:</td> <td>".$var[rm]."</td></tr>
<tr><td>밑바닥 대각선 길이:</td> <td>".$var[pd]."</td></tr>
<tr><td>방바닥 대각선 길이:</td> <td>".$var[rd]."</td></tr>
<tr><td>방변:</td> <td>".$var[rb]."</td></tr>
<tr><td>방의 높이:</td> <td>".$var[rh]."</td></tr>
<tr><td>밑바닥에서 방바닥의 높이:</td> <td>".$var[prh]."</td></tr>
<tr><td>각도:</td> <td>".$var[deg]."°</td></tr>
</table>
";
?>