| Conditions | 2 |
| Total Lines | 23 |
| Code Lines | 22 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 0 | ||
| 1 | import numpy as np |
||
| 30 | @staticmethod |
||
| 31 | def _generate_image(size: int) -> ScalarImage: |
||
| 32 | if size % 2 == 1: |
||
| 33 | fin = (size - 1) // 2 |
||
| 34 | ini = -fin |
||
| 35 | else: |
||
| 36 | fin = size // 2 |
||
| 37 | ini = -fin + 1 |
||
| 38 | x = np.arange(ini, fin) |
||
| 39 | y = np.arange(ini, fin) |
||
| 40 | z = np.arange(ini, fin) |
||
| 41 | X, Y, Z = np.meshgrid(x, y, z) |
||
| 42 | r = np.sqrt(X**2 + Y**2 + Z**2) |
||
| 43 | km = 0.8 * np.pi |
||
| 44 | rm = ini |
||
| 45 | w = rm / 10 |
||
| 46 | term1 = np.sin((km * r**2) / (2 * rm)) |
||
| 47 | term2 = 0.5 * np.tanh((rm - r) / w) + 0.5 |
||
| 48 | g = term1 * term2 |
||
| 49 | affine = np.eye(4) |
||
| 50 | origin = np.array([ini, ini, ini]) |
||
| 51 | affine[:3, 3] = origin |
||
| 52 | return ScalarImage(tensor=g[np.newaxis], affine=affine) |
||
| 53 |