include "final1.h"
include "ui_final1.h"
include 
include 
include 
ifndef GL_MULTISAMPLE
define GL_MULTISAMPLE 0x809D
endif
define numred 100
define numgrn 10
define numblu 6
final1::final1(QWidget *parent)
    : QGLWidget(parent)
{
    setFormat(QGLFormat(QGL::SampleBuffers));
rotationX = -38.0;
rotationY = -58.0;
rotationZ = 0.0;
scaling = .05;
// glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
    //createGradient();
    createGLObject();
}
final1::~final1()
{
    makeCurrent();
    glDeleteLists(glObject, 1);
}
void final1::paintEvent(QPaintEvent * /* event */)
{
    QPainter painter(this);
    draw();
}
void final1::mousePressEvent(QMouseEvent *event)
{
    lastPos = event-pos();
}
void final1::mouseMoveEvent(QMouseEvent *event)
{
    GLfloat dx = GLfloat(event-x() - lastPos.x()) / width();
    GLfloat dy = GLfloat(event-y() - lastPos.y()) / height();
if (event->buttons() & Qt::LeftButton) {
    rotationX += 180 * dy;
    rotationY += 180 * dx;
    update();
} else if (event->buttons() & Qt::RightButton) {
    rotationX += 180 * dy;
    rotationZ += 180 * dx;
    update();
}
lastPos = event->pos();
}
    void final1::createGLObject()
    {
        makeCurrent();
        GLfloat f1[150],f2[150],f3[150],length=0;
        qreal size=2;
           int k=1,a,b,c,d,e,f,g,h,element_node_no=0;
           GLfloat  x,y,z;
           QString str1,str2,str3,str4,str5,str6,str7,str8;
           int red,green,blue,index=1,displacement;
           int LUT[1000][3];
           for(red=100;red
   glShadeModel(GL_SMOOTH);
    glObject = glGenLists(1);
    glNewList(glObject, GL_COMPILE);
   // qglColor(QColor(255, 239, 191));
    glLineWidth(1.0);
    QLinearGradient linearGradient(0, 0, 100, 100);
            linearGradient.setColorAt(0.0, Qt::red);
            linearGradient.setColorAt(0.2, Qt::green);
            linearGradient.setColorAt(1.0, Qt::black);
            //renderArea->setBrush(linearGradient);
    //glColor3f(1,0,0);pow((f1[e]-f1[a]),2)
    QFile file("/home/41407/input1.txt");
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
      return;
    QTextStream in(&file);
    while (!in.atEnd())
    {
    QString line = in.readLine();
     if(k<=125)
     {
     str1= line.section(',', 1, 1);
     str2=line.section(',', 2, 2);
     str3=line.section(',', 3, 3);
     x=str1.toFloat();
     y=str2.toFloat();
     z=str3.toFloat();
     f1[k]=x;
     f2[k]=y;
     f3[k]=z;
   /*  glBegin(GL_TRIANGLES);
   //  glColor3f(LUT[k][0],LUT[k][1],LUT[k][2]);
     //QColorAt();//setPointSize(size);
     glVertex3f(x,y,z);
     glEnd();*/
    }
else if(k>125)
 {
    element_node_no=0;
    qCount(line.begin(),line.end(),',',element_node_no);
   // printf("\n%d",element_node_no);
    str1= line.section(',', 1, 1);
    str2=line.section(',', 2, 2);
    str3=line.section(',', 3, 3);
    str4= line.section(',', 4, 4);
    str5=line.section(',', 5, 5);
    str6=line.section(',', 6, 6);
    str7= line.section(',', 7, 7);
    str8=line.section(',', 8, 8);
    a=str1.toInt();
    b=str2.toInt();
    c=str3.toInt();
    d=str4.toInt();
    e=str5.toInt();
    f=str6.toInt();
    g=str7.toInt();
    h=str8.toInt();
    glBegin(GL_POLYGON);
    glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
    //brush.setColor(Qt::black);//setColor(QColor::black());
   glColor3f(LUT[k][0],LUT[k][1],LUT[k++][2]);
     // pmp.setBrush(gradient);
    glVertex3f(f1[a],f2[a] ,f3[a]);
   glColor3f(LUT[k][0],LUT[k][1],LUT[k++][2]);
    glVertex3f(f1[b],f2[b] ,f3[b]);
   glColor3f(LUT[k][0],LUT[k][1],LUT[k++][2]);
    glVertex3f(f1[c],f2[c] ,f3[c]);
   glColor3f(LUT[k][0],LUT[k][1],LUT[k++][2]);
    glVertex3f(f1[d],f2[d] ,f3[d]);
   glColor3f(LUT[k][0],LUT[k][1],LUT[k++][2]);
    glVertex3f(f1[a],f2[a] ,f3[a]);
   glColor3f(LUT[k][0],LUT[k][1],LUT[k++][2]);
    //glEnd();
    //glBegin(GL_LINE_LOOP);
    glVertex3f(f1[e],f2[e] ,f3[e]);
   glColor3f(LUT[k][0],LUT[k][1],LUT[k++][2]);
    glVertex3f(f1[f],f2[f] ,f3[f]);
   glColor3f(LUT[k][0],LUT[k][1],LUT[k++][2]);
    glVertex3f(f1[g],f2[g], f3[g]);
   glColor3f(LUT[k][0],LUT[k][1],LUT[k++][2]);
    glVertex3f(f1[h],f2[h], f3[h]);
   glColor3f(LUT[k][0],LUT[k][1],LUT[k++][2]);
    glVertex3f(f1[d],f2[d] ,f3[d]);
   glColor3f(LUT[k][0],LUT[k][1],LUT[k++][2]);
   glVertex3f(f1[a],f2[a] ,f3[a]);
   glColor3f(LUT[k][0],LUT[k][1],LUT[k++][2]);
    glEnd();
    glBegin(GL_POLYGON);
   //glVertex3f(f1[a],f2[a] ,f3[a]);
    glVertex3f(f1[e],f2[e] ,f3[e]);
    glColor3f(LUT[k][0],LUT[k][1],LUT[k++][2]);
    glVertex3f(f1[h],f2[h], f3[h]);
    glColor3f(LUT[k][0],LUT[k][1],LUT[k++][2]);
     //glVertex3f(f1[d],f2[d] ,f3[d]);
    glVertex3f(f1[g],f2[g], f3[g]);
    glColor3f(LUT[k][0],LUT[k][1],LUT[k++][2]);
    glVertex3f(f1[c],f2[c] ,f3[c]);
    glColor3f(LUT[k][0],LUT[k][1],LUT[k++][2]);
    glVertex3f(f1[f],f2[f] ,f3[f]);
    glColor3f(LUT[k][0],LUT[k][1],LUT[k++][2]);
    glVertex3f(f1[b],f2[b] ,f3[b]);
    glColor3f(LUT[k][0],LUT[k][1],LUT[k++][2]);
    glEnd();
    /*length=sqrt(pow((f1[e]-f1[a]),2)+pow((f2[e]-f2[a]),2)+pow((f3[e]-f3[a]),2));
    printf("\n%d",length);*/
}
k++;
}
  glEndList();
  file.close();
  k=1;
  QFile file1("/home/41407/op.txt");
  if (!file1.open(QIODevice::ReadOnly | QIODevice::Text))
    return;
  QTextStream in1(&file1);
  k=1;
  while (!in1.atEnd())
    {
      QString line = in1.readLine();
     // if(k<=125)
        {
          str1= line.section(' ', 1, 1);
             x=str1.toFloat();
          str2=line.section(' ', 2, 2);
             y=str2.toFloat();
          str3=line.section(' ', 3, 3);
              z=str3.toFloat();
          displacement=sqrt(pow( (x-f1[k]),2)+pow((y-f2[k]),2)+pow((z-f3[k]),2));
          //printf("\n %d : %d",k,displacement);
          glBegin(GL_POLYGON);
          //glColor3f(LUT[displacement][0],LUT[displacement][1],LUT[displacement][2]);
            glVertex3f(f1[k],f2[k],f3[k]);
          glEnd();
          a1[k]=x+f1[k];
          a2[k]=y+f2[k];
          a3[k]=z+f3[k];
          //printf("\nc: %f  %f  %f",x,y,z);
          //printf("\nf: %f  %f  %f",f1[k],f2[k],f3[k]);
          //printf("\na: %f  %f  %f",a1[k],a2[k],a3[k]);
        }
     k++;
  glEndList();
 }
}
      void final1::draw()
      {
          glPushAttrib(GL_ALL_ATTRIB_BITS);
      glMatrixMode(GL_PROJECTION);
      glPushMatrix();
      glLoadIdentity();
      GLfloat x = 3.0 * GLfloat(width()) / height();
      glOrtho(-x, +x, -3.0, +3.0, 4.0, 15.0);
      glMatrixMode(GL_MODELVIEW);
      glPushMatrix();
      glLoadIdentity();
      glTranslatef(0.0, 0.0, -10.0);
      glScalef(scaling, scaling, scaling);
      glRotatef(rotationX, 1.0, 0.0, 0.0);
      glRotatef(rotationY, 0.0, 1.0, 0.0);
      glRotatef(rotationZ, 0.0, 0.0, 1.0);
      glEnable(GL_MULTISAMPLE);
      glCallList(glObject);
      glMatrixMode(GL_MODELVIEW);
      glPopMatrix();
      glMatrixMode(GL_PROJECTION);
      glPopMatrix();
      glPopAttrib();
  }
  /*uint final1::colorAt(int x)
   {
       generateShade();
       QPolygonF pts = m_hoverPoints->points();
       for (int i=1; i < pts.size(); ++i) {
           if (pts.at(i-1).x() <= x && pts.at(i).x() >= x) {
               QLineF l(pts.at(i-1), pts.at(i));
               l.setLength(l.length() * ((x - l.x1()) / l.dx()));
               return m_shade.pixel(qRound(qMin(l.x2(), (qreal(m_shade.width() - 1)))),
                                    qRound(qMin(l.y2(), qreal(m_shade.height() - 1))));
           }
       }
       return 0;*/
  //final1::
//}
/*void final1::createGLObject()
{
    makeCurrent();
    //QPainter painter;
 QPixmap pm(20, 20);
             QPainter pmp(&pm);
             pmp.fillRect(0, 0, 10, 10, Qt::blue);
             pmp.fillRect(10, 10, 10, 10, Qt::lightGray);
             pmp.fillRect(0, 10, 10, 10, Qt::darkGray);
             pmp.fillRect(10, 0, 10, 10, Qt::darkGray);
             pmp.end();
   QPalette pal = palette();
             pal.setBrush(backgroundRole(), QBrush(pm));
             //setAutoFillBackground(true);
             setPalette(pal);
    //GLfloat f1[150],f2[150],f3[150],a1[150],a2[150],a3[150];
       int k=1,a,b,c,d,e,f,g,h;
       //int p=0;
       GLfloat  x,y,z;
       int displacement;
       QString str1,str2,str3,str4,str5,str6,str7,str8;
       int red,green,blue,index=1;
       int LUT[8000][3];
       for(red=0;red
//glShadeModel(GL_LINE);
glObject = glGenLists(1);
glNewList(glObject, GL_COMPILE);
    //qglColor(QColor(120,255,210));
glLineWidth(1.0);
//glColor3f(1,0,0);
QFile file("/home/41407/input.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
  return;
QTextStream in(&file);
while (!in.atEnd())
{
    //glColor3f(LUT[k][0],LUT[k][1],LUT[k][2]);
QString line = in.readLine();
 if(k<=125)
 {
     //printf("\nline :%c",line);
 str1= line.section(',', 1, 1);
 str2=line.section(',', 2, 2);
 str3=line.section(',', 3, 3);
 x=str1.toFloat();
 y=str2.toFloat();
 z=str3.toFloat();
 f1[k]=x;
 f2[k]=y;
 f3[k]=z;
  //printf("\nf: %f  %f  %f",f1[k],f2[k],f3[k]);
}
else if(k125)
    //for(p=0;p<6;p++)
 {
    //glColor3f(LUT[k][0],LUT[k][1],LUT[k][2]);
update();
str1= line.section(',', 1, 1);
str2=line.section(',', 2, 2);
str3=line.section(',', 3, 3);
str4= line.section(',', 4, 4);
str5=line.section(',', 5, 5);
str6=line.section(',', 6, 6);
str7= line.section(',', 7, 7);
str8=line.section(',', 8, 8);
a=str1.toInt();
b=str2.toInt();
c=str3.toInt();
d=str4.toInt();
e=str5.toInt();
f=str6.toInt();
g=str7.toInt();
h=str8.toInt();
//for (p = 0; p < 6; p++)
{
   // glBegin(GL_LINE_WIDTH);
    //glColor3f(LUT[126][0],LUT[126][1],LUT[126][2]);
    //update();
  //glNormal3fv(&n[p][0]);
  //glVertex3f(f1[i],f2[i],f3[i]);
  glVertex3fv(&v[faces[i][1]][0]);
  glVertex3fv(&v[faces[i][2]][0]);
  glVertex3fv(&v[faces[i][3]][0]);
  //glEnd();
//}
  glBegin(GL_LINE_LOOP);
  //glColor3f(p*20,p*20,p);
glColor3f(1,0,0);
      glVertex3f(f1[a],f2[a] ,f3[a]);
      //painter.fillRect(QRectF(f1[a],f2[a] ,f3[a], 2), Qt::magenta);
      glVertex3f(f1[b],f2[b] ,f3[b]);
      glVertex3f(f1[c],f2[c] ,f3[c]);
      glVertex3f(f1[d],f2[d] ,f3[d]);
      glVertex3f(f1[a],f2[a] ,f3[a]);
      glVertex3f(f1[e],f2[e] ,f3[e]);
      glVertex3f(f1[f],f2[f] ,f3[f]);
      glVertex3f(f1[g],f2[g], f3[g]);
      glVertex3f(f1[h],f2[h], f3[h]);
      glVertex3f(f1[d],f2[d] ,f3[d]);
      glVertex3f(f1[a],f2[a] ,f3[a]);
      //glColor3f(1,0,0);
      //QLinearGradient (  f1[a],  f2[a],  f1[b],  f2[b] );
    glEnd();
    glBegin(GL_LINES);
    //glNormal3fv(&n[p][0]);
    //glColor3f(LUT[k][0],LUT[k][1],LUT[k][2]);
    glVertex3f(f1[e],f2[e] ,f3[e]);
    glVertex3f(f1[h],f2[h], f3[h]);
    glVertex3f(f1[g],f2[g], f3[g]);
    glVertex3f(f1[c],f2[c] ,f3[c]);
    glVertex3f(f1[f],f2[f] ,f3[f]);
    glVertex3f(f1[b],f2[b] ,f3[b]);
glEnd();
}
}
k++;
}
    glEndList();
    qglColor(QColor(239, 255, 191));
    glLineWidth(1.0);
    glColor3f(0,1,0);
    k=1;
    QFile file1("/home/41407/op.txt");
    if (!file1.open(QIODevice::ReadOnly | QIODevice::Text))
      return;
    QTextStream in1(&file1);
    k=1;
    while (!in1.atEnd())
      {
        QString line = in1.readLine();
       // if(k<=125)
          {
            str1= line.section(' ', 1, 1);
               x=str1.toFloat();
            str2=line.section(' ', 2, 2);
               y=str2.toFloat();
            str3=line.section(' ', 3, 3);
                z=str3.toFloat();
            displacement=sqrt(pow( (x-f1[k]),2)+pow((y-f2[k]),2)+pow((z-f3[k]),2));
            printf("\n %d : %d",k,displacement);
            glBegin(GL_POINT);
            glColor3f(LUT[displacement][0],LUT[displacement][1],LUT[displacement][2]);
            glVertex3f(x,y,z);
            glLoadIdentity();
            glEnd();
            a1[k]=x+f1[k];
            a2[k]=y+f2[k];
            a3[k]=z+f3[k];
            //printf("\nc: %f  %f  %f",x,y,z);
            //printf("\nf: %f  %f  %f",f1[k],f2[k],f3[k]);
            //printf("\na: %f  %f  %f",a1[k],a2[k],a3[k]);
      }
   k++;
glEndList();
}
}*/
/*void final1::draw()
{
    glPushAttrib(GL_ALL_ATTRIB_BITS);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
GLfloat x = 3.0 * GLfloat(width()) / height();
glOrtho(-x, +x, -3.0, +3.0, 4.0, 15.0);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glTranslatef(0.0, 0.0, -10.0);
glScalef(scaling, scaling, scaling);
glRotatef(rotationX, 1.0, 0.0, 0.0);
glRotatef(rotationY, 0.0, 1.0, 0.0);
glRotatef(rotationZ, 0.0, 0.0, 1.0);
glEnable(GL_MULTISAMPLE);
glCallList(glObject);
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glPopAttrib();
}*/
I need to change the color of a portion of beam where pressure is applied.But
I am not able to color the front end back phase.