当前位置: 首页>>代码示例>>C++>>正文


C++ Spectrum::getData方法代码示例

本文整理汇总了C++中Spectrum::getData方法的典型用法代码示例。如果您正苦于以下问题:C++ Spectrum::getData方法的具体用法?C++ Spectrum::getData怎么用?C++ Spectrum::getData使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Spectrum的用法示例。


在下文中一共展示了Spectrum::getData方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: CaluclateBlackBody

Spectrum CaluclateBlackBody(double CCT){

/*
 * h = 6.62607E-34
 * c= 3*10E8
 * kB = 1.38065E-23; -- Boltzman constant
 * 2hc^2 = 1.1926926E-14
 * hc/kB = 0.0143977184659399558179118531126643247745627059718248
 *
 */
    double hc  = 1.1926926E-16;
    double hckB =0.0143977;
    vector <double> tab;

    double mianownik;
    for (int i=0;i<SIZE;i++) {
        mianownik = pow(Wavelength.getData()[i]*0.000000001,5)*(exp(hckB/(Wavelength.getData()[i]*0.000000001*CCT))-1);

        tab.push_back(hc/(mianownik));
    }
    Spectrum BlackBody;
    BlackBody.setData(&tab);
    return BlackBody;
    //$I$2/((A5*0,000000001)^5)/(EXP($I$3/(A5*0,000000001*$I$1))-1)

/*
     * 2hc^2/(lambda^5 * e^(hc/lambda*kBT)-1)
    */
}
开发者ID:Mehow2122,项目名称:CRI,代码行数:29,代码来源:main.cpp

示例2: calculateCCT

double calculateCCT(Spectrum &normalizeData){
    double CCT;
    double X=0,Y=0,Z=0,u=0,v=0;
    for(int i=0;i<SIZE;i++)
    {
        X+=normalizeData.getData()[i]*xyz_bar[0].getData()[i];
        Y+=normalizeData.getData()[i]*xyz_bar[1].getData()[i];
        Z+=normalizeData.getData()[i]*xyz_bar[2].getData()[i];
    }
    u = 4*X/(X+15*Y+3*Z);
    v = 6*X/(X+15*Y+3*Z);
    double x = X/(X+Y+Z);
    double y = Y/(X+Y+Z);
    double xe = 0.3320;
    double ye = 0.1858;
    double n = ((x-xe)/(y-ye));
    double CCT_value = -449*pow(n,3)+3524*pow(n,2)-6823.3*n+5520.33;
    return CCT_value;
    //Approximation:
    //CCT(x, y) = ?449n3 + 3525n2 ? 6823.3n + 5520.33,
    // n = (x ? xe)/(y ? ye) is the inverse slope line, and (xe = 0.3320, ye = 0.1858) is the "epicenter"
}
开发者ID:Mehow2122,项目名称:CRI,代码行数:22,代码来源:main.cpp

示例3: normalizeSpectrum

Spectrum normalizeSpectrum(Spectrum data){

    Spectrum output;
    double sum = 0;
    vector <double> dataValue = data.getData();
    vector <double> xyzValue = xyz_bar[1].getData();

    for (int i=0;i<SIZE;i++) {
        sum += dataValue[i] * xyzValue[i];
    }
    for(int i = 0; i<SIZE; i++){
        dataValue[i] = (dataValue[i]/sum)*100;
    }
    //vector <double> tab[SIZE];
    output.setData(&dataValue);
    return output;
}
开发者ID:Mehow2122,项目名称:CRI,代码行数:17,代码来源:main.cpp

示例4: calculate_uv

void calculate_uv(Spectrum &Data, double (&uvY)[3][SIZE_TSC]){
    double tab[3][SIZE];
    double x, y;
    double xyz[3][SIZE_TSC];
    for(int i=0;i<SIZE_TSC;i++)
    {
        for (int k = 0; k<3;k++) {
            xyz[k][i]=0;
            for(int j=0;j<SIZE;j++){
                tab[k][j] = TSC[i].getData()[j]*Data.getData()[j]*xyz_bar[k].getData()[j];
                xyz[k][i]+=tab[k][j];
            }

        }
        x=xyz[0][i]/(xyz[0][i]+xyz[1][i]+xyz[2][i]);
        y=xyz[1][i]/(xyz[0][i]+xyz[1][i]+xyz[2][i]);

        uvY[0][i]=4*x/(-2*x+12*y+3);
        uvY[1][i]=6*y/(-2*x+12*y+3);
        uvY[2][i]=xyz[1][i];
    }
}
开发者ID:Mehow2122,项目名称:CRI,代码行数:22,代码来源:main.cpp


注:本文中的Spectrum::getData方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。