# Thread: 2D rotating map in 3D game C

1. ## 2D rotating map in 3D game C  I have a 3D game with a simple opengl game engine. Each object in the game has an X,Y,Z position.

I want to make a rotating map of an overview of the objects positions. I can make this work fine for a simple non rotating model.

I would like to rotate the 2D overview map as the player rotates but I don't seem to be able to get it correct.

Viewed from above the positions of the map points would be X and Z (Y is height in the game). The center point is 0 with negative values to the left.

The angle is 0 to 359 inclusive.

The 2D map (or angle=0) of the mapR() version give the fist "flat" image, but rotation gives the second image.

Can anyone see what I am doing wrong ?
Thanks,
Jon

C Source ...

Code:
```void rotate2d(JSGEfloat angle, JSGEfloat* X, JSGEfloat* Y)
{
float   ra;
ra = (angle/360) * (2*M_PI);
*X = *X * cos(ra) - *Y * sin(ra);
*Y = *Y * cos(ra) + *X * sin(ra);
}```

Code:
```void instr_mapR(JSGEfloat angle, JSGEfloat ox, JSGEfloat oy, int w, int h, int clearbackground, JSGEfloat bRf, JSGEfloat bGf, JSGEfloat bBf,
JSGEfloat xmin, JSGEfloat ymin, JSGEfloat xmax, JSGEfloat ymax)
{
int oi=0;
JSGEfloat X,Z;

if (clearbackground==TRUE)
draw_2d_line_pretend_rectange(ox, oy, w, h, -xmin*6, -ymin*6, xmax*6, ymax*6, bRf, bGf, bBf);

for (oi=0;oi<jsge_obj_top;oi++)                                                         // for all possible objects
{                                                                                       // in use and not a star ?
if (sgeo[oi].inuse==TRUE && (sgeo[oi].visible==TRUE || sgeo[oi].tagnum==8000))  // Object active or the player itself
{
if (sgeo[oi].instr_map_show==TRUE)
{
X=sgeo[oi].posrot.X;                                            // lr
//Y=sgeo[oi].posrot.Y;                                          // ud
Z=sgeo[oi].posrot.Z;                                            // fb

//printf("X=%f\tZ=%f\n",X,Z); fflush(stdout);
rotate2d(angle, &X, &Z);
draw_2d_cross_pretend_pixels(ox, oy, w, h, X*6, -Z*6,
sgeo[oi].instr_map_clr_Rf, sgeo[oi].instr_map_clr_Gf, sgeo[oi].instr_map_clr_Bf,
xmin, ymin, xmax, ymax);
}
}
}
}``` 2. ## Fixed

Wrong type of rotation, this fixed it.

Code:
```void rotatesp(JSGEfloat angle, JSGEfloat* X, JSGEfloat* Y)
{
float   ra;
ra = (angle/360) * (2*M_PI);

float normalx=*X;
float normaly=*Y;
*X = normalx * cos(ra) - normaly * sin(ra);
*Y = normalx * sin(ra) + normaly * cos(ra);
}```
This forum section seems empty, maybe I posted this in the wrong place? Popular pages Recent additions game, int, jsgefloat, map, rotating 