Mercurial Hosting > traffic-intelligence
comparison trafficintelligence/moving.py @ 1217:5038c357b57f
updating code for direct computation (very slow solver)
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Tue, 16 May 2023 22:12:39 -0400 |
parents | 01c24c1cdb70 |
children | 1f0b1fc172f8 |
comparison
equal
deleted
inserted
replaced
1216:8356e15fd691 | 1217:5038c357b57f |
---|---|
422 for i in range(4): | 422 for i in range(4): |
423 for j in range(4): | 423 for j in range(4): |
424 p0_x, p0_y = x_bbox_2[i], y_bbox_2[i] | 424 p0_x, p0_y = x_bbox_2[i], y_bbox_2[i] |
425 p1_x, p1_y = x_bbox_1[line[j][0]], y_bbox_1[line[j][0]] | 425 p1_x, p1_y = x_bbox_1[line[j][0]], y_bbox_1[line[j][0]] |
426 p2_x, p2_y = x_bbox_1[line[j][1]], y_bbox_1[line[j][1]] | 426 p2_x, p2_y = x_bbox_1[line[j][1]], y_bbox_1[line[j][1]] |
427 f = (p2_x - p1_x) * (p0_y - p1_y) - (p0_x - p1_x) * (p2_y - p1_y) | 427 p0_x_t = p0_x + v_2_x * t |
428 p0_y_t = p0_y + v_2_y * t | |
429 p1_x_t = p1_x + v_1_x * t | |
430 p1_y_t = p1_y + v_1_y * t | |
431 p2_x_t = p2_x + v_1_x * t | |
432 p2_y_t = p2_y + v_1_y * t | |
433 f = (p2_x_t - p1_x_t) * (p0_y_t - p1_y_t) - (p0_x_t - p1_x_t) * (p2_y_t - p1_y_t) | |
428 collision_t = solve(f, t, set=True, dict=True) | 434 collision_t = solve(f, t, set=True, dict=True) |
429 if collision_t and collision_t[0][t] >= 0: | 435 if collision_t and collision_t[0][t] >= 0: |
430 collision_t = collision_t[0][t] | 436 collision_t = collision_t[0][t] |
431 print(f'collision_t: {collision_t} >>>>>>>>>') | 437 #print(f'collision_t: {collision_t} >>>>>>>>>') |
432 x_bbox_1_new, y_bbox_1_new = NewFourPoints(bbox_1, collision_t, v_1_x, v_1_y) | 438 x_bbox_1_new, y_bbox_1_new = NewFourPoints(bbox_1, collision_t, v_1_x, v_1_y) |
433 x_bbox_2_new, y_bbox_2_new = NewFourPoints(bbox_2, collision_t, v_2_x, v_2_y) | 439 x_bbox_2_new, y_bbox_2_new = NewFourPoints(bbox_2, collision_t, v_2_x, v_2_y) |
434 p0_x, p0_y = x_bbox_2_new[i], y_bbox_2_new[i] | 440 p0_x, p0_y = x_bbox_2_new[i], y_bbox_2_new[i] |
435 p1_x, p1_y = x_bbox_1_new[line[j][0]], y_bbox_1_new[line[j][0]] | 441 p1_x, p1_y = x_bbox_1_new[line[j][0]], y_bbox_1_new[line[j][0]] |
436 p2_x, p2_y = x_bbox_1_new[line[j][1]], y_bbox_1_new[line[j][1]] | 442 p2_x, p2_y = x_bbox_1_new[line[j][1]], y_bbox_1_new[line[j][1]] |
437 min_x, max_x = min(p1_x, p2_x), max(p1_x, p2_x) | 443 min_x, max_x = min(p1_x, p2_x), max(p1_x, p2_x) |
438 min_y, max_y = min(p1_y, p2_y), max(p1_y, p2_y) | 444 min_y, max_y = min(p1_y, p2_y), max(p1_y, p2_y) |
439 if min_x == max_x: | 445 if min_x == max_x: |
440 if min_y <= p0_y <= max_y: | 446 if min_y <= p0_y <= max_y: |
441 t_total.append(collision_t) | 447 t_total.append(collision_t) |
442 | |
443 elif min_y == max_y: | 448 elif min_y == max_y: |
444 if min_x <= p0_x <= max_x: | 449 if min_x <= p0_x <= max_x: |
445 t_total.append(collision_t) | 450 t_total.append(collision_t) |
446 | |
447 else: | 451 else: |
448 if min_x <= p0_x <= max_x or min_y <= p0_y <= max_y: | 452 if min_x <= p0_x <= max_x or min_y <= p0_y <= max_y: |
449 t_total.append(collision_t) | 453 t_total.append(collision_t) |
450 x_temps = x_bbox_2 | 454 |
451 x_bbox_2 = x_bbox_1 | 455 x_temps = x_bbox_2 |
452 x_bbox_1 = x_temps | 456 x_bbox_2 = x_bbox_1 |
453 # print(f'Change bounding box1 and box2 >>>>>>>>>>>>>>>>>>>\n\n\n') | 457 x_bbox_1 = x_temps |
458 # print(f'Change bounding box1 and box2 >>>>>>>>>>>>>>>>>>>\n\n\n') | |
454 for i in range(4): | 459 for i in range(4): |
455 for j in range(4): | 460 for j in range(4): |
456 p0_x, p0_y = x_bbox_2[i], y_bbox_2[i] | 461 p0_x, p0_y = x_bbox_2[i], y_bbox_2[i] |
457 p1_x, p1_y = x_bbox_1[line[j][0]], y_bbox_1[line[j][0]] | 462 p1_x, p1_y = x_bbox_1[line[j][0]], y_bbox_1[line[j][0]] |
458 p2_x, p2_y = x_bbox_1[line[j][1]], y_bbox_1[line[j][1]] | 463 p2_x, p2_y = x_bbox_1[line[j][1]], y_bbox_1[line[j][1]] |
459 f = (p2_x - p1_x) * (p0_y - p1_y) - (p0_x - p1_x) * (p2_y - p1_y) | 464 p0_x_t = p0_x + v_2_x * t |
465 p0_y_t = p0_y + v_2_y * t | |
466 p1_x_t = p1_x + v_1_x * t | |
467 p1_y_t = p1_y + v_1_y * t | |
468 p2_x_t = p2_x + v_1_x * t | |
469 p2_y_t = p2_y + v_1_y * t | |
470 f = (p2_x_t - p1_x_t) * (p0_y_t - p1_y_t) - (p0_x_t - p1_x_t) * (p2_y_t - p1_y_t) | |
460 collision_t = solve(f, t, set=True, dict=True) | 471 collision_t = solve(f, t, set=True, dict=True) |
461 if collision_t and collision_t[0][t] >= 0: | 472 if collision_t and collision_t[0][t] >= 0: |
462 collision_t = collision_t[0][t] | 473 collision_t = collision_t[0][t] |
463 # print(f'collision_t: {collision_t} >>>>>>>>>') | 474 # print(f'collision_t: {collision_t} >>>>>>>>>') |
464 x_bbox_1_new, y_bbox_1_new = NewFourPoints(bbox_1, collision_t) | 475 x_bbox_1_new, y_bbox_1_new = NewFourPoints(bbox_1, collision_t, v_1_x, v_1_y) |
465 x_bbox_2_new, y_bbox_2_new = NewFourPoints(bbox_2, collision_t) | 476 x_bbox_2_new, y_bbox_2_new = NewFourPoints(bbox_2, collision_t, v_2_x, v_2_y) |
466 p0_x, p0_y = x_bbox_2_new[i], y_bbox_2_new[i] | 477 p0_x, p0_y = x_bbox_2_new[i], y_bbox_2_new[i] |
467 p1_x, p1_y = x_bbox_1_new[line[j][0]], y_bbox_1_new[line[j][0]] | 478 p1_x, p1_y = x_bbox_1_new[line[j][0]], y_bbox_1_new[line[j][0]] |
468 p2_x, p2_y = x_bbox_1_new[line[j][1]], y_bbox_1_new[line[j][1]] | 479 p2_x, p2_y = x_bbox_1_new[line[j][1]], y_bbox_1_new[line[j][1]] |
469 min_x, max_x = min(p1_x, p2_x), max(p1_x, p2_x) | 480 min_x, max_x = min(p1_x, p2_x), max(p1_x, p2_x) |
470 min_y, max_y = min(p1_y, p2_y), max(p1_y, p2_y) | 481 min_y, max_y = min(p1_y, p2_y), max(p1_y, p2_y) |