summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2020-03-26 13:37:13 +0100
committerPaul B Mahol <onemda@gmail.com>2020-03-26 13:37:13 +0100
commit7931e766ade210b3960aba987497d5bd2eeadcf4 (patch)
treec77dd84358157d00f2a14f76252675a49bf4c958
parentb5dd964cdca090aed0fc6068c8967c92c594d9aa (diff)
avfilter/vf_v360: improve sg output format
-rw-r--r--libavfilter/vf_v360.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/libavfilter/vf_v360.c b/libavfilter/vf_v360.c
index fe0c9f3c4d..a16fd17574 100644
--- a/libavfilter/vf_v360.c
+++ b/libavfilter/vf_v360.c
@@ -1696,11 +1696,13 @@ static int stereographic_to_xyz(const V360Context *s,
{
const float x = ((2.f * i + 1.f) / width - 1.f) * s->flat_range[0];
const float y = ((2.f * j + 1.f) / height - 1.f) * s->flat_range[1];
- const float xy = x * x + y * y;
+ const float r = hypotf(x, y);
+ const float theta = atanf(r) * 2.f;
+ const float sin_theta = sinf(theta);
- vec[0] = 2.f * x / (1.f + xy);
- vec[1] = (-1.f + xy) / (1.f + xy);
- vec[2] = 2.f * y / (1.f + xy);
+ vec[0] = x / r * sin_theta;
+ vec[1] = -y / r * sin_theta;
+ vec[2] = -cosf(theta);
normalize_vector(vec);