[Excel関数]水平直円柱セグメントの体積や表面積を計算するHCYLSEGMENTカスタムワークシート関数群
説明
HCYLSEGMENTカスタムワークシート関数群は、水平直円柱セグメントの体積や表面積などを計算します。直円柱セグメントとは、直円柱を円に対して直角に分割した形状の立体です。水平直円柱セグメントとは、直円柱セグメントを横倒しにした立体です。缶ジュースを横に倒した際の、中のジュースの形と一致します。
HCYLSEGMENTカスタムワークシート関数群には、下記の関数が含まれます。ワークシート関数だけで(VBAを使用せずに)同じことをしたい場合はコチラの記事を参照して下さい。
関数名 | 機能 | 関数名の由来 |
---|---|---|
HCYLSEGMENTSUR | 水平直円柱セグメントの半径、高さ及び幅から、水平直円柱セグメントの表面積を計算します。 | Horizontal CYLindrical SEGMENT SURface area |
HCYLSEGMENTVOL | 水平直円柱セグメントの半径、高さ及び幅から、水平直円柱セグメントの体積を計算します。 | Horizontal CYLindrical SEGMENT VOLume |
動作例
計算式
項目 | 計算式 | 補足 |
---|---|---|
$$ 中心角(\theta) $$ | $$ \theta=2\cos^{-1} \left(1-\frac{h}{r} \right) $$ | |
$$ 円弧(a) $$ | $$ a=r\theta $$ | |
$$ 弦(c) $$ | $$ c=2\sqrt{h(2r-h)} $$ | |
$$ 表面積(S) $$ | $$ S= F1.A + F2.A + F3.A $$ | |
$$ 体積(V) $$ | $$ V=F1.A\cdot w $$ | |
$$ 側面の面積(F1.A) $$ | $$ F1.A=\frac{\theta}{2}r^{2}-(r-h)\sqrt{h(2r-h)} $$ | |
$$ 底面展開図の面積(F2.A) $$ | $$ F2.A=w \cdot a$$ | |
$$ 上面の面積(F3.A) $$ | $$ F3.A=w \cdot c$$ |
構文
関数名 | 第1引数 | 第2引数 | 第2引数 | 戻り値 |
---|---|---|---|---|
RCCYLINDERSUR | 半径 | 高さ | 幅 | 表面積 |
RCCYLINDERVOL | 半径 | 高さ | 幅 | 体積 |
引数 | 説明 | 引数の指定 | 既定値 |
---|---|---|---|
半径 | 水平直円柱セグメントの半径を数値で指定します。 | 必須 | (無し) |
高さ | 水平直円柱セグメントの高さを数値で指定します。 | 必須 | (無し) |
幅 | 水平直円柱セグメントの幅を数値で指定します。 | 必須 | (無し) |
コード
下記のコードを全てコピーし、標準モジュール等に貼り付けて下さい。下記のコード表示欄の右上に「Copy」ボタンがありますのでご使用下さい。なお、標準モジュールが何だか分からない方は、 Excelのカスタムワークシート関数を使用する方法 を参照して下さい。' [Excel関数]水平直円柱セグメントの体積や表面積を計算するHCYLSEGMENTカスタムワークシート関数群
' Copyright (c) 2020-2024 黒箱
' This software is released under the MIT License;.
' このソフトウェアはMITライセンスの下でリリースされています。
'* @fn Public Function HCYLSEGMENTSUR(ByVal r As Variant, ByVal h As Variant, ByVal w As Variant) As Variant
'* @brief 水平直円柱セグメントの半径、高さ及び幅から水平直円柱セグメントの表面積を求めます。
'* @param[in] r 水平直円柱セグメントの半径を指定します。
'* @param[in] h 水平直円柱セグメントの高さを指定します。
'* @param[in] w 水平直円柱セグメントの幅を指定します。
'* @return Variant 水平直円柱セグメントの表面積を返します。
'* @note 関数名の由来:Horizontal CYLindrical SEGMENT SURface area
'* @note 直円柱セグメントとは、直円柱を円に対して直角に分割した形状の立体です。
'* @note 水平直円柱セグメントとは、直円柱セグメントを横倒しにした立体です。
'* @note 缶ジュースを横に倒した際の、中のジュースの形と一致します。
Public Function HCYLSEGMENTSUR(ByVal r As Variant, ByVal h As Variant, ByVal w As Variant) As Variant
'中心角
Dim rad As Double
Dim cs As Double: cs = 1 - h / r
Select Case (cs)
Case 1: rad = 0
Case -1: rad = 6.28318530717959 '2Pi
Case Else: rad = 2 * (Atn(-cs / (-cs * cs + 1) ^ 0.5) + 1.5707963267949) '1.5707... = 2 * Atn(1)
End Select
'円弧
Dim a As Double: a = r * rad
'弦
Dim c As Double: c = 2 * (h * (2 * r - h)) ^ 0.5
'側面、底面及び上面の面積
Dim f1a As Double: f1a = rad / 2 * r ^ 2 - (r - h) * (h * (2 * r - h)) ^ 0.5
Dim f2a As Double: f2a = a * w
Dim f3a As Double: f3a = c * w
HCYLSEGMENTSUR = f1a + f2a + f3a
End Function
'* @fn Public Function HCYLSEGMENTVOL(ByVal r As Variant, ByVal h As Variant, ByVal w As Variant) As Variant
'* @brief 水平直円柱セグメントの半径、高さ及び幅から水平直円柱セグメントの体積を求めます。
'* @param[in] r 水平直円柱セグメントの半径を指定します。
'* @param[in] h 水平直円柱セグメントの高さを指定します。
'* @param[in] w 水平直円柱セグメントの幅を指定します。
'* @return Variant 水平直円柱セグメントの体積を返します。
'* @note 関数名の由来:Horizontal CYLindrical SEGMENT VOLume
'* @note 直円柱セグメントとは、直円柱を円に対して直角に分割した形状の立体です。
'* @note 水平直円柱セグメントとは、直円柱セグメントを横倒しにした立体です。
'* @note 缶ジュースを横に倒した際の、中のジュースの形と一致します。
Public Function HCYLSEGMENTVOL(ByVal r As Variant, ByVal h As Variant, ByVal w As Variant) As Variant
'中心角
Dim rad As Double
Dim cs As Double: cs = 1 - h / r
Select Case (cs)
Case 1: rad = 0
Case -1: rad = 6.28318530717959 '2Pi
Case Else: rad = 2 * (Atn(-cs / (-cs * cs + 1) ^ 0.5) + 1.5707963267949) '1.5707... = 2 * Atn(1)
End Select
Dim f1a As Double: f1a = rad / 2 * r ^ 2 - (r - h) * (h * (2 * r - h)) ^ 0.5
HCYLSEGMENTVOL = f1a * w
End Function
プログラムの利用について
本プログラムのライセンスは「The MIT License」を適用しています。
本プログラムは無償で利用できますが、本プログラム内の著作権表示及びライセンス表示は削除せずに表示しておいて下さい。
必須ではございませんが、本ホームページのプログラムを書籍またはホームページ等で一般公開したい方は、お問い合わせフォームよりご連絡頂けると幸いです。
スポンサーリンク
Excelカスタム関数MITライセンス,カスタムワークシート関数,幾何学,数学
Posted by 黒箱
この記事のトラックバックURL
スポンサーリンク
カテゴリー
スポンサーリンク
-
ホーム -
上へ
PAGE TOP
ディスカッション
コメント一覧
まだ、コメントがありません