当光线通过自由曲面时,可以实现一定距离处的照射物处于均匀照明状态,由于刚开始编辑,有很多粗糙的地方,欢迎讨论
公式没有给出,对于计算可以去网上找,本文给出了用c++实现的方法。
QQ:852063127
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
double const PI = acos(double(-1));
int main()
{
int N=800 ;//光通量划分成800份
int H=1000 ;//点光源距地面的高度
double n=1.49386 ;//折射
int a=60;//发散角
double alpha = a* PI/180;
double R = H*tan(alpha);
double* cita = new double[N + 2];
double* r = new double[N + 2];
double temp;
int t = 0;
cita[1] = 0;
r[1] = 0;
for (int i = 1; i <= N + 1; i++)
{
r[i + 1] = sqrt(r[i] * r[i] + R*R / N);
temp = sin(cita[i]);
cita[i + 1] = asin(sqrt(temp*temp