564 vertex origin; |
564 vertex origin; |
565 std::vector<vertex*> queue; |
565 std::vector<vertex*> queue; |
566 const double angle = (pi * currentGrid ().confs[Grid::Angle]->value) / 360; |
566 const double angle = (pi * currentGrid ().confs[Grid::Angle]->value) / 360; |
567 |
567 |
568 // ref: http://en.wikipedia.org/wiki/Transformation_matrix#Rotation_2 |
568 // ref: http://en.wikipedia.org/wiki/Transformation_matrix#Rotation_2 |
569 matrix transform ( |
569 matrix<3> transform ({ |
570 (l * l * (1 - cos (angle))) + cos (angle), |
570 (l * l * (1 - cos (angle))) + cos (angle), |
571 (m * l * (1 - cos (angle))) - (n * sin (angle)), |
571 (m * l * (1 - cos (angle))) - (n * sin (angle)), |
572 (n * l * (1 - cos (angle))) + (m * sin (angle)), |
572 (n * l * (1 - cos (angle))) + (m * sin (angle)), |
573 |
573 |
574 (l * m * (1 - cos (angle))) + (n * sin (angle)), |
574 (l * m * (1 - cos (angle))) + (n * sin (angle)), |
576 (n * m * (1 - cos (angle))) - (l * sin (angle)), |
576 (n * m * (1 - cos (angle))) - (l * sin (angle)), |
577 |
577 |
578 (l * n * (1 - cos (angle))) - (m * sin (angle)), |
578 (l * n * (1 - cos (angle))) - (m * sin (angle)), |
579 (m * n * (1 - cos (angle))) + (l * sin (angle)), |
579 (m * n * (1 - cos (angle))) + (l * sin (angle)), |
580 (n * n * (1 - cos (angle))) + cos (angle) |
580 (n * n * (1 - cos (angle))) + cos (angle) |
581 ); |
581 }); |
582 |
582 |
583 // Calculate center vertex |
583 // Calculate center vertex |
584 for (LDObject* obj : sel) { |
584 for (LDObject* obj : sel) { |
585 if (obj->getType () == OBJ_Subfile) |
585 if (obj->getType () == OBJ_Subfile) |
586 box << static_cast<LDSubfile*> (obj)->vPosition; |
586 box << static_cast<LDSubfile*> (obj)->vPosition; |