Scaling in OpenGL

Rajeev
In this post I am going to show a simple way to learn how to do Scaling in OpenGL. Scaling is a property of transformation which helps increasing and decreasing the size of an object in computer graphics. The alteration in the size of object is done in each of the axis - X,Y and Z.

For Scaling in OpenGL we have inbuilt function which can be used easily on any 2d or 3d objects. The function  is -

Prototype :

void glScaled (GLdouble x,GLdouble  y,GLdouble  z);
void glScalef (GLfloat  x,GLfloat  y, GLfloat  z);

Sample :

glScalef (GLfloat  1.0f,GLfloat 0.5f , GLfloat  2.0f);

Here, in above sample code we see the function will scale the object into half in y direction, twice in z axis while remain same in x.

One thing is to be note is that - the matrix mode should be either GL_MODELVIEW or GL_PROJECTION, for object to be scaled.

Here is a sample program Which helps you understand the how the scaling works in perspective of  Opengl  computer graphics. This is simple c program, use x,y,z to scale down and X,Y,Z to increase scale factor in respective axis.

#include <gl/glut.h>

int x1 = 20.0f;
int y1 = 30.0f;
int x2 = 40.0f;
int y2 = 50.0f;
int x3 = 60.0f;
int y3 = 10.0f;

void Display()
{
 glClear(GL_COLOR_BUFFER_BIT);
 glPushMatrix();

    glBegin(GL_TRIANGLES);
    glColor3f(0.0f,0.0f,1.0f);

    glVertex3f(x1, y1, 0.0f);
    glVertex3f(x2, y2, 0.0f);
    glVertex3f(x3, y3, 0.0f);


    glEnd( );
    glPopMatrix();
    glFlush();
}
void MyKeyboard(unsigned char key,int mouseX,int mouseY)
{
    if (key == 'x')
    {
        glScaled (0.5f ,1.0f ,1.0f);
        glutPostRedisplay();
        return;
    }
else if (key == 'y')
{
glScaled (1.0f ,0.5f ,1.0f);
        glutPostRedisplay();
        return;
}
else if (key == 'z')
{
glScaled (1.0f ,1.0f ,0.5f);
        glutPostRedisplay();
        return;
}
else if (key == 'X')
    {
        glScaled (1.5f ,1.0f ,1.0f);
        glutPostRedisplay();
        return;
    }
else if (key == 'Y')
{
glScaled (1.0f ,1.5f ,1.0f);
        glutPostRedisplay();
        return;
}
else if (key == 'Z')
{
glScaled (1.0f ,1.0f ,1.5f);
        glutPostRedisplay();
        return;
}
else
{
glScaled (1.0f ,1.0f ,1.0f);
        glutPostRedisplay();
        return;
}

}

void main(int argc,char** argr)
{
 glutInit(&argc,argr);
 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
 glutInitWindowSize(1000,600);
 glutInitWindowPosition(50,50);
 glutCreateWindow("The Scaling");
 glutDisplayFunc(Display);
 glutKeyboardFunc(MyKeyboard);

 glClearColor(0.0f,0.0f,0.0f,0.0f);
 gluOrtho2D(0.0,1000.0,0.0,600.0);
 glutMainLoop();
}

I think you get to know about the scaling transformation in OpenGL. For any question, query or suggestion put you comments.

20 comments

  1. vishnu
    Pls sir mail me the reports cloakrip@gmail.com I have to submit tmrw... and the first page is little blurred how to increase resolution
  2. vishnu
    And pleased let me know how to include 2 more colour's like red etc
  3. OpenGL Projects
    The video is clearly mentioned how to add more colors........... watch it again and again to learn
  4. vishnu
    Pls mail the reports ... yes I learned to add colors nice project pls mail the reports
  5. OpenGL Projects
    Download the report and try to make it in your own way for this projects most of the things are common. go to download page
  6. vishnu
    Oki just send the download link for reports here... just paste in ur comment
  7. OpenGL Projects
    get it from here http://www.openglprojects.in/p/downloads.html or you see from the menu
  8. vishnu
    The link is not working ... and tmrw I have to submit my reports so kindly send me the reports pls.. asp cloakrip@gmail.com
  9. nikhil hiremath
    sir plzzz can u mail me the code to this id plzz sir

    nikhil.hiremath425@gmail.com
  10. mfardeen
    Hey can u plz mail me d source code to my email mfardeen11@gmail.com m not able t download tat from download link
  11. sureshtiwari99
    Wholly how you made this so simple?
  12. Bhavani BV
    Can u plz mail the source code to bhavani26b @gmail.com
  13. Suheel Vallamkonda
    Can u plz mail the source code to suheel11@gmail.com
  14. Rajeev Kumar Singh
    Due to Time We will not able to mail you on the time so kindly download it, link is given at the end of post!


    It is very hard to each of you via mail, kindly cooperate
  15. Monica C
    The provided link is not working
  16. Pavithra
    sir can u pls send me the project report for singly linked list as in finding difficulty...pls mail it my email id chekodunpavi17@gmail.com
    thanks in advance sir......
  17. Rafah Dahlawi
    I liked this beautiful fountain
    Can I have this code to test it and edit on it ?
    Mail :
    rfrf.my.love@hotmai.com
  18. Rafah Dahlawi
    @Rajeev Kumar Singh see that men !

    "
    FLOWING FOUNTAIN

    Sorry for this step! but you need to prove you are Human not a Bot

    We get so many download requests to stop the auto download via bot or any software we need you to enter the Captcha.
    Fill the Captcha and get your requested file

    Note any error in dowloading the file please put your comment at desire article so we can fix the issues. Our Source code are free and always will be!

    "
  19. Adrian Polens
    Hej. Good project.
  20. Vishakha Wali
    hello sir... can u please explain me the functions used? am not understanding them
    my email:vishakhawali48@gmail.com

Join the conversation