Jump to content

Moon Hotspot


AirMe

Recommended Posts

  • Replies 1.4k
  • Created
  • Last Reply

Top Posters In This Topic

[quote name='jraenar' timestamp='1328258650' post='2913716']
Try running it with modulus (169, 360).
[/quote]

Slightly better. Using modulus (169, 359) is even better. Until we figure out the exact formula with the correct rounding, it's hard to tell which one the game really uses.

Edited by Chintan
Link to comment
Share on other sites

[quote name='Chintan' timestamp='1328433009' post='2914871']
Slightly better. Using modulus (169, 359) is even better. Until we figure out the exact formula with the correct rounding, it's hard to tell which one the game really uses.
[/quote]
Hmmm, yep (169, 359) is a bit better.

I set up my calculator to simulate finding a hotspot based on the 30 hotspots found thus far so 29 trial runs. It does pretty well by assuming points on the line: [code]latitude = (169/359) * longitude + (200/3)[/code]
where I solved for the intercept constant (200/3) initially by plugging in the 30 known points and taking the average (66.114), then guessing a 'nice' number close to the calculated value. Of the 29 tests, it successfully finds the hotspot in all of them, usually in three or fewer guesses (avg 2.55, min 1, max 6, std. dev. 1.15).

It looks like the latitude is calculated as the closest integer value from solving the above. But not always. I'll see if I can find a pattern later.

Edited by jraenar
Link to comment
Share on other sites

  • 2 weeks later...

Has anyone managed to reproduce Rich333's floating point rounding error results? His post is [url="http://forums.cybernations.net/index.php?showtopic=64843&view=findpost&p=1930324"]here[/url].

I've been trying to reproduce them, but haven't been able to yet.

So far I've figured out that angleDeg*(M_PI/180.0) and (angleDeg*M_PI)/180.0 produce different values, so you have to be careful about how you convert from degrees to radians.

This function does NOT give the right results:

[CODE]#include <cmath>

double ConvertDegToRad(double angleDeg)
{
return angleDeg*(M_PI/180.0);
}

double surfaceDistance(double lat1, double long1, double lat2, double long2)
{
double lat1rad = ConvertDegToRad(lat1);
double lat2rad = ConvertDegToRad(lat2);
double long1rad = ConvertDegToRad(long1);
double long2rad = ConvertDegToRad(long2);
return acos(cos(lat1rad)*cos(lat2rad)*cos(long1rad-long2rad) + sin(lat1rad)*sin(lat2rad));
}[/CODE]

Are there some standard acos, cos, and sin functions other than the ones in the cmath and math.h libraries?

Edited by Chintan
Link to comment
Share on other sites

Ugh, apparently the floating point rounding error is machine dependent. :facepalm:

I ran the exact same code on two different machines and got different output. And neither of them quite matched what Rich333 got, although one of them was quite close.

Link to comment
Share on other sites

Hmm, I found something which matches all of the previously observed hotspot data, but doesn't match Rich333's results.

Of course it's quite possible that the CN server does something completely different that matches neither what Rich333 nor I found. To make it worse, this is machine dependent, so even running the exact same code I posted here on a different machine can produce different output.

Code:
[CODE]
#include <stdio.h>
#include <cmath>

inline double ConvertDegToRad(double angleDeg)
{
return (angleDeg*M_PI)/180.0;
}

double surfaceDistance(double lat1, double long1, double lat2, double long2)
{
double lat1rad = ConvertDegToRad(lat1);
double lat2rad = ConvertDegToRad(lat2);
double long1rad = ConvertDegToRad(long1);
double long2rad = ConvertDegToRad(long2);
return acos(cos(lat1rad)*cos(lat2rad)*cos(long2rad - long1rad) + sin(lat1rad)*sin(lat2rad));
}

int main(int argc, char *argv[])
{
for (int angle = -90; angle <= 90; angle++)
{
if(surfaceDistance(angle,0,angle,0)!=0)
{
int sign = angle<0 ? -1:1;

printf("%d\n",angle);

printf("{\n");
for(int j=-9; j<=9; j++)
if(surfaceDistance(angle + sign*.00000001*j , 0, angle, 0)==0)
printf("%+.8f\n",angle + sign*.00000001*j);
printf("}\n\n");
}
}
return 0;
}
[/CODE]

System info:
[CODE]myth16:~/cybernations$ cat /proc/version
Linux version 2.6.18-194.26.1.el5 (xxx@xxx) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Wed Nov 17 14:40:07 PST 2010
myth16:~/cybernations$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 23
model name : Intel(R) Core(TM)2 Duo CPU E8500 @ 3.16GHz
stepping : 6
cpu MHz : 3158.724
cache size : 6144 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall lm constant_tsc pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 lahf_lm
bogomips : 6317.44
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 23
model name : Intel(R) Core(TM)2 Duo CPU E8500 @ 3.16GHz
stepping : 6
cpu MHz : 3158.724
cache size : 6144 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall lm constant_tsc pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 lahf_lm
bogomips : 6317.43
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
[/CODE]

Output:
[CODE]-87
{
-86.99999992
-86.99999993
-86.99999994
-86.99999995
-86.99999996
-86.99999997
-86.99999998
-86.99999999
-87.00000001
-87.00000002
-87.00000005
-87.00000006
-87.00000007
-87.00000009
}

-86
{
-85.99999991
-85.99999993
-85.99999994
-85.99999995
-85.99999998
-85.99999999
-86.00000001
-86.00000002
-86.00000003
-86.00000005
-86.00000006
-86.00000007
-86.00000009
}

-84
{
-83.99999991
-83.99999993
-83.99999994
-83.99999995
-83.99999996
-84.00000002
-84.00000005
-84.00000006
-84.00000007
-84.00000009
}

-80
{
-79.99999992
-79.99999993
-79.99999994
-79.99999995
-79.99999996
-79.99999997
-79.99999998
-80.00000001
-80.00000002
-80.00000004
-80.00000005
-80.00000006
-80.00000009
}

-72
{
-71.99999991
-71.99999992
-71.99999993
-71.99999994
-71.99999995
-71.99999998
-72.00000001
-72.00000002
-72.00000004
-72.00000005
-72.00000006
-72.00000007
-72.00000008
-72.00000009
}

-71
{
-70.99999991
-70.99999992
-70.99999993
-70.99999995
-70.99999996
-70.99999997
-70.99999998
-70.99999999
-71.00000001
-71.00000004
-71.00000005
-71.00000008
-71.00000009
}

-70
{
-69.99999991
-69.99999992
-69.99999993
-69.99999994
-69.99999995
-69.99999997
-69.99999998
-69.99999999
-70.00000001
-70.00000002
-70.00000004
-70.00000005
-70.00000007
-70.00000008
}

-66
{
-65.99999991
-65.99999992
-65.99999993
-65.99999994
-65.99999995
-65.99999996
-66.00000001
-66.00000002
-66.00000003
-66.00000004
-66.00000005
-66.00000006
-66.00000007
-66.00000008
-66.00000009
}

-63
{
-62.99999991
-62.99999994
-62.99999997
-62.99999999
-63.00000002
-63.00000003
-63.00000005
-63.00000008
-63.00000009
}

-51
{
-50.99999991
-50.99999992
-50.99999993
-50.99999994
-50.99999995
-50.99999996
-50.99999998
-50.99999999
-51.00000001
-51.00000002
-51.00000004
-51.00000005
-51.00000007
-51.00000008
-51.00000009
}

-48
{
-47.99999991
-47.99999992
-47.99999993
-47.99999994
-47.99999995
-47.99999997
-47.99999998
-48.00000001
-48.00000002
-48.00000003
-48.00000004
-48.00000005
-48.00000007
-48.00000008
-48.00000009
}

-47
{
-46.99999991
-46.99999992
-46.99999993
-46.99999994
-46.99999995
-46.99999997
-46.99999999
-47.00000001
-47.00000002
-47.00000003
-47.00000004
-47.00000006
-47.00000007
-47.00000009
}

-40
{
-39.99999993
-39.99999995
-39.99999996
-39.99999999
-40.00000001
-40.00000003
-40.00000004
-40.00000005
-40.00000006
-40.00000007
-40.00000008
-40.00000009
}

-35
{
-34.99999991
-34.99999992
-34.99999993
-34.99999994
-34.99999995
-34.99999997
-34.99999998
-34.99999999
-35.00000001
-35.00000002
-35.00000004
-35.00000005
-35.00000006
-35.00000007
-35.00000008
-35.00000009
}

-29
{
-28.99999991
-28.99999993
-28.99999994
-28.99999995
-28.99999996
-28.99999997
-28.99999998
-29.00000002
-29.00000003
-29.00000004
-29.00000005
-29.00000007
-29.00000009
}

-24
{
-23.99999991
-23.99999993
-23.99999995
-23.99999997
-23.99999998
-23.99999999
-24.00000004
-24.00000005
-24.00000006
-24.00000007
-24.00000008
-24.00000009
}

-18
{
-17.99999991
-17.99999992
-17.99999993
-17.99999994
-17.99999995
-17.99999998
-18.00000002
-18.00000005
-18.00000008
-18.00000009
}

-12
{
-11.99999991
-11.99999992
-11.99999994
-11.99999995
-11.99999996
-11.99999997
-11.99999998
-11.99999999
-12.00000001
-12.00000002
-12.00000003
-12.00000004
-12.00000006
-12.00000007
-12.00000008
-12.00000009
}

-10
{
-9.99999994
-9.99999995
-9.99999996
-9.99999997
-9.99999998
-9.99999999
-10.00000002
-10.00000003
-10.00000004
-10.00000005
-10.00000006
-10.00000007
-10.00000008
}

-8
{
-7.99999991
-7.99999992
-7.99999993
-7.99999994
-7.99999995
-7.99999996
-7.99999997
-7.99999998
-7.99999999
-8.00000001
-8.00000002
-8.00000003
-8.00000005
-8.00000006
-8.00000007
-8.00000008
-8.00000009
}

-7
{
-6.99999993
-6.99999994
-6.99999997
-6.99999998
-6.99999999
-7.00000001
-7.00000004
-7.00000005
-7.00000008
-7.00000009
}

-6
{
-5.99999992
-5.99999993
-5.99999994
-5.99999995
-5.99999996
-5.99999998
-5.99999999
-6.00000004
-6.00000005
-6.00000006
-6.00000007
-6.00000009
}

-4
{
-3.99999991
-3.99999994
-3.99999995
-3.99999997
-3.99999998
-4.00000001
-4.00000002
-4.00000005
-4.00000006
-4.00000008
-4.00000009
}

-3
{
-2.99999991
-2.99999993
-2.99999994
-2.99999995
-2.99999998
-2.99999999
-3.00000002
-3.00000003
-3.00000004
-3.00000006
-3.00000007
-3.00000008
}

3
{
+2.99999991
+2.99999993
+2.99999994
+2.99999995
+2.99999998
+2.99999999
+3.00000002
+3.00000003
+3.00000004
+3.00000006
+3.00000007
+3.00000008
}

4
{
+3.99999991
+3.99999994
+3.99999995
+3.99999997
+3.99999998
+4.00000001
+4.00000002
+4.00000005
+4.00000006
+4.00000008
+4.00000009
}

6
{
+5.99999992
+5.99999993
+5.99999994
+5.99999995
+5.99999996
+5.99999998
+5.99999999
+6.00000004
+6.00000005
+6.00000006
+6.00000007
+6.00000009
}

7
{
+6.99999993
+6.99999994
+6.99999997
+6.99999998
+6.99999999
+7.00000001
+7.00000004
+7.00000005
+7.00000008
+7.00000009
}

8
{
+7.99999991
+7.99999992
+7.99999993
+7.99999994
+7.99999995
+7.99999996
+7.99999997
+7.99999998
+7.99999999
+8.00000001
+8.00000002
+8.00000003
+8.00000005
+8.00000006
+8.00000007
+8.00000008
+8.00000009
}

10
{
+9.99999994
+9.99999995
+9.99999996
+9.99999997
+9.99999998
+9.99999999
+10.00000002
+10.00000003
+10.00000004
+10.00000005
+10.00000006
+10.00000007
+10.00000008
}

12
{
+11.99999991
+11.99999992
+11.99999994
+11.99999995
+11.99999996
+11.99999997
+11.99999998
+11.99999999
+12.00000001
+12.00000002
+12.00000003
+12.00000004
+12.00000006
+12.00000007
+12.00000008
+12.00000009
}

18
{
+17.99999991
+17.99999992
+17.99999993
+17.99999994
+17.99999995
+17.99999998
+18.00000002
+18.00000005
+18.00000008
+18.00000009
}

24
{
+23.99999991
+23.99999993
+23.99999995
+23.99999997
+23.99999998
+23.99999999
+24.00000004
+24.00000005
+24.00000006
+24.00000007
+24.00000008
+24.00000009
}

29
{
+28.99999991
+28.99999993
+28.99999994
+28.99999995
+28.99999996
+28.99999997
+28.99999998
+29.00000002
+29.00000003
+29.00000004
+29.00000005
+29.00000007
+29.00000009
}

35
{
+34.99999991
+34.99999992
+34.99999993
+34.99999994
+34.99999995
+34.99999997
+34.99999998
+34.99999999
+35.00000001
+35.00000002
+35.00000004
+35.00000005
+35.00000006
+35.00000007
+35.00000008
+35.00000009
}

40
{
+39.99999993
+39.99999995
+39.99999996
+39.99999999
+40.00000001
+40.00000003
+40.00000004
+40.00000005
+40.00000006
+40.00000007
+40.00000008
+40.00000009
}

47
{
+46.99999991
+46.99999992
+46.99999993
+46.99999994
+46.99999995
+46.99999997
+46.99999999
+47.00000001
+47.00000002
+47.00000003
+47.00000004
+47.00000006
+47.00000007
+47.00000009
}

48
{
+47.99999991
+47.99999992
+47.99999993
+47.99999994
+47.99999995
+47.99999997
+47.99999998
+48.00000001
+48.00000002
+48.00000003
+48.00000004
+48.00000005
+48.00000007
+48.00000008
+48.00000009
}

51
{
+50.99999991
+50.99999992
+50.99999993
+50.99999994
+50.99999995
+50.99999996
+50.99999998
+50.99999999
+51.00000001
+51.00000002
+51.00000004
+51.00000005
+51.00000007
+51.00000008
+51.00000009
}

63
{
+62.99999991
+62.99999994
+62.99999997
+62.99999999
+63.00000002
+63.00000003
+63.00000005
+63.00000008
+63.00000009
}

66
{
+65.99999991
+65.99999992
+65.99999993
+65.99999994
+65.99999995
+65.99999996
+66.00000001
+66.00000002
+66.00000003
+66.00000004
+66.00000005
+66.00000006
+66.00000007
+66.00000008
+66.00000009
}

70
{
+69.99999991
+69.99999992
+69.99999993
+69.99999994
+69.99999995
+69.99999997
+69.99999998
+69.99999999
+70.00000001
+70.00000002
+70.00000004
+70.00000005
+70.00000007
+70.00000008
}

71
{
+70.99999991
+70.99999992
+70.99999993
+70.99999995
+70.99999996
+70.99999997
+70.99999998
+70.99999999
+71.00000001
+71.00000004
+71.00000005
+71.00000008
+71.00000009
}

72
{
+71.99999991
+71.99999992
+71.99999993
+71.99999994
+71.99999995
+71.99999998
+72.00000001
+72.00000002
+72.00000004
+72.00000005
+72.00000006
+72.00000007
+72.00000008
+72.00000009
}

80
{
+79.99999992
+79.99999993
+79.99999994
+79.99999995
+79.99999996
+79.99999997
+79.99999998
+80.00000001
+80.00000002
+80.00000004
+80.00000005
+80.00000006
+80.00000009
}

84
{
+83.99999991
+83.99999993
+83.99999994
+83.99999995
+83.99999996
+84.00000002
+84.00000005
+84.00000006
+84.00000007
+84.00000009
}

86
{
+85.99999991
+85.99999993
+85.99999994
+85.99999995
+85.99999998
+85.99999999
+86.00000001
+86.00000002
+86.00000003
+86.00000005
+86.00000006
+86.00000007
+86.00000009
}

87
{
+86.99999992
+86.99999993
+86.99999994
+86.99999995
+86.99999996
+86.99999997
+86.99999998
+86.99999999
+87.00000001
+87.00000002
+87.00000005
+87.00000006
+87.00000007
+87.00000009
}

[/CODE]


Difference from Rich333's results:
[CODE]myth16:~/cybernations$ diff output_Rich333 output_Chintan
9a10
> -86.99999999
12d12
< -87.00000003
21a22
> -85.99999993
30a32
> -86.00000007
41d42
< -84.00000001
43d43
< -84.00000004
50,68d49
< -82
< {
< -81.99999991
< -81.99999992
< -81.99999993
< -81.99999994
< -81.99999995
< -81.99999997
< -81.99999998
< -81.99999999
< -82.00000001
< -82.00000002
< -82.00000003
< -82.00000006
< -82.00000007
< -82.00000008
< -82.00000009
< }
<
124a106
> -69.99999993
146a129
> -66.00000002
152a136
> -66.00000009
161a146
> -63.00000003
166a152,170
> -51
> {
> -50.99999991
> -50.99999992
> -50.99999993
> -50.99999994
> -50.99999995
> -50.99999996
> -50.99999998
> -50.99999999
> -51.00000001
> -51.00000002
> -51.00000004
> -51.00000005
> -51.00000007
> -51.00000008
> -51.00000009
> }
>
171a176
> -47.99999994
172a178
> -47.99999997
173a180
> -48.00000001
191d197
< -46.99999998
194a201
> -47.00000003
196d202
< -47.00000005
202,218d207
< -46
< {
< -45.99999992
< -45.99999993
< -45.99999994
< -45.99999995
< -45.99999997
< -45.99999998
< -45.99999999
< -46.00000002
< -46.00000003
< -46.00000004
< -46.00000006
< -46.00000007
< -46.00000009
< }
<
221d209
< -39.99999991
223d210
< -39.99999994
266c253
< -28.99999999
---
> -29.00000002
269a257
> -29.00000007
279a268
> -23.99999999
295,296d283
< -17.99999996
< -17.99999997
366d352
< -6.99999995
367a354
> -6.99999998
370c357
< -7.00000002
---
> -7.00000004
371a359
> -7.00000008
380a369
> -5.99999996
457a447
> +5.99999996
471d460
< +6.99999995
472a462
> +6.99999998
475c465
< +7.00000002
---
> +7.00000004
476a467
> +7.00000008
545,546d535
< +17.99999996
< +17.99999997
560a550
> +23.99999999
578c568
< +28.99999999
---
> +29.00000002
581a572
> +29.00000007
607d597
< +39.99999991
609d598
< +39.99999994
623,639d611
< 46
< {
< +45.99999992
< +45.99999993
< +45.99999994
< +45.99999995
< +45.99999997
< +45.99999998
< +45.99999999
< +46.00000002
< +46.00000003
< +46.00000004
< +46.00000006
< +46.00000007
< +46.00000009
< }
<
648d619
< +46.99999998
651a623
> +47.00000003
653d624
< +47.00000005
663a635
> +47.99999994
664a637
> +47.99999997
665a639
> +48.00000001
674a649,667
> 51
> {
> +50.99999991
> +50.99999992
> +50.99999993
> +50.99999994
> +50.99999995
> +50.99999996
> +50.99999998
> +50.99999999
> +51.00000001
> +51.00000002
> +51.00000004
> +51.00000005
> +51.00000007
> +51.00000008
> +51.00000009
> }
>
681a675
> +63.00000003
695a690
> +66.00000002
701a697
> +66.00000009
707a704
> +69.99999993
773,791d769
< 82
< {
< +81.99999991
< +81.99999992
< +81.99999993
< +81.99999994
< +81.99999995
< +81.99999997
< +81.99999998
< +81.99999999
< +82.00000001
< +82.00000002
< +82.00000003
< +82.00000006
< +82.00000007
< +82.00000008
< +82.00000009
< }
<
799d776
< +84.00000001
801d777
< +84.00000004
810a787
> +85.99999993
819a797
> +86.00000007
831a810
> +86.99999999
834d812
< +87.00000003
[/CODE]

Ironically, the Mars hotspot was at (-46, -69) in April 2011, but no one bothered to check (-46, -69). Everyone just went with (-45.99999999, -69).

Edited by Chintan
Link to comment
Share on other sites

I haven't bothered trying to calculate tables of valid offset values. I just call [font="Courier New"]calcEfficiency(hotspot, hotspot)[/font], and test if it is equal to 100; if it is not, then I loop adding the 0.00000001 epsilon value to the latitude, and test again against the integer valued hotspot, until the value is 100.

Without knowing the exact math library and any quirks of the CN server processor FPU, it would be difficult or impossible to predict the precise epsilon needed to attain 100% with the current known points requiring it. And honestly, I wouldn't bother. We know it's an issue, how to fix it, and have a reasonable estimate of where it is needed.

Link to comment
Share on other sites

[quote name='jraenar' timestamp='1330499590' post='2930538']
I haven't bothered trying to calculate tables of valid offset values. I just call [font="Courier New"]calcEfficiency(hotspot, hotspot)[/font], and test if it is equal to 100; if it is not, then I loop adding the 0.00000001 epsilon value to the latitude, and test again against the integer valued hotspot, until the value is 100.
[/quote]

Doesn't that only work if your code and CPU do the exact same thing that the CN server do?

What I do is to do the calculation normally, set the effectiveness to 99 if it's 100, and then if the longitude matches the hotspot longitude and the latitude is within 0.0000001 (10*epsilon) of the hotspot latitude I check Rich333's table to figure out if the effectiveness should be set to 100. Of course it could be wrong, since Rich333's table could be wrong, but that and the table I posted are the best guesses we have.

Edited by Chintan
Link to comment
Share on other sites

I'm only using it as a hint that a modified latitude may be needed, and then further as a hint on what possible values may be. If it spit out "Use (9.99999999, -50)" I would still try (10,-50) first, especially if there are ranges of candidates.

And the first two guesses mine popped out were lon=110&lat=-50.99999999 and lon=-136&lat=3.00000002 ... previous hotspot 50%, first guess also 50%, second 85%.

Next tries should be:
lon=-117&lat=11
lon=-155&lat=-6.99999999
lon=-116&lat=11
lon=-154&lat=-6.99999999

Edited by jraenar
Link to comment
Share on other sites

[size="5"][b]Moon Hotspot Location (March 2012):[/b][/size]

[size="5"][b](-5.99999999, -155) URL Segment: lon=-155&lat=-5.99999999[/b][/size]

Progress Maps:

Moon Points Tried so far (lat, long):
none
Mars Points Tried so far (lat, long):
(30, 94): 50%
(-30, -35): 92%
(0, 29.6017): 50%
(50, 136.72753): 50%
[spoiler][img]https://lh5.googleusercontent.com/-kIdM_1zIWnU/T08YXqSXGtI/AAAAAAAAAfg/PODb3dAiHsQ/s0/Screen+shot+2012-02-29+at+10.32.35+PM.png[/img][/spoiler]
[spoiler][img]https://lh5.googleusercontent.com/-NpbNPFplYb4/T08YXksP4UI/AAAAAAAAAfc/_uYdUqLTECw/s0/Screen+shot+2012-02-29+at+10.32.25+PM.png[/img][/spoiler]

Moon Points Tried so far (lat, long):
none
Mars Points Tried so far (lat, long):
(30, 94): 50%
(-30, -35): 92%
(0, 29.6017): 50%
(50, 136.72753): 50%
(-36, -46): 100%
[spoiler][img]https://lh6.googleusercontent.com/-OvOv7HcgQiw/T08T3LAKoII/AAAAAAAAAeU/7Ksiol2gWns/s0/Screen+shot+2012-02-29+at+10.14.09+PM.png[/img][/spoiler]

Moon Points Tried so far (lat, long):
(60, -15): 50%
(-50.99999999, 110): 50%
(3.00000002, -136): 85%
Mars Points Tried so far (lat, long):
(30, 94): 50%
(-30, -35): 92%
(0, 29.6017): 50%
(50, 136.72753): 50%
(-36, -46): 100%
[spoiler][img]https://lh3.googleusercontent.com/-TrI6qJq7X0A/T08VAsLdsNI/AAAAAAAAAes/nC0YcF_sCWE/s0/Screen+shot+2012-02-29+at+10.19.18+PM.png[/img][/spoiler]

Edited by Chintan
Link to comment
Share on other sites

[quote name='Chintan' timestamp='1330582627' post='2931053']
Someone try this:

(-5.99999999, -155) URL Segment: lon=-155&lat=-5.99999999
[/quote]
This is the moon hotspot. Uploading screengrab in a minute.

[IMG]http://i44.tinypic.com/1zyegck.png[/IMG]

My sorting heuristic seems to be off for this month. The actual hotspot was almost far enough away from the line for it to be thrown out entirely...

Edited by jraenar
Link to comment
Share on other sites

The game cuts it off at 6 decimal places. You need to add an offset at the 8th decimal place:
(-5.99999999, -155) URL Segment: lon=-155&lat=-5.99999999

Also, my heuristic wasn't off. I accidentally grabbed an older version with a wrong constant. Oops. :mellow:

Link to comment
Share on other sites

So that increases confidence in the offsets calculated by Chintan over Rich333's. Need more data, though.

Interestingly, my calc didn't like -5.99999999, and suggested -5.99999998 instead. So some combination of computing radians, or the trig functions, or using addition of epsilon instead of multiplication -- is causing a different error in mine.

Link to comment
Share on other sites

[quote name='jraenar' timestamp='1330586958' post='2931108']
So that increases confidence in the offsets calculated by Chintan over Rich333's. Need more data, though.

Interestingly, my calc didn't like -5.99999999, and suggested -5.99999998 instead. So some combination of computing radians, or the trig functions, or using addition of epsilon instead of multiplication -- is causing a different error in mine.
[/quote]

Or even having a different CPU.

I posted the exact code I used to produce the table, but of course just knowing that isn't good enough. We also need to know more about the specifics of the floating point unit. Is there anyone here who knows more about FPUs and can shed light on this issue?

Link to comment
Share on other sites

More points to try out for the adventurous:
(-6.00000088280216559, -155) URL Segment: lon=-155&lat=-6.00000088280216559
(-5.99999911551090914, -155) URL Segment: lon=-155&lat=-5.99999911551090914
If you try one of these, post the effectiveness.

Link to comment
Share on other sites

[quote name='Chintan' timestamp='1330592327' post='2931135']
Or even having a different CPU.

I posted the exact code I used to produce the table, but of course just knowing that isn't good enough. We also need to know more about the specifics of the floating point unit. Is there anyone here who knows more about FPUs and can shed light on this issue?
[/quote]
I also have a Core 2 series, so I discounted a difference in the FPU. It's possible, yet I think differing implementations in math libraries would have more impact. I haven't kept up enough on processor minutia to know whether there have been any changes within that family.

[quote name='Seerow' timestamp='1330612425' post='2931246']
How is it that -5.99999999 and -6.00000088280216559 are both 100%, but -6 is 99%? That's so weird :/
[/quote]
Floating-point error. Processors represent numbers as either fixed-point or floating-point. Fixed-point has smaller range, floating-point allows for really small or really large values by encoding a fixed-point portion (mantissa), a sign bit (positive or negative), and an exponent. End result is something like [font="Courier New"](-1 x sign) x mantissa x base[sup]exponent[/sup][/font].

In this case, since we are calculating trig functions, we are working with results between -1 and 1. Since floating-point can only represent [i]some[/i] of the numbers that would really result from these calculations, little errors start to creep in. For example, on my machine, 0.00000003 and (0.00000001 * 3) are [i]not equal[/i], even though in real numbers they obviously are equal: [code]>>> 0.00000003
3e-08
>>> 0.00000001 * 3
3.0000000000000004e-08[/code]

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...