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

【C言語】レンズの焦点距離を計算するプログラムの作成方法


レンズからの像距離(image distance)物体距離(object distance)という2つの浮動小数点数が与えられたとき、レンズの焦点距離を計算して出力するのが本記事の課題です。

焦点距離とは?

光学系における焦点距離とは、レンズまたは曲面鏡の中心から、その焦点までの距離を指します。レンズの性質を表す最も基本的なパラメータの一つであり、カメラや顕微鏡など、あらゆる光学機器の設計に欠かせない重要な概念です。

以下の図をもとに理解を深めましょう。

【C言語】レンズの焦点距離を計算するプログラムの作成方法

上の図では、i が物体、F がその物体から結ばれた像、f が焦点距離を表しています。

焦点距離を求める公式

レンズの焦点距離は、いわゆる「薄レンズの公式」から求められます。

1/F = 1/O + 1/I

  • F:焦点距離
  • O:レンズと物体の間の距離(物体距離)
  • I:レンズと結像された像の間の距離(像距離)

この式を変形すると F = 1 / (1/O + 1/I) となるため、この形をそのままプログラムに落とし込むことができます。

入出力例

入力:image_distance=5, object_distance=10
出力:レンズの焦点距離:3.333333
説明:1/5 + 1/10 = 3/10 → F = 10/3 = 3.33333333

入力:image_distance=7, object_distance=10
出力:レンズの焦点距離:4.1176470

解き方のアプローチ

  • 像距離(image_distance)と物体距離(object_distance)を入力として受け取る。
  • 1/image_distance と 1/object_distance の和を計算し、その逆数(1 を和で割った値)を返す。
  • 結果を出力する。

アルゴリズム

開始
ステップ1 → 関数 float focal_length(float image_distance, float object_distance)
    return 1 / ((1 / image_distance) + (1 / object_distance)) を返す

ステップ2 → main 関数内
    変数 image_distance を宣言し、5 で初期化する
    変数 object_distance を宣言し、10 で初期化する
    focal_length(image_distance, object_distance) の呼び出し結果を出力する
終了

C言語での実装例

#include <stdio.h>

// レンズの焦点距離を求める関数
float focal_length(float image_distance, float object_distance) {
    return 1 / ((1 / image_distance) + (1 / object_distance));
}

// main 関数
int main() {
    // レンズと像の間の距離
    float image_distance = 5;
    // レンズと物体の間の距離
    float object_distance = 10;
    printf("レンズの焦点距離:%f\n", focal_length(image_distance, object_distance));
    return 0;
}

実行結果

レンズの焦点距離:3.333333

まとめ

このように、薄レンズの公式をそのままコードに置き換えるだけで、像距離と物体距離から焦点距離を簡単に求めることができます。計算量は O(1) と非常に効率的で、float 型などの浮動小数点数を使用することで、小数点以下の精度も正確に保たれます。


  1. Pythonプログラムで球面鏡の焦点距離を計算する方法

    この記事では、以下の問題文に対する解決策について学んでいきます。 問題文 球面鏡の曲率半径が与えられ、その鏡の焦点距離を求める必要があります。 焦点距離と曲率半径の関係 焦点距離とは、鏡の曲率中心から主焦点までの距離のことです。球面鏡の焦点距離を求めるには、まずその鏡の曲率半径を知る必要があります。曲率半径とは、鏡の頂点から曲率中心までの距離を指します。 これらを数式で表すと、以下のようになります。 凹面鏡の場合 F = R / 2 凸面鏡の場合 F = − R / 2 ここで、Fは焦点距離、Rは曲率半径です。凹面鏡は正の値、凸面鏡は負の値を持つことに注意してください。 実装例 それでは、実

  2. Pythonで球面鏡の焦点距離を計算する方法|凹面鏡・凸面鏡の公式とコード例

    この記事では、以下の問題に対する解決方法を学びます。 問題の概要 球面鏡の曲率半径が与えられたとき、その鏡の焦点距離を求めることを目標とします。 焦点距離とは、鏡の曲率中心から主焦点までの距離のことです。球面鏡の焦点距離を求めるには、まずその鏡の曲率半径を知る必要があります。鏡の頂点から曲率中心までの距離を「曲率半径」と呼びます。 数式で表すと − 凹面鏡の場合: F = R∕2 凸面鏡の場合: F = −R∕2 凸面鏡の焦点距離が負の値になるのは、光学における符号規約によるものです。凸面鏡の焦点は虚焦点であり、入射光の進行方向とは反対側にできるため、マイナス符号を付けて表します。 それでは