| 554 | } |
| 555 | |
| 556 | bool Model::Load(vector<vec3d> vertices, vector<vec3i> face_indices) |
| 557 | { |
| 558 | double x_min = INF, x_max = -INF, y_min = INF, y_max = -INF, z_min = INF, z_max = -INF; |
| 559 | for (int i = 0; i < (int)vertices.size(); ++i) |
| 560 | { |
| 561 | points.push_back({vertices[i][0], vertices[i][1], vertices[i][2]}); |
| 562 | |
| 563 | x_min = min(x_min, vertices[i][0]); |
| 564 | x_max = max(x_max, vertices[i][0]); |
| 565 | y_min = min(y_min, vertices[i][1]); |
| 566 | y_max = max(y_max, vertices[i][1]); |
| 567 | z_min = min(z_min, vertices[i][2]); |
| 568 | z_max = max(z_max, vertices[i][2]); |
| 569 | } |
| 570 | |
| 571 | bbox[0] = x_min; |
| 572 | bbox[1] = x_max; |
| 573 | bbox[2] = y_min; |
| 574 | bbox[3] = y_max; |
| 575 | bbox[4] = z_min; |
| 576 | bbox[5] = z_max; |
| 577 | |
| 578 | for (int i = 0; i < (int)face_indices.size(); ++i) |
| 579 | { |
| 580 | triangles.push_back({face_indices[i][0], face_indices[i][1], face_indices[i][2]}); |
| 581 | } |
| 582 | |
| 583 | return true; |
| 584 | } |
| 585 | |
| 586 | array<array<double, 3>, 3> Model::PCA() |
| 587 | { |