File indexing completed on 2023-10-01 07:46:10
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2006-2007 Torsten Rahn <tackat@kde.org> 0004 // SPDX-FileCopyrightText: 2007 Inge Wallin <ingwa@kde.org> 0005 // SPDX-FileCopyrightText: 2013 Mohammed Nafees <nafees.technocool@gmail.com> 0006 // 0007 0008 0009 #include <QFile> 0010 #include <QDebug> 0011 #include <QCoreApplication> 0012 #include <QFileInfo> 0013 #include <QDataStream> 0014 0015 #include <cmath> 0016 #include <iostream> 0017 0018 #define ENABLEGUI 0019 0020 // Set up Color Table Per B-V Color indices from some Reference Stars 0021 QVector<double> colorTable( 0 ); 0022 0023 void exportToDat() 0024 { 0025 QFile file("stars.dat"); 0026 file.open(QIODevice::WriteOnly); 0027 QDataStream out(&file); 0028 0029 // Write a header with a "magic number" and a version 0030 out << (quint32)0x73746172; 0031 out << (qint32)004; 0032 0033 out.setVersion(QDataStream::Qt_4_3); 0034 0035 QFile data("catalog.dat"); 0036 if ( data.open( QFile::ReadOnly ) ) { 0037 QTextStream stream(&data); 0038 QString line; 0039 do { 0040 line = stream.readLine(); 0041 0042 QString idString = line.mid(0,4); 0043 int idValue = idString.toInt(); 0044 0045 QString recString = line.mid( 75, 6 ); 0046 0047 double raHH = recString.mid( 0, 2 ).toDouble(); 0048 double raMM = recString.mid( 2, 2 ).toDouble(); 0049 double raSS = recString.mid( 4, 2 ).toDouble(); 0050 0051 double raValue = 15 * ( raHH + raMM / 60.0 + raSS / 3600.0 ) / 180.0 * M_PI; 0052 0053 QString decString = line.mid( 83, 7 ); 0054 0055 double deSign = decString.startsWith(QLatin1Char('-')) ? -1.0 : 1.0; 0056 double deHH = decString.mid( 1, 2 ).toDouble(); 0057 double deMM = decString.mid( 3, 2 ).toDouble(); 0058 double deSS = decString.mid( 5, 2 ).toDouble(); 0059 0060 double deValue = deSign * ( deHH + deMM / 60.0 + deSS / 3600.0 ) / 180.0 * M_PI; 0061 0062 QString magString = line.mid( 102, 5 ); 0063 double magValue = magString.toDouble(); 0064 0065 QString bvString = line.mid( 108, 6); 0066 int colorIdx = 2; // Default White 0067 0068 // Find Index of Table Entry with Closest B-V value (Smallest Difference) 0069 if (bvString != QLatin1String(" ")) { 0070 double bvValue = bvString.toDouble(); 0071 double bvMinDifference = fabs(colorTable.at(0)-bvValue); 0072 for (int i = 1; i < colorTable.size(); ++i) { 0073 double bvDifference = fabs(colorTable.at(i)-bvValue); 0074 if (bvDifference < bvMinDifference) { 0075 colorIdx = i; 0076 bvMinDifference = bvDifference; 0077 } 0078 } 0079 } 0080 0081 0082 // qDebug() << "Rec:" << recString << "Dec.:" << decString << "Mag.:" << magString; 0083 if ( !line.isNull() && magValue < 6.0 ) { 0084 if (raValue != 0 && deValue != 0) { // Filter out Novae and DSOs 0085 if (idValue != 5958) { // Filter out special cases, like novae ( T CrB, ... ) 0086 qDebug() << "ID:" << idValue << "RA:" << raValue << "DE:" << deValue << "mag:" << magValue << "B-V:" << bvString << "idx:" << colorIdx; 0087 out << idValue; 0088 out << raValue; 0089 out << deValue; 0090 out << magValue; 0091 out << colorIdx; 0092 } 0093 } 0094 } 0095 } while ( !line.isNull() ); 0096 } 0097 file.flush(); 0098 } 0099 0100 void exportToKml() 0101 { 0102 QFile file("kmlsky.kml"); 0103 file.open(QIODevice::WriteOnly); 0104 QTextStream out(&file); 0105 0106 out << "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n" 0107 << "<kml xmlns=\"http://www.opengis.net/kml/2.2\" hint=\"target=sky\"> \n" 0108 << "<Document> \n" 0109 << " <Style id=\"mag-1 blue\"> \n" 0110 << " <IconStyle> \n" 0111 << " <Icon> \n" 0112 << " <href>data/star_0_blue.png</href> \n" 0113 << " </Icon> \n" 0114 << " </IconStyle> \n" 0115 << " </Style> \n" 0116 << " <Style id=\"mag0 blue\"> \n" 0117 << " <IconStyle> \n" 0118 << " <Icon> \n" 0119 << " <href>data/star_1_blue.png</href> \n" 0120 << " </Icon> \n" 0121 << " </IconStyle> \n" 0122 << " </Style> \n" 0123 << " <Style id=\"mag1 blue\"> \n" 0124 << " <IconStyle> \n" 0125 << " <Icon> \n" 0126 << " <href>data/star_2_blue.png</href> \n" 0127 << " </Icon> \n" 0128 << " </IconStyle> \n" 0129 << " </Style> \n" 0130 << " <Style id=\"mag2 blue\"> \n" 0131 << " <IconStyle> \n" 0132 << " <Icon> \n" 0133 << " <href>data/star_3_blue.png</href> \n" 0134 << " </Icon> \n" 0135 << " </IconStyle> \n" 0136 << " </Style> \n" 0137 << " <Style id=\"mag3 blue\"> \n" 0138 << " <IconStyle> \n" 0139 << " <Icon> \n" 0140 << " <href>data/star_4_blue.png</href> \n" 0141 << " </Icon> \n" 0142 << " </IconStyle> \n" 0143 << " </Style> \n" 0144 << " <Style id=\"mag4 blue\"> \n" 0145 << " <IconStyle> \n" 0146 << " <Icon> \n" 0147 << " <href>data/star_5_blue.png</href> \n" 0148 << " </Icon> \n" 0149 << " </IconStyle> \n" 0150 << " </Style> \n" 0151 << " <Style id=\"mag5 blue\"> \n" 0152 << " <IconStyle> \n" 0153 << " <Icon> \n" 0154 << " <href>data/star_6_blue.png</href> \n" 0155 << " </Icon> \n" 0156 << " </IconStyle> \n" 0157 << " </Style> \n" 0158 << " <Style id=\"mag6 blue\"> \n" 0159 << " <IconStyle> \n" 0160 << " <Icon> \n" 0161 << " <href>data/star_7_blue.png</href> \n" 0162 << " </Icon> \n" 0163 << " </IconStyle> \n" 0164 << " </Style> \n" 0165 << " <Style id=\"mag7 blue\"> \n" 0166 << " <IconStyle> \n" 0167 << " <Icon> \n" 0168 << " <href>data/star_8_blue.png</href> \n" 0169 << " </Icon> \n" 0170 << " </IconStyle> \n" 0171 << " </Style> \n" 0172 << " <Style id=\"mag-1 bluewhite\"> \n" 0173 << " <IconStyle> \n" 0174 << " <Icon> \n" 0175 << " <href>data/star_0_bluewhite.png</href> \n" 0176 << " </Icon> \n" 0177 << " </IconStyle> \n" 0178 << " </Style> \n" 0179 << " <Style id=\"mag0 bluewhite\"> \n" 0180 << " <IconStyle> \n" 0181 << " <Icon> \n" 0182 << " <href>data/star_1_bluewhite.png</href> \n" 0183 << " </Icon> \n" 0184 << " </IconStyle> \n" 0185 << " </Style> \n" 0186 << " <Style id=\"mag1 bluewhite\"> \n" 0187 << " <IconStyle> \n" 0188 << " <Icon> \n" 0189 << " <href>data/star_2_bluewhite.png</href> \n" 0190 << " </Icon> \n" 0191 << " </IconStyle> \n" 0192 << " </Style> \n" 0193 << " <Style id=\"mag2 bluewhite\"> \n" 0194 << " <IconStyle> \n" 0195 << " <Icon> \n" 0196 << " <href>data/star_3_bluewhite.png</href> \n" 0197 << " </Icon> \n" 0198 << " </IconStyle> \n" 0199 << " </Style> \n" 0200 << " <Style id=\"mag3 bluewhite\"> \n" 0201 << " <IconStyle> \n" 0202 << " <Icon> \n" 0203 << " <href>data/star_4_bluewhite.png</href> \n" 0204 << " </Icon> \n" 0205 << " </IconStyle> \n" 0206 << " </Style> \n" 0207 << " <Style id=\"mag4 bluewhite\"> \n" 0208 << " <IconStyle> \n" 0209 << " <Icon> \n" 0210 << " <href>data/star_5_bluewhite.png</href> \n" 0211 << " </Icon> \n" 0212 << " </IconStyle> \n" 0213 << " </Style> \n" 0214 << " <Style id=\"mag5 bluewhite\"> \n" 0215 << " <IconStyle> \n" 0216 << " <Icon> \n" 0217 << " <href>data/star_6_bluewhite.png</href> \n" 0218 << " </Icon> \n" 0219 << " </IconStyle> \n" 0220 << " </Style> \n" 0221 << " <Style id=\"mag6 bluewhite\"> \n" 0222 << " <IconStyle> \n" 0223 << " <Icon> \n" 0224 << " <href>data/star_7_bluewhite.png</href> \n" 0225 << " </Icon> \n" 0226 << " </IconStyle> \n" 0227 << " </Style> \n" 0228 << " <Style id=\"mag7 bluewhite\"> \n" 0229 << " <IconStyle> \n" 0230 << " <Icon> \n" 0231 << " <href>data/star_8_bluewhite.png</href> \n" 0232 << " </Icon> \n" 0233 << " </IconStyle> \n" 0234 << " </Style> \n" 0235 << " <Style id=\"mag-1 white\"> \n" 0236 << " <IconStyle> \n" 0237 << " <Icon> \n" 0238 << " <href>data/star_0_white.png</href> \n" 0239 << " </Icon> \n" 0240 << " </IconStyle> \n" 0241 << " </Style> \n" 0242 << " <Style id=\"mag0 white\"> \n" 0243 << " <IconStyle> \n" 0244 << " <Icon> \n" 0245 << " <href>data/star_1_white.png</href> \n" 0246 << " </Icon> \n" 0247 << " </IconStyle> \n" 0248 << " </Style> \n" 0249 << " <Style id=\"mag1 white\"> \n" 0250 << " <IconStyle> \n" 0251 << " <Icon> \n" 0252 << " <href>data/star_2_white.png</href> \n" 0253 << " </Icon> \n" 0254 << " </IconStyle> \n" 0255 << " </Style> \n" 0256 << " <Style id=\"mag2 white\"> \n" 0257 << " <IconStyle> \n" 0258 << " <Icon> \n" 0259 << " <href>data/star_3_white.png</href> \n" 0260 << " </Icon> \n" 0261 << " </IconStyle> \n" 0262 << " </Style> \n" 0263 << " <Style id=\"mag3 white\"> \n" 0264 << " <IconStyle> \n" 0265 << " <Icon> \n" 0266 << " <href>data/star_4_white.png</href> \n" 0267 << " </Icon> \n" 0268 << " </IconStyle> \n" 0269 << " </Style> \n" 0270 << " <Style id=\"mag4 white\"> \n" 0271 << " <IconStyle> \n" 0272 << " <Icon> \n" 0273 << " <href>data/star_5_white.png</href> \n" 0274 << " </Icon> \n" 0275 << " </IconStyle> \n" 0276 << " </Style> \n" 0277 << " <Style id=\"mag5 white\"> \n" 0278 << " <IconStyle> \n" 0279 << " <Icon> \n" 0280 << " <href>data/star_6_white.png</href> \n" 0281 << " </Icon> \n" 0282 << " </IconStyle> \n" 0283 << " </Style> \n" 0284 << " <Style id=\"mag6 white\"> \n" 0285 << " <IconStyle> \n" 0286 << " <Icon> \n" 0287 << " <href>data/star_7_white.png</href> \n" 0288 << " </Icon> \n" 0289 << " </IconStyle> \n" 0290 << " </Style> \n" 0291 << " <Style id=\"mag7 white\"> \n" 0292 << " <IconStyle> \n" 0293 << " <Icon> \n" 0294 << " <href>data/star_8_white.png</href> \n" 0295 << " </Icon> \n" 0296 << " </IconStyle> \n" 0297 << " </Style> \n" 0298 << " <Style id=\"mag-1 yellow\"> \n" 0299 << " <IconStyle> \n" 0300 << " <Icon> \n" 0301 << " <href>data/star_0_yellow.png</href> \n" 0302 << " </Icon> \n" 0303 << " </IconStyle> \n" 0304 << " </Style> \n" 0305 << " <Style id=\"mag0 yellow\"> \n" 0306 << " <IconStyle> \n" 0307 << " <Icon> \n" 0308 << " <href>data/star_1_yellow.png</href> \n" 0309 << " </Icon> \n" 0310 << " </IconStyle> \n" 0311 << " </Style> \n" 0312 << " <Style id=\"mag1 yellow\"> \n" 0313 << " <IconStyle> \n" 0314 << " <Icon> \n" 0315 << " <href>data/star_2_yellow.png</href> \n" 0316 << " </Icon> \n" 0317 << " </IconStyle> \n" 0318 << " </Style> \n" 0319 << " <Style id=\"mag2 yellow\"> \n" 0320 << " <IconStyle> \n" 0321 << " <Icon> \n" 0322 << " <href>data/star_3_yellow.png</href> \n" 0323 << " </Icon> \n" 0324 << " </IconStyle> \n" 0325 << " </Style> \n" 0326 << " <Style id=\"mag3 yellow\"> \n" 0327 << " <IconStyle> \n" 0328 << " <Icon> \n" 0329 << " <href>data/star_4_yellow.png</href> \n" 0330 << " </Icon> \n" 0331 << " </IconStyle> \n" 0332 << " </Style> \n" 0333 << " <Style id=\"mag4 yellow\"> \n" 0334 << " <IconStyle> \n" 0335 << " <Icon> \n" 0336 << " <href>data/star_5_yellow.png</href> \n" 0337 << " </Icon> \n" 0338 << " </IconStyle> \n" 0339 << " </Style> \n" 0340 << " <Style id=\"mag5 yellow\"> \n" 0341 << " <IconStyle> \n" 0342 << " <Icon> \n" 0343 << " <href>data/star_6_yellow.png</href> \n" 0344 << " </Icon> \n" 0345 << " </IconStyle> \n" 0346 << " </Style> \n" 0347 << " <Style id=\"mag6 yellow\"> \n" 0348 << " <IconStyle> \n" 0349 << " <Icon> \n" 0350 << " <href>data/star_7_yellow.png</href> \n" 0351 << " </Icon> \n" 0352 << " </IconStyle> \n" 0353 << " </Style> \n" 0354 << " <Style id=\"mag7 yellow\"> \n" 0355 << " <IconStyle> \n" 0356 << " <Icon> \n" 0357 << " <href>data/star_8_yellow.png</href> \n" 0358 << " </Icon> \n" 0359 << " </IconStyle> \n" 0360 << " </Style> \n" 0361 << " <Style id=\"mag-1 orange\"> \n" 0362 << " <IconStyle> \n" 0363 << " <Icon> \n" 0364 << " <href>data/star_0_orange.png</href> \n" 0365 << " </Icon> \n" 0366 << " </IconStyle> \n" 0367 << " </Style> \n" 0368 << " <Style id=\"mag0 orange\"> \n" 0369 << " <IconStyle> \n" 0370 << " <Icon> \n" 0371 << " <href>data/star_1_orange.png</href> \n" 0372 << " </Icon> \n" 0373 << " </IconStyle> \n" 0374 << " </Style> \n" 0375 << " <Style id=\"mag1 orange\"> \n" 0376 << " <IconStyle> \n" 0377 << " <Icon> \n" 0378 << " <href>data/star_2_orange.png</href> \n" 0379 << " </Icon> \n" 0380 << " </IconStyle> \n" 0381 << " </Style> \n" 0382 << " <Style id=\"mag2 orange\"> \n" 0383 << " <IconStyle> \n" 0384 << " <Icon> \n" 0385 << " <href>data/star_3_orange.png</href> \n" 0386 << " </Icon> \n" 0387 << " </IconStyle> \n" 0388 << " </Style> \n" 0389 << " <Style id=\"mag3 orange\"> \n" 0390 << " <IconStyle> \n" 0391 << " <Icon> \n" 0392 << " <href>data/star_4_orange.png</href> \n" 0393 << " </Icon> \n" 0394 << " </IconStyle> \n" 0395 << " </Style> \n" 0396 << " <Style id=\"mag4 orange\"> \n" 0397 << " <IconStyle> \n" 0398 << " <Icon> \n" 0399 << " <href>data/star_5_orange.png</href> \n" 0400 << " </Icon> \n" 0401 << " </IconStyle> \n" 0402 << " </Style> \n" 0403 << " <Style id=\"mag5 orange\"> \n" 0404 << " <IconStyle> \n" 0405 << " <Icon> \n" 0406 << " <href>data/star_6_orange.png</href> \n" 0407 << " </Icon> \n" 0408 << " </IconStyle> \n" 0409 << " </Style> \n" 0410 << " <Style id=\"mag6 orange\"> \n" 0411 << " <IconStyle> \n" 0412 << " <Icon> \n" 0413 << " <href>data/star_7_orange.png</href> \n" 0414 << " </Icon> \n" 0415 << " </IconStyle> \n" 0416 << " </Style> \n" 0417 << " <Style id=\"mag7 orange\"> \n" 0418 << " <IconStyle> \n" 0419 << " <Icon> \n" 0420 << " <href>data/star_8_orange.png</href> \n" 0421 << " </Icon> \n" 0422 << " </IconStyle> \n" 0423 << " </Style> \n" 0424 << " <Style id=\"mag-1 red\"> \n" 0425 << " <IconStyle> \n" 0426 << " <Icon> \n" 0427 << " <href>data/star_0_red.png</href> \n" 0428 << " </Icon> \n" 0429 << " </IconStyle> \n" 0430 << " </Style> \n" 0431 << " <Style id=\"mag0 red\"> \n" 0432 << " <IconStyle> \n" 0433 << " <Icon> \n" 0434 << " <href>data/star_1_red.png</href> \n" 0435 << " </Icon> \n" 0436 << " </IconStyle> \n" 0437 << " </Style> \n" 0438 << " <Style id=\"mag1 red\"> \n" 0439 << " <IconStyle> \n" 0440 << " <Icon> \n" 0441 << " <href>data/star_2_red.png</href> \n" 0442 << " </Icon> \n" 0443 << " </IconStyle> \n" 0444 << " </Style> \n" 0445 << " <Style id=\"mag2 red\"> \n" 0446 << " <IconStyle> \n" 0447 << " <Icon> \n" 0448 << " <href>data/star_3_red.png</href> \n" 0449 << " </Icon> \n" 0450 << " </IconStyle> \n" 0451 << " </Style> \n" 0452 << " <Style id=\"mag3 red\"> \n" 0453 << " <IconStyle> \n" 0454 << " <Icon> \n" 0455 << " <href>data/star_4_red.png</href> \n" 0456 << " </Icon> \n" 0457 << " </IconStyle> \n" 0458 << " </Style> \n" 0459 << " <Style id=\"mag4 red\"> \n" 0460 << " <IconStyle> \n" 0461 << " <Icon> \n" 0462 << " <href>data/star_5_red.png</href> \n" 0463 << " </Icon> \n" 0464 << " </IconStyle> \n" 0465 << " </Style> \n" 0466 << " <Style id=\"mag5 red\"> \n" 0467 << " <IconStyle> \n" 0468 << " <Icon> \n" 0469 << " <href>data/star_6_red.png</href> \n" 0470 << " </Icon> \n" 0471 << " </IconStyle> \n" 0472 << " </Style> \n" 0473 << " <Style id=\"mag6 red\"> \n" 0474 << " <IconStyle> \n" 0475 << " <Icon> \n" 0476 << " <href>data/star_7_red.png</href> \n" 0477 << " </Icon> \n" 0478 << " </IconStyle> \n" 0479 << " </Style> \n" 0480 << " <Style id=\"mag7 red\"> \n" 0481 << " <IconStyle> \n" 0482 << " <Icon> \n" 0483 << " <href>data/star_8_red.png</href> \n" 0484 << " </Icon> \n" 0485 << " </IconStyle> \n" 0486 << " </Style> \n" 0487 << " <Style id=\"mag-1 garnetred\"> \n" 0488 << " <IconStyle> \n" 0489 << " <Icon> \n" 0490 << " <href>data/star_0_garnetred.png</href> \n" 0491 << " </Icon> \n" 0492 << " </IconStyle> \n" 0493 << " </Style> \n" 0494 << " <Style id=\"mag0 garnetred\"> \n" 0495 << " <IconStyle> \n" 0496 << " <Icon> \n" 0497 << " <href>data/star_1_garnetred.png</href> \n" 0498 << " </Icon> \n" 0499 << " </IconStyle> \n" 0500 << " </Style> \n" 0501 << " <Style id=\"mag1 garnetred\"> \n" 0502 << " <IconStyle> \n" 0503 << " <Icon> \n" 0504 << " <href>data/star_2_garnetred.png</href> \n" 0505 << " </Icon> \n" 0506 << " </IconStyle> \n" 0507 << " </Style> \n" 0508 << " <Style id=\"mag2 garnetred\"> \n" 0509 << " <IconStyle> \n" 0510 << " <Icon> \n" 0511 << " <href>data/star_3_garnetred.png</href> \n" 0512 << " </Icon> \n" 0513 << " </IconStyle> \n" 0514 << " </Style> \n" 0515 << " <Style id=\"mag3 garnetred\"> \n" 0516 << " <IconStyle> \n" 0517 << " <Icon> \n" 0518 << " <href>data/star_4_garnetred.png</href> \n" 0519 << " </Icon> \n" 0520 << " </IconStyle> \n" 0521 << " </Style> \n" 0522 << " <Style id=\"mag4 garnetred\"> \n" 0523 << " <IconStyle> \n" 0524 << " <Icon> \n" 0525 << " <href>data/star_5_garnetred.png</href> \n" 0526 << " </Icon> \n" 0527 << " </IconStyle> \n" 0528 << " </Style> \n" 0529 << " <Style id=\"mag5 garnetred\"> \n" 0530 << " <IconStyle> \n" 0531 << " <Icon> \n" 0532 << " <href>data/star_6_garnetred.png</href> \n" 0533 << " </Icon> \n" 0534 << " </IconStyle> \n" 0535 << " </Style> \n" 0536 << " <Style id=\"mag6 garnetred\"> \n" 0537 << " <IconStyle> \n" 0538 << " <Icon> \n" 0539 << " <href>data/star_7_garnetred.png</href> \n" 0540 << " </Icon> \n" 0541 << " </IconStyle> \n" 0542 << " </Style> \n" 0543 << " <Style id=\"mag7 garnetred\"> \n" 0544 << " <IconStyle> \n" 0545 << " <Icon> \n" 0546 << " <href>data/star_8_garnetred.png</href> \n" 0547 << " </Icon> \n" 0548 << " </IconStyle> \n" 0549 << " </Style> \n"; 0550 0551 QFile data("catalog.dat"); 0552 if ( data.open( QFile::ReadOnly ) ) { 0553 QTextStream stream(&data); 0554 QString line; 0555 do { 0556 line = stream.readLine(); 0557 0558 QString recString = line.mid( 75, 6 ); 0559 double raHH = recString.mid( 0, 2 ).toDouble(); 0560 double raMM = recString.mid( 2, 2 ).toDouble(); 0561 double raSS = recString.mid( 4, 2 ).toDouble(); 0562 0563 qreal longitude = ( raHH + raMM / 60.0 + raSS / 3600.0 ) * 15.0 - 180.0; 0564 0565 QString decString = line.mid( 83, 7 ); 0566 double deSign = decString.startsWith(QLatin1Char('-')) ? -1.0 : 1.0; 0567 double deHH = decString.mid( 1, 2 ).toDouble(); 0568 double deMM = decString.mid( 3, 2 ).toDouble(); 0569 double deSS = decString.mid( 5, 2 ).toDouble(); 0570 0571 double deValue = deSign * ( deHH + deMM / 60.0 + deSS / 3600.0 ); 0572 0573 qreal latitude = deValue; 0574 0575 QString magString = line.mid( 102, 5 ); 0576 double magValue = magString.toDouble(); 0577 0578 QString bvString = line.mid( 108, 6); 0579 int colorIdx = 2; // Default White 0580 0581 // Find Index of Table Entry with Closest B-V value (Smallest Difference) 0582 if (bvString != QLatin1String(" ")) { 0583 double bvValue = bvString.toDouble(); 0584 double bvMinDifference = fabs(colorTable.at(0)-bvValue); 0585 for (int i = 1; i < colorTable.size(); ++i) { 0586 double bvDifference = fabs(colorTable.at(i)-bvValue); 0587 if (bvDifference < bvMinDifference) { 0588 colorIdx = i; 0589 bvMinDifference = bvDifference; 0590 } 0591 } 0592 } 0593 0594 QString styleId; 0595 if ( magValue < -1 ) { 0596 styleId = "mag-1"; 0597 } 0598 else if ( magValue < 0 && magValue > -1 ) { 0599 styleId = "mag0"; 0600 } 0601 else if ( magValue < 1 && magValue > 0 ) { 0602 styleId = "mag1"; 0603 } 0604 else if ( magValue < 2 && magValue > 1 ) { 0605 styleId = "mag2"; 0606 } 0607 else if ( magValue < 3 && magValue > 2 ) { 0608 styleId = "mag3"; 0609 } 0610 else if ( magValue < 4 && magValue > 3 ) { 0611 styleId = "mag4"; 0612 } 0613 else if ( magValue < 5 && magValue > 4 ) { 0614 styleId = "mag5"; 0615 } 0616 else if ( magValue < 6 && magValue > 5 ) { 0617 styleId = "mag6"; 0618 } 0619 else { 0620 styleId = "mag7"; 0621 } 0622 0623 if ( colorIdx == 0 ) { 0624 styleId += QLatin1String(" blue"); 0625 } else if ( colorIdx == 1 ) { 0626 styleId += QLatin1String(" bluewhite"); 0627 } else if ( colorIdx == 3 ) { 0628 styleId += QLatin1String(" yellow"); 0629 } else if ( colorIdx == 4 ) { 0630 styleId += QLatin1String(" orange"); 0631 } else if ( colorIdx == 5 ) { 0632 styleId += QLatin1String(" red"); 0633 } else if ( colorIdx == 6 ) { 0634 styleId += QLatin1String(" garnetred"); 0635 } else { 0636 // white and no color ID 0637 styleId += QLatin1String(" white"); 0638 } 0639 0640 out << " <Placemark> \n"; 0641 0642 QString name = line.mid( 7, 3 ); 0643 if (name == QLatin1String("Alp")) { 0644 out << " <name>" << QString::fromUtf8( "α" ) << "</name> \n"; 0645 } else if (name == QLatin1String("Bet")) { 0646 out << " <name>" << QString::fromUtf8( "β" ) << "</name> \n"; 0647 } else if (name == QLatin1String("Gam")) { 0648 out << " <name>" << QString::fromUtf8( "γ" ) << "</name> \n"; 0649 } else if (name == QLatin1String("Del")) { 0650 out << " <name>" << QString::fromUtf8( "δ" ) << "</name> \n"; 0651 } else if (name == QLatin1String("Eps")) { 0652 out << " <name>" << QString::fromUtf8( "ε" ) << "</name> \n"; 0653 } 0654 0655 out << " <styleUrl>#" << styleId << "</styleUrl> \n" 0656 << " <Point> \n" 0657 << " <coordinates>" << longitude << "," << latitude << ",0" << "</coordinates> \n" 0658 << " </Point> \n" 0659 << " </Placemark> \n"; 0660 0661 } while ( !line.isNull() ); 0662 } 0663 0664 out << "</Document> \n" 0665 << "</kml> \n"; 0666 0667 file.close(); 0668 } 0669 0670 int main(int argc, char *argv[]) 0671 { 0672 QCoreApplication app(argc, argv); 0673 0674 if (!QFileInfo("catalog.dat").exists()) 0675 { 0676 std::cerr << "Missing stars.dat in current directory. Exiting." << std::endl; 0677 return 1; 0678 } 0679 0680 colorTable.append(double(-0.23)); // Spica blue 0681 colorTable.append(double(0.0)); //Rigel blue-white 0682 colorTable.append(double(0.09)); //Deneb white 0683 colorTable.append(double(0.80)); //Capella yellow 0684 colorTable.append(double(1.23)); //Arcturus orange 0685 colorTable.append(double(1.85)); //Betelgeuse red 0686 colorTable.append(double(2.35)); //Mu Cep garnet red 0687 0688 exportToDat(); 0689 exportToKml(); 0690 0691 QFile starFile("stars.dat"); 0692 starFile.open(QIODevice::ReadOnly); 0693 QDataStream in(&starFile); // read the data serialized from the file 0694 // Read and check the header 0695 quint32 magic; 0696 in >> magic; 0697 if (magic != 0x73746172) 0698 return -1; 0699 0700 // Read the version 0701 qint32 version; 0702 in >> version; 0703 if (version > 004) { 0704 qDebug() << "stars.dat: file too new."; 0705 return -1; 0706 } 0707 int id; 0708 double ra; 0709 double de; 0710 double mag; 0711 int colorIdx; 0712 0713 while ( !in.atEnd() ) { 0714 in >> id; 0715 in >> ra; 0716 in >> de; 0717 in >> mag; 0718 in >> colorIdx; 0719 qDebug() << "ID:" << id << "RA:" << ra << "DE:" << de << "MAG:" << mag << "idx:" << colorIdx; 0720 } 0721 0722 app.exit(); 0723 }