C++で代替セグメントの角が与えられた場合の、弦と接線のなす角を求める方法
円が与えられている場合、弦と接線はある一点で交わります。ここでの目的は、代替セグメント(弦の反対側の領域)における角が既知であるとき、弦と接線のなす角を求めることです。
実は、この問題には美しい幾何学的性質が隠されています。「接弦の角定理」によれば、弦と接線のなす角は、その弦に対する反対側の円周角(代替セグメントの角)と必ず等しくなります。以下で、その証明の流れとプログラムの実装を見ていきましょう。
例
Input: z = 40 Output: 40 degrees Input: z = 60 Output: 60 degrees
証明のアプローチ
角QPRを、代替セグメントにおける既知の角とします。
弦と接線のなす角=角RQY=a とします。
中心から接線に引いた直線は、接線と垂直に交わるため、
角CQR = 90° − a となります。
CQ = CR = 円の半径 であるため、
角CRQ = 90° − a が成り立ちます。
次に、三角形CQRに着目すると、
角CQR + 角CRQ + 角QCR = 180°
角QCR = 180° − (90° − a) − (90° − a)
角QCR = 2a
円周角は、同じ弧に対する中心角の半分になるため、角QPR = a となります。
したがって、角QPR = 角RQY という関係が導かれます。
実装の方針
以上の証明から、弦と接線のなす角は、与えられた代替セグメントの角と常に等しいことが分かります。つまり、入力された値をそのまま出力すればよいことになります。実際のコードは以下の通りです。
例(C++コード)
// 代替セグメントの角が与えられたときの
// 弦と接線のなす角を求めるC++プログラム
#include <bits/stdc++.h>
using namespace std;
void anglechordtang(int z1){
cout<< "The angle between tangent"
<<" and the chord is "
<< z1 <<" degrees" << endl;
}
// Driver code
int main(){
int z1 = 40;
anglechordtang(z1);
return 0;
}
出力
The angle between tangent and the chord is 40 degrees
まとめ
このように、弦と接線のなす角は「接弦の角定理」により、代替セグメントの角と等しくなります。プログラム上の処理は非常にシンプルですが、その背後には中心角と円周角の関係という、円の幾何学における重要な性質が支えとなっています。
-
【C++】前置インクリメント「++i」と後置インクリメント「i++」の違いとは?
C++のインクリメント演算子「++」には、前置(prefix)と後置(postfix)の2つの形式があり、それぞれ動作に大きな違いがあります。前置インクリメント(++i):変数 i の値を先に1増やし、その増加後の新しい値が式の値になります。つまり、「まず増加してから値を返す」動作です。後置インクリメント(i++):変数 i の値は1増やされますが、式の値としては増加前の元の値が使われます。つまり、「まず値を返してから増加する」動作です。サンプルコード実際のコードを見ながら、その違いを詳しく確認してみましょう。#include<iostream> using namespace s
-
C++におけるドット演算子(.)とアロー演算子(->)の違いを徹底解説
C++では、ドット演算子(.)とアロー演算子(->)はどちらもクラスのメンバーにアクセスするために使用されますが、それぞれ使用される場面が異なります。C++において、class、struct、unionとして宣言された型はすべて「クラスタイプ」とみなされるため、以下の説明はこれら3つすべてに当てはまります。基本的な使い分けa.b は、b がオブジェクト a(またはオブジェクトへの参照[1])のメンバーである場合にのみ使用できます。つまり、a.b の形式では、a は常にクラスの実際のオブジェクト(またはその参照)でなければなりません。a->b は、本質的に (*a).b の省略記法で