Skip to content

Commit 6ca5360

Browse files
committed
Perform gamma transform (with fixed z0 of unity)
1 parent beae56b commit 6ca5360

File tree

1 file changed

+30
-2
lines changed

1 file changed

+30
-2
lines changed

src/traces/scattersmith/calc.js

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,32 @@ var arraysToCalcdata = require('../scatter/arrays_to_calcdata');
1010
var calcSelection = require('../scatter/calc_selection');
1111
var calcMarkerSize = require('../scatter/calc').calcMarkerSize;
1212

13+
function sq(x) {
14+
return x * x;
15+
}
16+
17+
function gammaTransformReal(re, im) {
18+
var denom = sq(re + 1.0) + sq(im);
19+
var result = (sq(re) + sq(im) - 1.0) / denom;
20+
return result;
21+
}
22+
23+
function gammaTransformImaginary(re, im) {
24+
var denom = sq(re + 1.0) + sq(im);
25+
var result = (2 * im) / denom;
26+
return result;
27+
}
28+
29+
function cart2pol(re, im) {
30+
var r = Math.sqrt(sq(re) + sq(im));
31+
var theta = Math.atan2(im, re);
32+
33+
return {
34+
r: r,
35+
theta: theta,
36+
};
37+
}
38+
1339
module.exports = function calc(gd, trace) {
1440
var fullLayout = gd._fullLayout;
1541
var subplotId = trace.subplot;
@@ -26,8 +52,10 @@ module.exports = function calc(gd, trace) {
2652
var cdi = cd[i] = {};
2753

2854
if(isNumeric(re) && isNumeric(im)) {
29-
cdi.re = re;
30-
cdi.im = im;
55+
var pol = cart2pol(gammaTransformReal(re, im), gammaTransformImaginary(re, im));
56+
57+
cdi.re = pol.r;
58+
cdi.im = pol.theta;
3159
} else {
3260
cdi.re = BADNUM;
3361
}

0 commit comments

Comments
 (0)