(v1: torch.Tensor, v2: torch.Tensor, eps: float = 1e-12)
| 34 | return torch.where(err < beta, 0.5 * err.square() / beta, err - 0.5 * beta) |
| 35 | |
| 36 | def angle_diff_vec3(v1: torch.Tensor, v2: torch.Tensor, eps: float = 1e-12): |
| 37 | return torch.atan2(torch.cross(v1, v2, dim=-1).norm(dim=-1) + eps, (v1 * v2).sum(dim=-1)) |
| 38 | |
| 39 | # --------------------------------------------------------------------------- |
| 40 | # PointLoss: Scale-invariant Local Pointmap |