| 677 | |
| 678 | |
| 679 | def update_rotation(self, cam): |
| 680 | cam:Camera # CodeUndone VsCode |
| 681 | if self.type == 1: |
| 682 | # 0, 0, -1 |
| 683 | # 0, 1, 0 X cam.rotation |
| 684 | # 1, 0, 0 |
| 685 | self.rotation1 = ( |
| 686 | (-cam.rotation[0][2], -cam.rotation[1][2], -cam.rotation[2][2],), |
| 687 | ( cam.rotation[0][1], cam.rotation[1][1], cam.rotation[2][1],), |
| 688 | ( cam.rotation[0][0], cam.rotation[1][0], cam.rotation[2][0],), |
| 689 | ) |
| 690 | # 1, 0, 0 |
| 691 | # 0, 1, 0 X cam.rotation |
| 692 | # 0, 0, 1 |
| 693 | self.rotation2 = ( |
| 694 | ( cam.rotation[0][0], cam.rotation[1][0], cam.rotation[2][0],), |
| 695 | ( cam.rotation[0][1], cam.rotation[1][1], cam.rotation[2][1],), |
| 696 | ( cam.rotation[0][2], cam.rotation[1][2], cam.rotation[2][2],), |
| 697 | ) |
| 698 | # 0, 0, 1 |
| 699 | # 0, 1, 0 X cam.rotation |
| 700 | # -1, 0, 0 |
| 701 | self.rotation3 = ( |
| 702 | ( cam.rotation[0][2], cam.rotation[1][2], cam.rotation[2][2],), |
| 703 | ( cam.rotation[0][1], cam.rotation[1][1], cam.rotation[2][1],), |
| 704 | (-cam.rotation[0][0], -cam.rotation[1][0], -cam.rotation[2][0],), |
| 705 | ) |
| 706 | # -1, 0, 0 |
| 707 | # 0, 1, 0 X cam.rotation |
| 708 | # 0, 0, -1 |
| 709 | self.rotation4 = ( |
| 710 | (-cam.rotation[0][0], -cam.rotation[1][0], -cam.rotation[2][0],), |
| 711 | ( cam.rotation[0][1], cam.rotation[1][1], cam.rotation[2][1],), |
| 712 | (-cam.rotation[0][2], -cam.rotation[1][2], -cam.rotation[2][2],), |
| 713 | ) |
| 714 | # 1, 0, 0 |
| 715 | # 0, 0, -1 X cam.rotation |
| 716 | # 0, 1, 0 |
| 717 | self.rotation5 = ( |
| 718 | ( cam.rotation[0][0], cam.rotation[1][0], cam.rotation[2][0],), |
| 719 | (-cam.rotation[0][2], -cam.rotation[1][2], -cam.rotation[2][2],), |
| 720 | ( cam.rotation[0][1], cam.rotation[1][1], cam.rotation[2][1],), |
| 721 | ) |
| 722 | # 1, 0, 0 |
| 723 | # 0, 0, 1 X cam.rotation |
| 724 | # 0, -1, 0 |
| 725 | self.rotation6 = ( |
| 726 | ( cam.rotation[0][0], cam.rotation[1][0], cam.rotation[2][0],), |
| 727 | ( cam.rotation[0][2], cam.rotation[1][2], cam.rotation[2][2],), |
| 728 | (-cam.rotation[0][1], -cam.rotation[1][1], -cam.rotation[2][1],), |
| 729 | ) |
| 730 | elif self.type in (0, 2): |
| 731 | if abs(self.diry) != 1: |
| 732 | xx = sqrt(self.dirz*self.dirz / (self.dirx*self.dirx + self.dirz*self.dirz)) |
| 733 | xz = -self.dirx * xx / self.dirz |
| 734 | else: |
| 735 | xx = 1 |
| 736 | xz = 0 |