main.c
//Esta funcion dibuja un triangulo sobre
//la imagen de intensidad
Esta funcion dibuja un triangulo sobre
la imagen de intensidad
Esta funcion dibuja un triangulo sobre la imagen de intensidad
void beDrawATriangleOnIntensityImage()
    {
        int segment1x,segment1y, segment2x, segment2y, segment3x, segment3y, i;
        double alfa;
        int v1x, v1y, v2x, v2y, v3x, v3y;
        int height, width;
        v1x=p_parametros->v1x;
        v1y=p_parametros->v1y;
        v2x=p_parametros->v2x;
        v2y=p_parametros->v2y;
        v3x=p_parametros->v3x;
        v3y=p_parametros->v3y;
        height=pInputImage->height;
        width=pInputImage->width;
        for (i=0;i<pInputImage->height*pInputImage->width;i++)
            pInputImage->pdrawnTriangleOnIntensity[i]=pInputImage->pintensity[i];
        for (alfa=0.0;alfa<=1.0;alfa=alfa+0.001) {
            segment1x=(int)((double)v1x+alfa*((double)v2x-(double)v1x));
            segment1y=(int)((double)v1y+alfa);
            segment2x=(int)((double)v1x+alfa*((double)v2x-(double)v1x));
            segment2y=(int)((double)v1y+alfa*((double)v3y-(double)v1y));
            segment3x=(int)((double)v2x+alfa);
            segment3y=(int)((double)v2y+alfa*((double)v3y-(double)v2y));
            if ((segment1y>=0)&&(segment1x>=0)&&(segment1y<height)&&(segment1x<width)) {
                pInputImage->pdrawnTriangleOnIntensity[segment1y*width+segment1x]=255;
            }
            if ((segment2y>=0)&&(segment2x>=0)&&(segment2y<height)&&(segment2x<width)) {
                pInputImage->pdrawnTriangleOnIntensity[segment2y*width+segment2x]=255;
            }
            if ((segment3y>=0)&&(segment3x>=0)&&(segment3y<height)&&(segment3x<width)) {
                pInputImage->pdrawnTriangleOnIntensity[segment3y*width+segment3x]=255;
            }
        }
    }
void beDrawATriangleOnIntensityImage ( ) { int segment1x , segment1y , segment2x , segment2y , segment3x , segment3y , i ; double alfa ; int v1x , v1y , v2x , v2y , v3x , v3y ; int height , width ; v1x = p_parametros -> v1x ; v1y = p_parametros -> v1y ; v2x = p_parametros -> v2x ; v2y = p_parametros -> v2y ; v3x = p_parametros -> v3x ; v3y = p_parametros -> v3y ; height = pInputImage -> height ; width = pInputImage -> width ; for ( i = 0 ; i < pInputImage -> height * pInputImage -> width ; i ++ ) pInputImage -> pdrawnTriangleOnIntensity [ i ] = pInputImage -> pintensity [ i ] ; for ( alfa = 0.0 ; alfa <= 1.0 ; alfa = alfa + 0.001 ) { segment1x = ( int ) ( ( double ) v1x + alfa * ( ( double ) v2x - ( double ) v1x ) ) ; segment1y = ( int ) ( ( double ) v1y + alfa ) ; segment2x = ( int ) ( ( double ) v1x + alfa * ( ( double ) v2x - ( double ) v1x ) ) ; segment2y = ( int ) ( ( double ) v1y + alfa * ( ( double ) v3y - ( double ) v1y ) ) ; segment3x = ( int ) ( ( double ) v2x + alfa ) ; segment3y = ( int ) ( ( double ) v2y + alfa * ( ( double ) v3y - ( double ) v2y ) ) ; if ( ( segment1y >= 0 ) && ( segment1x >= 0 ) && ( segment1y < height ) && ( segment1x < width ) ) { pInputImage -> pdrawnTriangleOnIntensity [ segment1y * width + segment1x ] = 255 ; } if ( ( segment2y >= 0 ) && ( segment2x >= 0 ) && ( segment2y < height ) && ( segment2x < width ) ) { pInputImage -> pdrawnTriangleOnIntensity [ segment2y * width + segment2x ] = 255 ; } if ( ( segment3y >= 0 ) && ( segment3x >= 0 ) && ( segment3y < height ) && ( segment3x < width ) ) { pInputImage -> pdrawnTriangleOnIntensity [ segment3y * width + segment3x ] = 255 ; } } }
Esta funcion dibuja un triangulo sobre
la imagen de intensidad
Esta funcion dibuja un triangulo sobre la imagen de intensidad
//Copiando la imagen de intensidad en la imagen que contendrá el segmento lineal //Por cada valor del parámetro alfa se calcula un punto usando las ecuaciones //paramétricas de un segmento lineal. Cada punto se pone en 255 (blanco) en la //imagen de salida. Alfa varía entre 0.0 y 1.0 en pasos de GEO_ALFA_STEP. Cuando //alfa en 0.0 se estaría en la posición inicial del segmento y cuando alfa es //1.0 en el punto final del segmento. //Segmento horizontal //segment1x=v1x+alfa(v2x-v1x) //segment1x=v1y+alfa //*((double)v2y-(double)v1y)); //Segmento de izquierda traingulo //segment2x=v1x+alfa(v2x-v1x) //segment2x=v1y+alfa(v3y-v1y) //segmento de la izquierda del triangulo //segment3x=v2x+alfa //segment3x=v3y+alfa(v3y-v2y) //Dibujando el punto segmento 1 siempre y cuando no esté fuera de la imagen //Dibujando el punto segmento 2 siempre y cuando no esté fuera de la imagen //Dibujando el punto segmento 3 siempre y cuando no esté fuera de la imagen