?? 近軸光束的光路計算.cpp
字號:
// 近軸光束的光路計算.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
///////////宏定義光線入射高度///////////////////////////////////////////////////////////////////////////////
#define h 30.0
////////////////////////////////////////////////////////////////////////////////////////////////////////////
void main(int argc, char* argv[])
{
int x, flag=1, i, j;
double l1[10],l2[10], r[10], u1[10], u2[10], n[10], d[10], i1[10], i2[10],a[10], b[10], c[10];
printf("請輸入透鏡的數目(0<x<11):");
while(flag)
{
scanf("%d",&x);
printf("\n");
if(x<=0||x>=11)
printf("輸入錯誤!\n請重新輸入透鏡的數目(0<x<11):");
else
flag=0;
}
///////////輸入光學參數//////////////////////////////////////////////////////////////////////////////////////
printf("請按順序正確輸入每個透鏡的球半徑r:");
for(i=0;i<x;i++)
scanf("%lf",&r[i]);
printf("\n");
printf("請按順序正確輸入每個透鏡的距離d:");
for(i=0;i<x-1;i++)
scanf("%lf",&d[i]);
printf("\n");
printf("請按順序正確輸入每個透鏡的折射率n:");
if(x!=1)
{
for(i=0;i<x-1;i++)
scanf("%lf",&n[i]);
n[i]=1;
}
else
{
for(i=0;i<x;i++)
scanf("%lf",&n[i]);
}
printf("\n");
//////////演算第一塊透鏡的象距///////////////////////////////////////////////////////////////////////////////
i1[0]=h/r[0];
i2[0]=i1[0]/n[0];
u2[0]=i1[0]-i2[0];
a[0]=i2[0]*r[0]/u2[0];
l2[0]=a[0]+r[0];
/////////演算過其他透鏡的象距////////////////////////////////////////////////////////////////////////////////
for(j=1;j<x;j++)
{
c[j-1]=l2[j-1]-d[j-1];
l1[j]=c[j-1];
u1[j]=u2[j-1];
b[j]=l1[j]-r[j];
i1[j]=b[j]*u1[j]/r[j];
i2[j]=i1[j]*n[j-1]/n[j];
u2[j]=u1[j]+i1[j]-i2[j];
a[j]=i2[j]*r[j]/u2[j];
l2[j]=a[j]+r[j];
}
/////////輸出每過一透鏡的象距/////////////////////////////////////////////////////////////////////////////////
for(i=0;i<x;i++)
{
printf("過第%d塊透鏡后的象距:l%d=%lf\n",i+1,i+1,l2[i]);
}
/////////輸出光組的焦距///////////////////////////////////////////////////////////////////////////////////////
printf("光組的焦距:f=%lf\n",h/u2[--i]);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -