1 /* 2 * This library is free software; you can redistribute it and/or 3 * modify it under the terms of the GNU Lesser General Public 4 * License as published by the Free Software Foundation; either 5 * version 2 of the License, or (at your option) any later version. 6 * 7 * This library is distributed in the hope that it will be useful, 8 * but WITHOUT ANY WARRANTY; without even the implied warranty of 9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 10 * Lesser General Public License for more details. 11 * 12 * You should have received a copy of the GNU General Public License 13 * along with this program; if not, write to the Free Software 14 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 15 * 16 * Copyright (C) 2015 Lukasz Komsta 17 */ 18 19 module nova.constellation; 20 21 import nova.lunar; 22 import nova.julian_day; 23 import nova.rise_set; 24 import nova.transform; 25 26 extern (C) { 27 28 /*! \fn const char* ln_get_constellation(struct ln_equ_posn *position) 29 * \param position Equitorial position 30 * 31 * \return Name of the the constellation at the given position, or "---" if constellation 32 * cannot be found. 33 * 34 * Returns name of the constellation based on boundaries found at: 35 * http://vizier.u-strasbg.fr/viz-bin/VizieR?-source=6042 36 */ 37 @nogc string ln_get_constellation(const ref ln_equ_posn position) nothrow 38 { 39 static immutable float[357] ra_lower = [ 40 0, 41 120, 42 315, 43 270, 44 0, 45 137.5, 46 0, 47 160, 48 262.5, 49 302.5, 50 0, 51 172.5, 52 248, 53 302.5, 54 119.5, 55 137.5, 56 195, 57 46.5, 58 306.25, 59 170, 60 0, 61 210, 62 353.75, 63 180, 64 202.5, 65 347.5, 66 91.5, 67 300, 68 308, 69 105, 70 119.5, 71 296.5, 72 300, 73 343, 74 0, 75 291.25, 76 25.5, 77 36.5, 78 46.5, 79 334.75, 80 75, 81 210.5, 82 216.25, 83 47.5, 84 332, 85 309, 86 0, 87 91.5, 88 181.25, 89 228.75, 90 329.5, 91 50, 92 343, 93 236.25, 94 30.625, 95 255, 96 0, 97 20.5, 98 97.5, 99 350, 100 202.5, 101 0, 102 353.75, 103 272.625, 104 273.5, 105 286.25, 106 25, 107 126.25, 108 2.5, 109 180, 110 102, 111 328.625, 112 328.125, 113 287.5, 114 137.5, 115 152.5, 116 231.5, 117 236.25, 118 138.75, 119 0, 120 37.75, 121 290.375, 122 67.5, 123 326, 124 328.125, 125 98, 126 110.5, 127 0, 128 330, 129 342.25, 130 343, 131 38.5, 132 161.75, 133 180, 134 116.25, 135 138.75, 136 10.75, 137 227.75, 138 352.5, 139 185, 140 356.25, 141 209.375, 142 36.25, 143 40.75, 144 67.5, 145 272.625, 146 165, 147 295, 148 71.25, 149 148.25, 150 198.75, 151 0, 152 21.125, 153 88.25, 154 118.25, 155 313.75, 156 288.875, 157 28.75, 158 242.5, 159 226.25, 160 227.75, 161 275.5, 162 161.25, 163 283, 164 25, 165 10.75, 166 157.5, 167 318.75, 168 85.5, 169 1, 170 238.75, 171 88.25, 172 297.5, 173 283, 174 2.125, 175 303.75, 176 117.125, 177 308.5, 178 288.75, 179 49.25, 180 283, 181 85.5, 182 93.25, 183 285, 184 74.5, 185 238.75, 186 297.5, 187 69.25, 188 80, 189 192.5, 190 258.75, 191 178, 192 112.5, 193 251.25, 194 0, 195 84, 196 105, 197 316.75, 198 94.625, 199 273.75, 200 313.125, 201 315.75, 202 172.75, 203 93.625, 204 104, 205 117.125, 206 357.5, 207 25, 208 302.125, 209 202.5, 210 341.25, 211 118.875, 212 138.75, 213 273.75, 214 279.875, 215 312.5, 216 105, 217 273.75, 218 241.25, 219 273.75, 220 322, 221 0, 222 278.75, 223 304.5, 224 312.5, 225 320, 226 330, 227 325, 228 105.25, 229 53.75, 230 69.25, 231 108, 232 220, 233 267.5, 234 39.75, 235 49.25, 236 226.25, 237 70, 238 87.5, 239 267.5, 240 273.75, 241 278.75, 242 341.25, 243 161.25, 244 172.75, 245 0, 246 357.5, 247 213.75, 248 238.75, 249 300, 250 320, 251 257.5, 252 87.5, 253 73.75, 254 76.25, 255 121.25, 256 143.75, 257 177.5, 258 263.75, 259 283, 260 72.5, 261 308, 262 257.5, 263 273.75, 264 125.5, 265 244, 266 128.75, 267 161.25, 268 244, 269 235, 270 188.75, 271 192.5, 272 136.25, 273 25, 274 39.75, 275 162.5, 276 177.5, 277 213.75, 278 244, 279 0, 280 320, 281 328, 282 357.5, 283 146.25, 284 70.5, 285 72.5, 286 300, 287 153.75, 288 188.75, 289 223.75, 290 235, 291 68.75, 292 251.25, 293 264, 294 158.75, 295 91.75, 296 183.75, 297 162.5, 298 52.5, 299 125.5, 300 64, 301 267.5, 302 320, 303 345, 304 45, 305 140.5, 306 0, 307 25, 308 58, 309 350, 310 212.5, 311 235, 312 240, 313 72.5, 314 75, 315 120, 316 51.25, 317 246.25, 318 267.5, 319 287.5, 320 305, 321 45, 322 67.5, 323 230, 324 0, 325 40, 326 61.25, 327 64, 328 320, 329 90, 330 120, 331 36.25, 332 57.5, 333 0, 334 90, 335 122.5, 336 52.5, 337 57.5, 338 0, 339 32.5, 340 67.5, 341 225.75, 342 126.75, 343 92.5, 344 177.5, 345 212.5, 346 225.75, 347 60, 348 132.5, 349 165, 350 262.5, 351 270, 352 330, 353 48, 354 75, 355 97.5, 356 0, 357 20, 358 350, 359 65, 360 230, 361 305, 362 82.5, 363 227.5, 364 246.25, 365 223.75, 366 248.75, 367 90, 368 102.5, 369 168.75, 370 177.5, 371 192.5, 372 202.5, 373 251.25, 374 32.5, 375 48, 376 221.25, 377 252.5, 378 262.5, 379 330, 380 68.75, 381 205, 382 221.25, 383 0, 384 52.5, 385 98.75, 386 135.5, 387 168.75, 388 270, 389 320, 390 350, 391 11.25, 392 0, 393 115, 394 205, 395 52.5, 396 0 397 ]; 398 399 static immutable float[357] ra_upper = [ 400 360, 401 217.5, 402 345, 403 315, 404 120, 405 160, 406 75, 407 217.5, 408 270, 409 315, 410 52.625, 411 203.75, 412 262.5, 413 310, 414 137.5, 415 170, 416 248, 417 51.25, 418 310, 419 180, 420 5, 421 235, 422 360, 423 202.5, 424 216.25, 425 353.75, 426 105, 427 306.25, 428 309, 429 119.5, 430 126.25, 431 300, 432 308, 433 347.5, 434 36.5, 435 296.5, 436 28.625, 437 46.5, 438 47.5, 439 343, 440 91.5, 441 216.25, 442 291.25, 443 50, 444 334.75, 445 329.5, 446 25.5, 447 97.5, 448 202.5, 449 236.25, 450 332, 451 75, 452 350, 453 255, 454 37.75, 455 273.5, 456 20.5, 457 25, 458 102, 459 360, 460 210.5, 461 16.75, 462 360, 463 273.5, 464 286.25, 465 287.5, 466 30.625, 467 137.5, 468 13, 469 181.25, 470 110.5, 471 329.5, 472 328.625, 473 291, 474 152.5, 475 161.75, 476 236.25, 477 245, 478 143.75, 479 37.75, 480 38.5, 481 291, 482 70.375, 483 328.125, 484 330, 485 110.5, 486 116.25, 487 30, 488 342.25, 489 343, 490 352.5, 491 40.75, 492 165, 493 185, 494 138.75, 495 148.25, 496 21.125, 497 231.5, 498 356.25, 499 198.75, 500 360, 501 210.5, 502 40.75, 503 67.5, 504 71.25, 505 290.375, 506 180, 507 313.75, 508 88.25, 509 157.5, 510 209.375, 511 1, 512 25, 513 98, 514 120, 515 326, 516 295, 517 36.25, 518 245, 519 227.75, 520 242.5, 521 283, 522 165, 523 288.875, 524 28.75, 525 12.75, 526 161.25, 527 321.25, 528 88.25, 529 2.125, 530 240.5, 531 93.25, 532 303.75, 533 288.75, 534 12.75, 535 308.5, 536 118.25, 537 318.75, 538 297.5, 539 50.5, 540 285, 541 86.5, 542 94.625, 543 297.5, 544 80, 545 241.25, 546 303.75, 547 74.5, 548 84, 549 202.5, 550 273.75, 551 192.5, 552 117.125, 553 258.75, 554 2.125, 555 86.5, 556 112.5, 557 320, 558 104, 559 283, 560 315.75, 561 316.75, 562 178, 563 94.625, 564 105, 565 118.875, 566 360, 567 49.25, 568 304.5, 569 226.25, 570 357.5, 571 138.75, 572 161.25, 573 279.875, 574 283, 575 313.125, 576 105.25, 577 276.375, 578 251.25, 579 276.375, 580 325, 581 30, 582 283, 583 312.5, 584 320, 585 322, 586 341.25, 587 330, 588 108, 589 69.25, 590 70, 591 121.25, 592 226.25, 593 273.75, 594 49.25, 595 53.75, 596 244, 597 76.25, 598 93.625, 599 269.5, 600 278.75, 601 283, 602 357.5, 603 172.75, 604 177.5, 605 5, 606 360, 607 220, 608 244, 609 308, 610 328, 611 269.5, 612 121.25, 613 76.25, 614 87.5, 615 125.5, 616 161.25, 617 192.5, 618 265, 619 300, 620 73.75, 621 320, 622 273.75, 623 283, 624 128.75, 625 245.625, 626 136.25, 627 162.5, 628 245.625, 629 238.75, 630 192.5, 631 213.75, 632 146.25, 633 39.75, 634 56.25, 635 177.5, 636 188.75, 637 223.75, 638 251.25, 639 25, 640 328, 641 357.5, 642 360, 643 153.75, 644 72.5, 645 91.75, 646 320, 647 158.75, 648 223.75, 649 235, 650 240, 651 70.5, 652 264, 653 267.5, 654 162.5, 655 110.5, 656 188.75, 657 183.75, 658 56.25, 659 140.5, 660 68.75, 661 287.5, 662 345, 663 350, 664 52.5, 665 165, 666 25, 667 45, 668 64, 669 360, 670 223.75, 671 240, 672 246.25, 673 75, 674 98.75, 675 125.5, 676 58, 677 267.5, 678 287.5, 679 305, 680 320, 681 51.25, 682 72.5, 683 235, 684 35, 685 45, 686 64, 687 67.5, 688 330, 689 120, 690 122.5, 691 40, 692 61.25, 693 27.5, 694 92.5, 695 126.75, 696 57.5, 697 60, 698 23.75, 699 36.25, 700 75, 701 230, 702 132.5, 703 97.5, 704 192.5, 705 225.75, 706 230, 707 65, 708 165, 709 168.75, 710 270, 711 305, 712 350, 713 52.5, 714 82.5, 715 102.5, 716 20, 717 32.5, 718 360, 719 68.75, 720 246.25, 721 320, 722 90, 723 230, 724 248.75, 725 227.5, 726 251.25, 727 102.5, 728 135.5, 729 177.5, 730 192.5, 731 218, 732 205, 733 252.5, 734 48, 735 68.75, 736 223.75, 737 262.5, 738 270, 739 350, 740 98.75, 741 221.25, 742 255, 743 20, 744 68.75, 745 135.5, 746 168.75, 747 205, 748 320, 749 350, 750 360, 751 20, 752 52.5, 753 205, 754 270, 755 115, 756 360 757 ]; 758 759 static immutable float[357] dec_lower = [ 760 88, 761 86.5, 762 86.1667, 763 86, 764 85, 765 82, 766 80, 767 80, 768 80, 769 80, 770 77, 771 77, 772 75, 773 75, 774 73.5, 775 73.5, 776 70, 777 68, 778 67, 779 66.5, 780 66, 781 66, 782 66, 783 64, 784 63, 785 63, 786 62, 787 61.5, 788 60.9167, 789 60, 790 60, 791 59.5, 792 59.5, 793 59.0833, 794 58.5, 795 58, 796 57.5, 797 57, 798 57, 799 56.25, 800 56, 801 55.5, 802 55.5, 803 55, 804 55, 805 54.8333, 806 54, 807 54, 808 53, 809 53, 810 52.75, 811 52.5, 812 52.5, 813 51.5, 814 50.5, 815 50.5, 816 50, 817 50, 818 50, 819 50, 820 48.5, 821 48, 822 48, 823 47.5, 824 47.5, 825 47.5, 826 47, 827 47, 828 46, 829 45, 830 44.5, 831 44, 832 43.75, 833 43.5, 834 42, 835 40, 836 40, 837 40, 838 39.75, 839 36.75, 840 36.75, 841 36.5, 842 36, 843 36, 844 36, 845 35.5, 846 35.5, 847 35, 848 35, 849 34.5, 850 34.5, 851 34, 852 34, 853 34, 854 33.5, 855 33.5, 856 33, 857 33, 858 32.0833, 859 32, 860 31.3333, 861 30.75, 862 30.6667, 863 30.6667, 864 30, 865 30, 866 29, 867 29, 868 28.5, 869 28.5, 870 28.5, 871 28, 872 28, 873 28, 874 28, 875 28, 876 27.5, 877 27.25, 878 27, 879 26, 880 26, 881 26, 882 25.5, 883 25.5, 884 25, 885 23.75, 886 23.5, 887 23.5, 888 22.8333, 889 22, 890 22, 891 21.5, 892 21.25, 893 21.0833, 894 21, 895 20.5, 896 20, 897 19.5, 898 19.1667, 899 19, 900 18.5, 901 18, 902 17.5, 903 16.1667, 904 16, 905 16, 906 15.75, 907 15.5, 908 15.5, 909 15, 910 14.3333, 911 14, 912 13.5, 913 12.8333, 914 12.5, 915 12.5, 916 12.5, 917 12.5, 918 12, 919 12, 920 11.8333, 921 11.8333, 922 11, 923 10, 924 10, 925 10, 926 10, 927 9.9167, 928 8.5, 929 8, 930 7.5, 931 7, 932 7, 933 6.25, 934 6.25, 935 6, 936 5.5, 937 4.5, 938 4, 939 3, 940 2.75, 941 2, 942 2, 943 2, 944 2, 945 2, 946 2, 947 1.75, 948 1.5, 949 0, 950 0, 951 0, 952 0, 953 0, 954 -1.75, 955 -1.75, 956 -3.25, 957 -4, 958 -4, 959 -4, 960 -4, 961 -4, 962 -4, 963 -6, 964 -6, 965 -7, 966 -7, 967 -8, 968 -8, 969 -9, 970 -9, 971 -10, 972 -11, 973 -11, 974 -11, 975 -11, 976 -11, 977 -11, 978 -11.6667, 979 -12.0333, 980 -14.5, 981 -15, 982 -16, 983 -16, 984 -17, 985 -18.25, 986 -19, 987 -19, 988 -19.25, 989 -20, 990 -22, 991 -22, 992 -24, 993 -24.3833, 994 -24.3833, 995 -24.5, 996 -24.5, 997 -24.5, 998 -24.5833, 999 -25.5, 1000 -25.5, 1001 -25.5, 1002 -25.5, 1003 -26.5, 1004 -27.25, 1005 -27.25, 1006 -28, 1007 -29.1667, 1008 -29.5, 1009 -29.5, 1010 -29.5, 1011 -30, 1012 -30, 1013 -30, 1014 -31.1667, 1015 -33, 1016 -33, 1017 -35, 1018 -36, 1019 -36.75, 1020 -37, 1021 -37, 1022 -37, 1023 -37, 1024 -39.5833, 1025 -39.75, 1026 -40, 1027 -40, 1028 -40, 1029 -40, 1030 -42, 1031 -42, 1032 -42, 1033 -43, 1034 -43, 1035 -43, 1036 -44, 1037 -45.5, 1038 -45.5, 1039 -45.5, 1040 -45.5, 1041 -46, 1042 -46.5, 1043 -48, 1044 -48.1667, 1045 -49, 1046 -49, 1047 -49, 1048 -50, 1049 -50.75, 1050 -50.75, 1051 -51, 1052 -51, 1053 -51.5, 1054 -52.5, 1055 -53, 1056 -53.1667, 1057 -53.1667, 1058 -53.5, 1059 -54, 1060 -54, 1061 -54, 1062 -54.5, 1063 -55, 1064 -55, 1065 -55, 1066 -55, 1067 -56.5, 1068 -56.5, 1069 -56.5, 1070 -57, 1071 -57, 1072 -57, 1073 -57.5, 1074 -57.5, 1075 -58, 1076 -58.5, 1077 -58.5, 1078 -58.5, 1079 -59, 1080 -60, 1081 -60, 1082 -61, 1083 -61, 1084 -61, 1085 -63.5833, 1086 -63.5833, 1087 -64, 1088 -64, 1089 -64, 1090 -64, 1091 -64, 1092 -65, 1093 -65, 1094 -67.5, 1095 -67.5, 1096 -67.5, 1097 -67.5, 1098 -67.5, 1099 -67.5, 1100 -70, 1101 -70, 1102 -70, 1103 -75, 1104 -75, 1105 -75, 1106 -75, 1107 -75, 1108 -75, 1109 -75, 1110 -75, 1111 -76, 1112 -82.5, 1113 -82.5, 1114 -82.5, 1115 -85, 1116 -90 1117 ]; 1118 1119 static immutable int[357] constel_numbers = [ 1120 84, 1121 84, 1122 84, 1123 84, 1124 16, 1125 11, 1126 16, 1127 11, 1128 84, 1129 34, 1130 16, 1131 11, 1132 84, 1133 16, 1134 11, 1135 34, 1136 84, 1137 14, 1138 34, 1139 34, 1140 16, 1141 84, 1142 16, 1143 34, 1144 34, 1145 16, 1146 11, 1147 34, 1148 16, 1149 11, 1150 83, 1151 34, 1152 16, 1153 16, 1154 14, 1155 34, 1156 14, 1157 14, 1158 11, 1159 16, 1160 11, 1161 83, 1162 34, 1163 11, 1164 16, 1165 16, 1166 14, 1167 51, 1168 83, 1169 34, 1170 16, 1171 11, 1172 14, 1173 34, 1174 63, 1175 34, 1176 14, 1177 63, 1178 51, 1179 14, 1180 83, 1181 14, 1182 14, 1183 40, 1184 34, 1185 31, 1186 63, 1187 83, 1188 14, 1189 83, 1190 51, 1191 31, 1192 31, 1193 31, 1194 83, 1195 83, 1196 9, 1197 40, 1198 51, 1199 1, 1200 63, 1201 52, 1202 63, 1203 31, 1204 45, 1205 8, 1206 51, 1207 1, 1208 45, 1209 45, 1210 1, 1211 63, 1212 83, 1213 30, 1214 51, 1215 49, 1216 1, 1217 9, 1218 1, 1219 30, 1220 1, 1221 30, 1222 81, 1223 63, 1224 8, 1225 52, 1226 83, 1227 31, 1228 8, 1229 49, 1230 30, 1231 1, 1232 81, 1233 8, 1234 38, 1235 31, 1236 31, 1237 81, 1238 26, 1239 9, 1240 26, 1241 52, 1242 49, 1243 52, 1244 81, 1245 67, 1246 49, 1247 88, 1248 78, 1249 1, 1250 74, 1251 38, 1252 88, 1253 88, 1254 1, 1255 88, 1256 38, 1257 88, 1258 88, 1259 7, 1260 76, 1261 60, 1262 38, 1263 76, 1264 78, 1265 40, 1266 76, 1267 78, 1268 78, 1269 24, 1270 40, 1271 24, 1272 38, 1273 40, 1274 62, 1275 78, 1276 38, 1277 62, 1278 38, 1279 40, 1280 32, 1281 62, 1282 46, 1283 60, 1284 38, 1285 22, 1286 62, 1287 7, 1288 32, 1289 9, 1290 62, 1291 22, 1292 46, 1293 59, 1294 4, 1295 32, 1296 21, 1297 74, 1298 40, 1299 59, 1300 62, 1301 67, 1302 74, 1303 32, 1304 35, 1305 62, 1306 62, 1307 62, 1308 21, 1309 78, 1310 60, 1311 21, 1312 86, 1313 59, 1314 17, 1315 78, 1316 74, 1317 60, 1318 60, 1319 74, 1320 74, 1321 4, 1322 67, 1323 46, 1324 86, 1325 67, 1326 67, 1327 86, 1328 59, 1329 4, 1330 5, 1331 59, 1332 55, 1333 36, 1334 60, 1335 42, 1336 75, 1337 86, 1338 59, 1339 4, 1340 36, 1341 5, 1342 74, 1343 73, 1344 42, 1345 59, 1346 42, 1347 27, 1348 72, 1349 48, 1350 29, 1351 86, 1352 42, 1353 17, 1354 36, 1355 27, 1356 29, 1357 48, 1358 59, 1359 17, 1360 12, 1361 5, 1362 17, 1363 42, 1364 36, 1365 47, 1366 12, 1367 42, 1368 42, 1369 48, 1370 72, 1371 36, 1372 59, 1373 77, 1374 42, 1375 20, 1376 42, 1377 42, 1378 37, 1379 69, 1380 36, 1381 77, 1382 66, 1383 71, 1384 37, 1385 2, 1386 71, 1387 37, 1388 36, 1389 71, 1390 15, 1391 50, 1392 72, 1393 10, 1394 23, 1395 68, 1396 36, 1397 72, 1398 25, 1399 77, 1400 54, 1401 36, 1402 10, 1403 50, 1404 64, 1405 36, 1406 41, 1407 10, 1408 39, 1409 68, 1410 85, 1411 36, 1412 41, 1413 64, 1414 13, 1415 85, 1416 41, 1417 33, 1418 64, 1419 36, 1420 65, 1421 50, 1422 85, 1423 13, 1424 15, 1425 50, 1426 57, 1427 33, 1428 85, 1429 15, 1430 6, 1431 79, 1432 39, 1433 41, 1434 65, 1435 13, 1436 64, 1437 36, 1438 64, 1439 33, 1440 57, 1441 44, 1442 65, 1443 19, 1444 6, 1445 19, 1446 6, 1447 65, 1448 13, 1449 15, 1450 28, 1451 15, 1452 19, 1453 6, 1454 41, 1455 70, 1456 19, 1457 6, 1458 61, 1459 82, 1460 33, 1461 19, 1462 80, 1463 82, 1464 43, 1465 87, 1466 13, 1467 56, 1468 61, 1469 44, 1470 82, 1471 82, 1472 43, 1473 18, 1474 3, 1475 53, 1476 58 1477 ]; 1478 1479 static immutable constel_names = [ 1480 "And", 1481 "Ant", 1482 "Aps", 1483 "Aql", 1484 "Aqr", 1485 "Ara", 1486 "Ari", 1487 "Aur", 1488 "Boo", 1489 "Cae", 1490 "Cam", 1491 "Cap", 1492 "Car", 1493 "Cas", 1494 "Cen", 1495 "Cep", 1496 "Cet", 1497 "Cha", 1498 "Cir", 1499 "CMa", 1500 "CMi", 1501 "Cnc", 1502 "Col", 1503 "Com", 1504 "CrA", 1505 "CrB", 1506 "Crt", 1507 "Cru", 1508 "Crv", 1509 "CVn", 1510 "Cyg", 1511 "Del", 1512 "Dor", 1513 "Dra", 1514 "Equ", 1515 "Eri", 1516 "For", 1517 "Gem", 1518 "Gru", 1519 "Her", 1520 "Hor", 1521 "Hya", 1522 "Hyi", 1523 "Ind", 1524 "Lac", 1525 "Leo", 1526 "Lep", 1527 "Lib", 1528 "LMi", 1529 "Lup", 1530 "Lyn", 1531 "Lyr", 1532 "Men", 1533 "Mic", 1534 "Mon", 1535 "Mus", 1536 "Nor", 1537 "Oct", 1538 "Oph", 1539 "Ori", 1540 "Pav", 1541 "Peg", 1542 "Per", 1543 "Phe", 1544 "Pic", 1545 "PsA", 1546 "Psc", 1547 "Pup", 1548 "Pyx", 1549 "Ret", 1550 "Scl", 1551 "Sco", 1552 "Sct", 1553 "Ser", 1554 "Sex", 1555 "Sge", 1556 "Sgr", 1557 "Tau", 1558 "Tel", 1559 "TrA", 1560 "Tri", 1561 "Tuc", 1562 "UMa", 1563 "UMi", 1564 "Vel", 1565 "Vir", 1566 "Vol", 1567 "Vul" 1568 ]; 1569 1570 int i = 0; 1571 1572 if((position.ra >= 0) || (position.ra < 360) || (position.dec >= -90) || (position.dec <= 90)) 1573 { 1574 while((position.ra < ra_lower[i]) || (position.ra >= ra_upper[i]) || (position.dec < dec_lower[i])) 1575 i++; 1576 1577 return constel_names[constel_numbers[i] - 1]; 1578 } 1579 else 1580 { 1581 return "---"; 1582 } 1583 } 1584 1585 }