(v, theta, **kwargs)
| 119 | **kwargs) |
| 120 | |
| 121 | def rotate3d(v, theta, **kwargs): |
| 122 | vx = v[..., 0]; vy = v[..., 1]; vz = v[..., 2] |
| 123 | s = torch.sin(theta); c = torch.cos(theta); cc = 1 - c |
| 124 | return matrix( |
| 125 | [vx*vx*cc+c, vx*vy*cc-vz*s, vx*vz*cc+vy*s, 0], |
| 126 | [vy*vx*cc+vz*s, vy*vy*cc+c, vy*vz*cc-vx*s, 0], |
| 127 | [vz*vx*cc-vy*s, vz*vy*cc+vx*s, vz*vz*cc+c, 0], |
| 128 | [0, 0, 0, 1], |
| 129 | **kwargs) |
| 130 | |
| 131 | def translate2d_inv(tx, ty, **kwargs): |
| 132 | return translate2d(-tx, -ty, **kwargs) |