Mercurial > hg > nsaunier > 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) |
