mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Saturday, December 30, 2006

Java/자바] 35mm 카메라 렌즈 화각(FOV) 구하기, 초점 거리(Focal Length)계산[광학/물리/사진


35mm 필름을 사용하는 카메라의, 렌즈의 초점 거리를 지정해 주면, 그 렌즈의 대각선 화각(畵角; Field of View)을 구하고,

역으로, 대각선 화각을 넣어주면, 초점 거리를 계산하는 소스 코드입니다.

광각 렌즈인 경우에는 촬영 범위가 넓기에 당연히 화각이 크고, 망원 렌즈로 갈수록 화각이 좁습니다.

35mm 카메라의 표준 렌즈는 50mm 렌즈인데, 이 표준 렌즈의 화각은 46도 입니다. 즉 전방 46도 각도의 모든 것을 촬영하는 것입니다. 단, 대각선 방향으로 46도입니다.


사진 Lens 화각(FOV) 계산, 초점 거리 계산법 예제


파일명: Foo.java
public class Foo {
  public static void main(String[] args) {

    // 35mm 필름의 대각선 길이: 43.266615305567875
    double diagonalLength = Math.sqrt( Math.pow(36, 2) + Math.pow(24, 2) );

    // 렌즈 초점 거리 (표준 렌즈 : 50mm)
    double focalLength = 50;




    // 렌즈 화각 (FOV; Field of View = Angle of View) 구하기
    double fov = (2 * Math.atan(diagonalLength / (2 * focalLength))) * 180 / Math.PI;
    System.out.format("%.2f mm 렌즈의 대각선 화각은 %.2f 도입니다%n", focalLength, fov);


    // 화각으로 렌즈 초점 거리 구하기
    double focal = diagonalLength / (2 * Math.tan(Math.PI * fov / 360));
    System.out.format("대각선 화각이 %.2f 도인 렌즈의 초점 거리는 %.2f mm 입니다%n", fov, focal);


  }
}



컴파일 및 실행 결과:
D:\Z>javac Foo.java && java Foo
50.00 mm 렌즈의 대각선 화각은 46.79 도입니다
대각선 화각이 46.79 도인 렌즈의 초점 거리는 50.00 mm 입니다

D:\Z>


double focalLength = 50;
소스의 이 부분을

double focalLength = 24;
이렇게 바꾸면,

D:\Z>javac Foo.java && java Foo
24.00 mm 렌즈의 대각선 화각은 84.06 도입니다
대각선 화각이 84.06 도인 렌즈의 초점 거리는 24.00 mm 입니다

D:\Z>

이런 결과가 나옵니다. 24mm 렌즈는 초광각에 가까운 매우 넓은 광각 렌즈입니다. (광각 렌즈 매니아들은 24mm 렌즈를 자신만의 표준 렌즈로 삼는 사람도 있더군요. 그렇지만 24mm 렌즈는 원근의 왜곡이 좀 심합니다.)



그리고 다음 방법으로, 필름이나 CMOS/CCD 의 대각선 길이를 구할 수 있습니다: ▶▶ Java/자바/수학] 사각형 대각선 길이 구하기, 직사각형/정사각형; Diagonal Length Rectangle



▶▶ 매스매티카 Mathematica, 렌즈 화각 FOV 계산; 광학 Field of View




tag: java
자바 | Java
tag: camera
카메라 | 디카 DSLR | 사진용품 사용기
tag: study
학습 | Study

0 Comments:

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top