Bwahaha. Excellent observation.
Quite right. I mistakenly calculated only sin φ, not sin φ + 1.
More later.
— dean
Bwahaha. Excellent observation.
Quite right. I mistakenly calculated only sin φ, not sin φ + 1.
Interesting observation, which I hereby confirm. I stuck with sin β, cos β because those values are already available from the iteration’s final calculation. If you don’t care about the extra computational cost for sin(2 β), no sign adjustments are needed. I’ll note that in the paper.Milo wrote: ↑Mon Jan 31, 2022 9:50 pm Incidentally, I didn't need to do anything about the sign in (1 ± 2 sin β cos β) (in the computation of ψ). I just used a consistent (1 - sin(2β)) and it works fine. In fact, using a plus sign gives nonsensical results that zoom in on a distorted Africa and ignore everything else.
Huh? 2 sin β cos β = sin(2 β) for all β. Even the ones you should never reach. You'll have cos β available if you cached it from doing the Newton-Raphson iteration. However, it's a hassle to save the cosine of every iteration to memory when you're only going to use the last one, so I didn't bother.daan wrote: ↑Tue Feb 01, 2022 1:37 pmInteresting observation, which I hereby confirm. I stuck with sin β, cos β because those values are already available from the iteration’s final calculation. If you don’t care about the extra computational cost for sin(2 β), no sign adjustments are needed. I’ll note that in the paper.
What I can actually confirm is that I’m paying insufficient attention. There was a time when the sign adjustment was needed before I’d distilled the formulas down so much, but I never revisited the matter when I reached the current state.Milo wrote: ↑Tue Feb 01, 2022 2:17 pmHuh? 2 sin β cos β = sin(2 β) for all β. Even the ones you should never reach.daan wrote: ↑Tue Feb 01, 2022 1:37 pmInteresting observation, which I hereby confirm. I stuck with sin β, cos β because those values are already available from the iteration’s final calculation. If you don’t care about the extra computational cost for sin(2 β), no sign adjustments are needed. I’ll note that in the paper.
The points for which z ∉ E can be detected by β’s value thus: If we treat β as its own projection, we find that it has an oval shape bounded by the 180th meridian on both sides (see earlier images). If we project its boundary and designate it β_b, we find that
Hmm, so while β looks oval-ish, it's not actually a proper ellipse.daan wrote: ↑Tue Feb 01, 2022 5:06 pmThe points for which z ∉ E can be detected by β’s value thus: If we treat β as its own projection, we find that it has an oval shape bounded by the 180th meridian on both sides (see earlier images). If we project its boundary and designate it β_b, we find that
ℝ[β_b(φ)] = φ / 2
𝕀[(β_b(φ)] = (1/2) ln (2 cos φ + 2 √(cos φ + cos²φ) + 1)
This doesn't seem to be the whole story. It cuts off most of the out-of-bounds projection, but it still leaves me with this: When I also add a requirement that |ℝ[β]| ≤ π/4, I get this:
I’m confused about how that could happen. The heuristic I give limits the range of β to the boundary of β. That must result in a 1-to-1 mapping of the sphere. The results you show imply a 1-to-many mapping of the sphere.
Well, that's easy enough from reading pixel coordinates in an image editing program.
Code: Select all
(400,94)
E/2i = +0.406957-0.000666i
beta[1] = +0.982480-0.001608i
beta[2] = -0.007348-0.005607i
beta[3] = +0.982518-0.001469i
beta[4] = -0.007153-0.004853i
beta[5] = +0.982526-0.001491i
beta[6] = -0.007106-0.004971i
beta[7] = +0.982523-0.001489i
beta[8] = -0.007122-0.004960i
beta[9] = +0.982524-0.001489i
beta[10] = -0.007118-0.004960i
beta[11] = +0.982524-0.001489i
beta[12] = -0.007119-0.004960i
cos(2*real(beta)) = 0.999899
ln(sqrt(cos+1)+sqrt(cos)) = 0.881338 >= |imag(beta)| = 0.004960
(400,95)
E/2i = +0.405624-0.000666i
beta[1] = +0.979264-0.001608i
beta[2] = -0.018714-0.005761i
beta[3] = +0.979800-0.001241i
beta[4] = -0.015771-0.003704i
beta[5] = +0.979661-0.001410i
beta[6] = -0.016532-0.004642i
beta[7] = +0.979690-0.001348i
beta[8] = -0.016376-0.004296i
beta[9] = +0.979686-0.001369i
beta[10] = -0.016393-0.004416i
beta[11] = +0.979685-0.001362i
beta[12] = -0.016401-0.004378i
cos(2*real(beta)) = 0.999462
ln(sqrt(cos+1)+sqrt(cos)) = 0.881183 >= |imag(beta)| = 0.004378
(400,96)
E/2i = +0.404292-0.000666i
beta[1] = +0.976048-0.001608i
beta[2] = -0.030395-0.005923i
beta[3] = +0.977560-0.000990i
beta[4] = -0.021903-0.002362i
beta[5] = +0.976851-0.001433i
beta[6] = -0.025867-0.004880i
beta[7] = +0.977142-0.001177i
beta[8] = -0.024239-0.003427i
beta[9] = +0.977024-0.001325i
beta[10] = -0.024897-0.004266i
beta[11] = +0.977068-0.001246i
beta[12] = -0.024652-0.003817i
cos(2*real(beta)) = 0.998785
ln(sqrt(cos+1)+sqrt(cos)) = 0.880944 >= |imag(beta)| = 0.003817
(400,97)
E/2i = +0.402960-0.000666i
beta[1] = +0.972832-0.001608i
beta[2] = -0.042408-0.006093i
beta[3] = +0.975848-0.000712i
beta[4] = -0.025152-0.000816i
beta[5] = +0.973901-0.001540i
beta[6] = -0.036225-0.005622i
beta[7] = +0.975014-0.000907i
beta[8] = -0.029877-0.001943i
beta[9] = +0.974341-0.001411i
beta[10] = -0.033704-0.004855i
beta[11] = +0.974724-0.001047i
beta[12] = -0.031527-0.002750i
cos(2*real(beta)) = 0.998013
ln(sqrt(cos+1)+sqrt(cos)) = 0.880670 >= |imag(beta)| = 0.002750
(400,98)
E/2i = +0.401628-0.000666i
beta[1] = +0.969616-0.001608i
beta[2] = -0.054769-0.006272i
beta[3] = +0.974721-0.000403i
beta[4] = -0.025096+0.000941i
beta[5] = +0.970676-0.001690i
beta[6] = -0.048470-0.006677i
beta[7] = +0.973568-0.000481i
beta[8] = -0.031675+0.000489i
beta[9] = +0.971315-0.001664i
beta[10] = -0.044706-0.006472i
beta[11] = +0.972961-0.000605i
beta[12] = -0.035170-0.000232i
cos(2*real(beta)) = 0.997527
ln(sqrt(cos+1)+sqrt(cos)) = 0.880498 >= |imag(beta)| = 0.000232
(400,99)
E/2i = +0.400296-0.000666i
beta[1] = +0.966400-0.001608i
beta[2] = -0.067499-0.006461i
beta[3] = +0.974246-0.000059i
beta[4] = -0.021315+0.002908i
beta[5] = +0.967146-0.001818i
beta[6] = -0.062926-0.007681i
beta[7] = +0.973149+0.000101i
beta[8] = -0.027562+0.003839i
beta[9] = +0.967652-0.001970i
beta[10] = -0.059844-0.008550i
beta[11] = +0.972451+0.000195i
beta[12] = -0.031573+0.004398i
cos(2*real(beta)) = 0.998007
ln(sqrt(cos+1)+sqrt(cos)) = 0.880668 >= |imag(beta)| = 0.004398
(400,100)
E/2i = +0.398964-0.000666i
beta[1] = +0.963184-0.001608i
beta[2] = -0.080616-0.006660i
beta[3] = +0.974499+0.000327i
beta[4] = -0.013397+0.005075i
beta[5] = +0.963438-0.001835i
beta[6] = -0.078999-0.008063i
beta[7] = +0.973989+0.000686i
beta[8] = -0.016252+0.007120i
beta[9] = +0.963536-0.001995i
beta[10] = -0.078366-0.009058i
beta[11] = +0.973775+0.000948i
beta[12] = -0.017447+0.008614i
cos(2*real(beta)) = 0.999391
ln(sqrt(cos+1)+sqrt(cos)) = 0.881158 >= |imag(beta)| = 0.008614
because (A) you said that it's not a sufficient condition anyway, and (B) rounding errors mean that every iteration will start flip-flopping between two similar values eventually, so this test would hit false positives unless I add a clause about treating "small enough" deltas as zero, which would require me to arbitrarily decide what counts as "small enough". (My usual test, "if(beta - delta == beta)", didn't work, as the process never reached that level of precision for some reason.)