C++
 Computer >> コンピューター >  >> プログラミング >> C++

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

まとめ

このように、弦と接線のなす角は「接弦の角定理」により、代替セグメントの角と等しくなります。プログラム上の処理は非常にシンプルですが、その背後には中心角と円周角の関係という、円の幾何学における重要な性質が支えとなっています。


  1. 【C++】前置インクリメント「++i」と後置インクリメント「i++」の違いとは?

    C++のインクリメント演算子「++」には、前置(prefix)と後置(postfix)の2つの形式があり、それぞれ動作に大きな違いがあります。前置インクリメント(++i):変数 i の値を先に1増やし、その増加後の新しい値が式の値になります。つまり、「まず増加してから値を返す」動作です。後置インクリメント(i++):変数 i の値は1増やされますが、式の値としては増加前の元の値が使われます。つまり、「まず値を返してから増加する」動作です。サンプルコード実際のコードを見ながら、その違いを詳しく確認してみましょう。#include<iostream> using namespace s

  2. C++におけるドット演算子(.)とアロー演算子(->)の違いを徹底解説

    C++では、ドット演算子(.)とアロー演算子(->)はどちらもクラスのメンバーにアクセスするために使用されますが、それぞれ使用される場面が異なります。C++において、class、struct、unionとして宣言された型はすべて「クラスタイプ」とみなされるため、以下の説明はこれら3つすべてに当てはまります。基本的な使い分けa.b は、b がオブジェクト a(またはオブジェクトへの参照[1])のメンバーである場合にのみ使用できます。つまり、a.b の形式では、a は常にクラスの実際のオブジェクト(またはその参照)でなければなりません。a->b は、本質的に (*a).b の省略記法で