what does this mean

Jun 2, 2010 at 8:47pm

1
2
int i , j
c = ((((i&0x8)==0)^((j&0x8))==0))*255

What does it mean ???
Last edited on Jun 2, 2010 at 9:26pm
Jun 2, 2010 at 8:51pm
Looks like some hexadecimal adresses and pointer referencing.

But then again, I may just try to sound smart and have no actual idea of what i'm talking about.
Jun 2, 2010 at 8:53pm
Those could be bitwise operators, or maybe I just need a big cup of coffee as those &s actually reference operators.
http://cplusplus.com/doc/tutorial/operators/
http://cplusplus.com/doc/tutorial/pointers/

Though if I had to choose one, it would be the bitwise operators.

-Albatross
Last edited on Jun 2, 2010 at 9:39pm
Jun 2, 2010 at 8:59pm
As Albatross pointed out, it is doing a few bitwise operations.

Consider 0x8 in binary: 1000b. (i&0x8) reads, "If the 4th bit of i is set". Etc.

I didn't work out what it really does but I'm [wildly] guessing this makes some kind of contrasting color value for something...
Jun 2, 2010 at 9:21pm
Thanks for everyone, so c is the type of integer i guess if the 4th bit of i or j = 1 or both of them = 1 , it perhaps refer c to 255 otherwise to 0 , is that right ???
Last edited on Jun 2, 2010 at 9:24pm
Jun 2, 2010 at 9:24pm
No.

If the 4th bit of i is not set in either i or j (but not both), then c is 255, else 0.

Frankly, I'm not 100% sure why anyone would want to do this, but...

-Albatross
Jun 2, 2010 at 9:32pm
thanks i have already understood operator ^ is bitwise XOR ( ^ ) not OR (|). this code above is used for working with pixel , thanks you again
Jun 2, 2010 at 9:41pm
I still don't get what it's for. Working with pixels... that could mean anything.

-Albatross
Last edited on Jun 2, 2010 at 9:43pm
Jun 2, 2010 at 9:47pm
You try reading this code, It is the openGL and cheakImage is an array that hold data for initially drawing image in lower left corner of the window. Frankly i haven't understood yet what it means in enough
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include <stdlib.h>
#include <stdio.h>
#define checkImageWidth 64
#define checkImageHeight 64
GLubyte checkImage[checkImageHeight][checkImageWidth][3];
static GLdouble zoomFactor = 1.0;
static GLint height;
void makeCheckImage(void)
{
int i, j, c;
for (i = 0; i < checkImageHeight; i++) {
for (j = 0; j < checkImageWidth; j++) {
c = ((((i&0x8)==0)^((j&0x8))==0))*255;
checkImage[i][j][0] = (GLubyte) c;
checkImage[i][j][1] = (GLubyte) c;
checkImage[i][j][2] = (GLubyte) c;
}
}
}
void init(void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_FLAT);
makeCheckImage();
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glRasterPos2i(0, 0);
glDrawPixels(checkImageWidth, checkImageHeight, GL_RGB,
GL_UNSIGNED_BYTE, checkImage);
glFlush();
}
void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
height = (GLint) h;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, (GLdouble) w, 0.0, (GLdouble) h);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void motion(int x, int y)
{
static GLint screeny;
screeny = height - (GLint) y;
glRasterPos2i (x, screeny);
glPixelZoom (zoomFactor, zoomFactor);
glCopyPixels (0, 0, checkImageWidth, checkImageHeight,
GL_COLOR);
glPixelZoom (1.0, 1.0);
glFlush ();
}
void keyboard(unsigned char key, int x, int y)
{
switch (key) {
case 'r':
case 'R':
zoomFactor = 1.0;
glutPostRedisplay();
printf ("zoomFactor reset to 1.0\n");
break;
case 'z':
zoomFactor += 0.5;
if (zoomFactor >= 3.0)
zoomFactor = 3.0;
printf ("zoomFactor is now %4.1f\n", zoomFactor);
break;
case 'Z':
zoomFactor -= 0.5;
if (zoomFactor <= 0.5)
zoomFactor = 0.5;
printf ("zoomFactor is now %4.1f\n", zoomFactor);
break;
case 27:
exit(0);
break;
default:
break;
}
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(250, 250);
glutInitWindowPosition(100, 100);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutKeyboardFunc(keyboard);
glutMotionFunc(motion);
glutMainLoop();
return 0;
}
Last edited on Jun 2, 2010 at 11:18pm
Topic archived. No new replies allowed.