Esempio n. 1
0
/**
 * @brief initRendering
 */
void initRendering()
{
    glShadeModel(GL_SMOOTH);
    glEnable(GL_MULTISAMPLE);
    
    glEnable(GL_DEPTH_TEST);
    glEnable (GL_BLEND);
    glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glClearColor(0.0,0.0,0.0,1.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glTranslatef(0,0,eyeDistance);

    int nspheres=500;
    int minRadius=15;
    int maxRadius=50;
    glewInit();
    surface.resize(iWidth,iHeight,iDepth*3);
    surface.fillVolumeWithSpheres(nspheres,minRadius,maxRadius);
    surface.initializeTexture();
    surface.initializeSurfaceShaders(VolumetricSurfaceIntersection::SurfaceParabolicCylinder);

    surface.parabolicCylinderSurface.curvature=1.0;
    surface.parabolicCylinderSurface.centerX=surface.parabolicCylinderSurface.centerY=surface.parabolicCylinderSurface.centerZ=0.0;

    surface.parabolaSurface.curvature=1.0;
    surface.coneSurface.c=1.0;
    surface.ellipsoidSurface.axisX=1.0;
    surface.ellipsoidSurface.axisY=1.0;
    surface.ellipsoidSurface.axisZ=1.0;
    surface.ellipticCylinderSurface.axisX=1.0;
    surface.ellipticCylinderSurface.height=1.0;
    surface.ellipticCylinderSurface.axisZ=1.0;
    getGLerrors();
}
Esempio n. 2
0
/**
 * @brief updateStimulus
 * @param CurvatureZ
 */
void updateStimulus(double CurvatureZ)
{
    double radiusX = util::str2num<double>(parameters.find("RadiusX"));
    double noiseDensity = util::str2num<double>(parameters.find("RandomNoiseDensity"));

    int nRandomDots = mathcommon::getParaboloidArea(radiusX,CurvatureZ)*noiseDensity;
    parabolicCylinderPoints.setNpoints(nRandomDots);
    parabolicCylinderPoints.setCurvature(CurvatureZ);
    parabolicCylinderPoints.setFluffiness(0.0);
    parabolicCylinderPoints.compute();

    stimDrawerBlack.setSpheres(false);
    stimDrawerRed.setSpheres(false);

    stimDrawerRed.setStimulus(&parabolicCylinderPoints);
    stimDrawerBlack.setStimulus(&parabolicCylinderPoints);

    float randomDotsSize = util::str2num<float>(parameters.find("RandomDotsSize"));
    if (parameters.find("DotsColor")=="RedAndBlack")
    {
        stimDrawerRed.initList(&parabolicCylinderPoints,glRed,randomDotsSize);
        parabolicCylinderPoints.compute();
        stimDrawerBlack.initList(&parabolicCylinderPoints,glBlack,randomDotsSize);
        surface.setUniformColor(glRed);
    }
    else
    {
        stimDrawerRed.initList(&parabolicCylinderPoints,glWhite,randomDotsSize);
        parabolicCylinderPoints.compute();
        stimDrawerBlack.initList(&parabolicCylinderPoints,glWhite,randomDotsSize);
        surface.setUniformColor(glWhite);
    }

    if ( parameters.find("UsePolkaDots")=="1" )
    {
        int nSpheres = util::str2num<int>(parameters.find("TotalPolkaDots"));
        int dotsRadiusMin = util::str2num<int>(parameters.find("PolkaDotsRadiusMin"));
        int dotsRadiusMax = util::str2num<int>(parameters.find("PolkaDotsRadiusMax"));
        int textureResolution = util::str2num<int>(parameters.find("TextureResolution"));
        //surface.fillVolumeWithSpheres2(nSpheres,nSpheres,nSpheres*util::str2num<double>(parameters.find("MaxCurvatureZ")),dotsRadiusMin,dotsRadiusMax);
        surface.fillVolumeWithSpheres(nSpheres,dotsRadiusMin ,dotsRadiusMax);
        surface.initializeTexture();
        surface.parabolicCylinderSurface.curvature=CurvatureZ;
        //surface.setUniformColor(glWhite);
    }
}
Esempio n. 3
0
/**
 * @brief handleKeypress
 * @param key
 * @param x
 * @param y
 */
void handleKeypress(unsigned char key, int x, int y)
{
    switch (key)
    {  case 'q': //Escape key
    {
        exit(0);
        break;
    }
    case ' ':
    {
        surface.fillVolumeWithSpheres(1500,5,10);
        surface.initializeTexture();
        break;
    }
    case '+':
    {
        eyeDistance+=0.5;
        break;
    }
    case '-':
    {        eyeDistance-=0.5;
        break;
    }
    case 'a':
    {
        surface.parabolaSurface.curvature+=0.01;
        surface.parabolicCylinderSurface.curvature+=0.01;
        break;
    }
    case 'z':
    {
        surface.parabolaSurface.curvature-=0.01;
        surface.parabolicCylinderSurface.curvature-=0.01;
        break;
    }
    }
}