FreeBASIC マニュアルのトップに戻る

FreeBASIC TutMathIntroTrig

目次→教本→いっしょに学ぼうA Brief Introduction To Trigonometry←オリジナル・サイト

三角法への簡潔な序論 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る

このチュートリアルの目次:

三角法は、三角形の研究です。
三角法について、いろいろ書かれたものがありますが、このチュートリアルで十分でしょう。
三角法は、限られた用途でしか役立たない、と思われるかもしれませんが、 現実や仮想世界の問題で、三角形の創造的なアプリケーションで、解決されることが、たくさんあります。

三角形は、三つの辺を持っていて、それらの辺は、'普通の' 空間 (すなわち、ユークリッド空間)で、3つの角を構成します。その角度の合計は、180度(または、Pi ラジアン)になります。
このチュートリアルでは、'正常な'三角形だけを取り扱います。(他の空間に興味を持っている方々は、非ユークリッド三角形や、非ユークリッド幾何学を、探して下さい。)


直角三角形

初めに、私たちは、直角三角形と呼ばれる、特別なクラスの三角形を、取り上げます。
直角三角形は、一つの角の角度が90度の、三角形です。
三角形の角度の合計は、ちょうど180度でなければなりません。このため、三角形には、90度の角は、1つしかなくて、それは直角三角形で最も大きい角です。
下は、直角三角形の画像を描く、FreeBASIC のコードです。
(チュートリアルの中で、この画像を参照します。)
この画像で、大文字は辺を示しています。そして、これらに対応する小文字は、辺の反対の角を示します。
例えば、角 y は、辺 Y の反対側の角です。

ScreenRes 640,480,8

'三角形
Color 7
Line (220,140) - (220,340)
Line (220,140) - (420,340)
Line (220,340) - (420,340)

'直角
Color 12
Line (220,320) - (240,320)
Line (240,320) - (240,340)

'角
Color 13
Locate 20,29
Print "x"
Locate 42,50
Print "y"

'辺
Color 14
Locate 31,43
Print "Z"
Locate 31, 26
Print "Y"
Locate 45, 40
Print "X"

Sleep


左下の角の小さい四角は、その角が、直角(90度)であることを意味します。
その角の反対側の辺(辺 Z)は、斜辺と呼ばれて、直角三角形の最も長い辺です。


ピタゴラスの定理

ほとんどの人が、最初に学ぶ三角法は、ピタゴラスの定理として一般的に知られている関係です。
それは、直角三角形の斜辺の長さ二乗が、他の2つの辺の長さの二乗の和と等しい、というものです。
方程式で見ると、より簡単です。

Z^2 = X^2 + Y^2

以下は、この定理の簡単な応用例です。
プレーヤー1は、印をつけた場所(起点)の 100メートル真東で、プレーヤー2は、同じ起点の真北 150メートルであれば、プレーヤー1 と 2は、どれくらい離れていますか?

D = SQR (100^2 + 150^2)


三角関数

昔、人々は、三角形の大きさにかかわらず、ある比率がいつも同じであることを、発見しました。
例えば、上の三角形の画像で、三角形の大きさにかかわらず、比率 Y/X は、角 y の角度が45度であれば、いつも同じになります。
これらの比率の収集が、三角関数です。

3つの主要な関数が、正弦(SIN)と、余弦(COS)と、正接(TAN)です。
これらの3つの関数を定義する、多くの異なった方法があります。
1つの方法は、直角三角形の辺の間の関係を使います。

多くの人々は、記憶を助ける工夫 SOHCAHTOA で、これらの関係を覚えています。(発音は、Sow Cah Toe-a)。 これは、もちろん以下の頭文字です。
SIN = opposite/hypotenuse (対辺/斜辺)
COS = adjacent/hypotenuse (隣辺/斜辺)
TAN = opposite/adjacent (対辺/隣辺)

FreeBASIC には、これらの三角関数と、他の関数があります。

注:直角三角形の辺の名称
http://www4.osk.3web.ne.jp/~moroko/basem/trigo/torigo.html


三角関数を適用

再び、上の三角形の画像を参照して、プレーヤー1が、角 y の近くの点の地面にいて、プレーヤー2が、角 x (地面から離れている)の近くの点にいるとします。
プレーヤー1が、辺 Y からどれだけ離れている(25.2 メートル)か、角 y の値(31.5度)を知って、どれくらい遠くに、地面はプレーヤー2ですか?
プレーヤー1は、プレーヤー2から、どれだけ離れていますか?

これを解決するために、私たちの知っている情報を確認します。
私たちは、角 y の隣辺側が、(25.2メートル)と、y の角度が、(31.5度)であることを知っています。
これは、正接関数を使うために充分な情報です。
TAN ( y ) = 対辺/隣辺 : TAN(31.5度) = 対辺/25.2メートル
これに少しの代数を使って移項(変形)すると、
対辺 = TAN(31.5度) * 25.2メートル
ここまでで、三角形の斜辺以外の2つの辺の長さが分かったので、プレーヤーの間の距離を見つけるために、ピタゴラスの定理を使うことができます。

あるいは、余弦を使うこともできます。余弦を使って、移項すると、下の結果になります。
COS ( y ) = 隣辺/斜辺 : 斜辺 = 25.2/COS(31.5度)

これを解決するプログラムを書く前に、FreeBASIC は、他の多くのプログラミング言語と同様に、度ではなく、ラジアンで動作することを、思い出して下さい。(角度を測定する異なった方法を参照下さい。)

下の、FreeBASIC のコードで、答えを得ることができます。

Const PI As Double = 3.1415926535897932
Dim Opposite As Double
Dim Hypotenuse As Double
Dim Angle As Double

Angle = 31.5 * Pi / 180

Opposite = Tan ( Angle ) * 25.2
Hypotenuse = 25.2 / Cos ( Angle )

Print Opposite
Print Hypotenuse

Sleep


上のコードを実行すると、プレーヤー2 は、地面から約15.4メートル、プレーヤー1 から、斜辺に沿って約29.5メートル離れたところにいる、と示します。


逆三角関数

直角三角形の2つの辺の長さを知っていて、角度を知りたいときは、どうすればよいでしょう。
そんなとき、逆三角関数を使うことができます。

例えば、上の例題を少し変えて、プレーヤー2が、地面から30メートルで、プレーヤー1から斜辺に沿って50メートル離れたところにいたなら、角 y の角度は何ですか?
三角関数の中から、正弦関数(対辺と斜辺)を使うと良いと思われます。
SIN ( y ) = 対辺/斜辺 : ArcSine (対辺/斜辺) = y.

Print Asin (30/50)
Sleep


上のコードは、約0.6435のラジアン(約36.9度)の角度を表示します。
FreeBASIC では、以下の逆三角関数が準備されています。

編集者注:
ATN は、引数の逆正接を -Pi/2 から Pi/2 の範囲の Double で返します。
ATAN2 は、y/x の比の逆正接を -Pi から Pi の範囲の Double で返します。



その他の三角関数

上の関数で定義されるものとは別の、他の三角関数があります。
下のいずれも、FreeBASIC では定義されていませ。

これらは、それぞれ、また、逆(または、arc)の関数があります。


正弦定理(Law of Sines)、余弦定理(Law of Cosines)、その他の関係

上記のすべては、直角三角形を前提としていました。しかし、これは基本的な三角関数について説明するものです。
以下は、直角三角形だけを対象にしません。
どんな三角形でも、これらの恒等式は有効です。

正弦定理 (Law of Sines)
SIN (y)/Y = SIN (x)/X = SIN (z)/Z

余弦定理 (Law of Cosines)
Z^2 = X^2 + Y^2 - 2*X*Y*COS(z)

他の恒等式

SIN^2(y) + COS^2(y) = 1
これは、右と同じです。SIN(y)*SIN(y) + COS(y)*COS(y) = 1

TAN(y) = SIN((y)/COS(y)

他にも、いくつかの、役に立つ恒等式があります。
三角形に関する恒等式について、検索したり、あるいは、より高度な数学の参考資料も、ご覧ください。

いっしょに学ぼう に戻る
最後、sancho3 により2018年2月15日にレビュー
注:要求に応じて ATN および ATAN2 関数の説明を追加しました

←リンク元に戻る プログラム開発関連に戻る

ページ歴史:2018-02-15 23:12:42
日本語翻訳:WATANABE Makoto、原文著作者:RandyKeeling(Randy Keeling)

ホームページのトップに戻る

表示-非営利-継承