Project

General

Profile

Revision 1049

Robots now draw in correct location.

View differences:

gtk_environment_view.c
367 367
	double upy = world->win.p1.x;
368 368
	double xwidth = world->win.p2.x - leftx;
369 369
	double yheight = world->win.p2.y - upy;
370

  
371

  
372 370
	int width, height;
373 371
	gdk_drawable_get_size(drawable, &width, &height);
374
	
375 372
	if (xwidth / width < yheight / height)
376 373
		width = (int)(height / yheight * xwidth);
377 374
	else
......
412 409
}
413 410

  
414 411
static void draw_robot(GdkDrawable* drawable, GdkGC* gc, 
415
                        float x, float y, float angle) 
412
                        float x, float y, float angle)
416 413
{
417 414
	if (!drawable || !gc)
418 415
		return;
416

  
417
	double leftx = world.win.p1.x;
418
	double upy = world.win.p1.x;
419
	double xwidth = world.win.p2.x - leftx;
420
	double yheight = world.win.p2.y - upy;
421
	int width, height;
422
	gdk_drawable_get_size(drawable, &width, &height);
423
	if (xwidth / width < yheight / height)
424
		width = (int)(height / yheight * xwidth);
425
	else
426
		height = (int)(width / xwidth * yheight);
427

  
428
	x = ((x - leftx) / xwidth * width);
429
	y = ((y - upy) / yheight * height);
419 430
	int x_c = (int)x - ENVIRONMENT_ROBOT_DIAMETER / 2;
420 431
	int y_c = (int)y - ENVIRONMENT_ROBOT_DIAMETER / 2;
421 432

  
......
423 434
	  	ENVIRONMENT_ROBOT_DIAMETER, ENVIRONMENT_ROBOT_DIAMETER, 
424 435
        0, 360*64);
425 436

  
437
	//TODO: scale radius
426 438
	gdk_draw_line(drawable, gc, x, y, 
427 439
		x + (ENVIRONMENT_ROBOT_DIAMETER - 10) * cos(-angle),
428 440
		y - (ENVIRONMENT_ROBOT_DIAMETER - 10) * sin(-angle));

Also available in: Unified diff