Warning, /education/kstars/kstars/tools/whatsinteresting/WI_Improvement_Notes.org is written in an unsupported language. File is not indexed.

0001 * Aim
0002 + Get what's interesting to auto-suggest objects for all user levels.
0003 + Show only interesting objects, not every object under the sun like
0004   we do now.
0005 + "Interesting" is decided then by manual input -- either from
0006   pre-loaded hand-coded lists [default], or at the option of the user,
0007   their own observing wishlist
0008 + Incidentally, we should move observing wishlist into the user DB so
0009   that we only insert / remove -- prevents losing the wishlist upon a
0010   crash like it happens now
0011 * User settings / input
0012 The user chooses the following in the configuration dialog:
0013 ** Already present
0014 + Sky conditions (Bortle)
0015 + Equipment availability (Naked eye / binocular / telescope)
0016 ** New
0017 + Meridian +/- how many hours to show
0018 + A checkbox to avoid "the hole" for Dobsonian telescopes
0019 + Experience level of the user (scale of 1 to 6)
0020 + Special interest: Astrophotography vs. Visual (may be a later feature)
0021 *** Auto-suggest
0022 + What kinds of objects to auto-suggest (eg: open clusters, globular
0023   clusters, nebulae, galaxies...)
0024 OR
0025 + Suggest only from observing wishlist
0026 * How does it work
0027 ** Lists of objects
0028 + We have hand-coded lists of objects for each user level, for each
0029   special interest, that are put into a SQLite db, say interesting.db
0030 + Only bright and/or truly interesting objects go into these
0031   lists. Showing every NGC open cluster is meaningless.
0032 + Lists in the DB are indexed by RA hour
0033 + Each list entry has Name, RA hour (index), Dec ten-degree zone,
0034   guesstimated minimum aperture needed (can be zero), guesstimated aperture in which
0035   it gets interesting (can be zero), a hand-written translatable
0036   description, a last observed timestamp, and links to websites.
0037 *** What goes into the lists?
0038 + The level 1 lists contain things like planets, constellations,
0039   double stars, naked eye objects, bright telescopic double stars.
0040 + The level 2 lists contain most of the (bright) Messier objects
0041   (excluding things like Virgo cluster galaxies, M 76, M 97, M 74...)
0042   and some bright NGC/other objects (eg: many Caldwell objects, Double
0043   cluster, NGC 253, and other 'why is this not a Messier?' candidates)
0044 + The level 3 lists contain the remaining Messier objects, the fainter
0045   Caldwell objects, and many of the brighter NGC/IC/other objects (eg:
0046   The Eyes, Ghost of Jupiter, NGC 55, NGC 891...)
0047 + The level 4 lists contain lesser known NGC/IC objects (eg: NGC
0048   134, NGC 247, NGC 40, ...) and a few lesser known catalogs (eg:
0049   Seagull nebula).
0050 + The level 5 lists have some of the usual 'challenge' objects (eg:
0051   Leo-I, B33, Jellyfish neb, Integral sign, Jones 1, JnEr 1, Stephen's
0052   Quintet, Medusa Neb...)
0053 + The level 6 lists unleash the hard catalogs (eg: Holmberg, HCG, Arp,
0054   Palomar, some hand-picked ACO...)
0055 + The level 7 lists go into the land of advanced observers (eg: Tidal
0056   tails, Voorwerps, Shakbazians, Ring galaxies, lensed quasars and
0057   other scary stuff)
0058 ** Algorithm
0059 *** Iterate the following until a solution is found, or we tried 10 times:
0060 + By using some fuzzy combination of the user's observing conditions,
0061   we pick a different one of the 7 lists at random. We will weight it
0062   such that the list matching the user's skill level is the most
0063   likely one to be hit, compensating a bit for Bortle and
0064   instrumentation.
0065 + We then look at the user's hour-angle range preferences to pick the
0066   RAs currently in the range, and load all objects matching into
0067   memory.
0068 + We then remove any objects in the list that are not available in
0069   KStars (check the objectNames hashes).
0070 + We then apply the type filter on the list. The list probably doesn't
0071   contain more than 20 ~ 30 objects (might grow to a 200 ~ 300
0072   eventually) at this point, so it should be fast to do these
0073   operations.
0074 + We then pick an element of this list at random; at any point if we
0075   the object fails to meet criteria, we remove that element and pick a
0076   different one.
0077   + We then apply the hole constraint.
0078   + Then, we check if the object is compatible with the user's
0079     observing conditions (surface brightness of the object vs Bortle,
0080     telescope availability...)
0081   + Then, we present the object
0082 + If we have an empty list before we can present an object, we go back
0083   to the beginning and pick a different list.
0084 *** If we fail, we show the user an info message saying they must relax their constraints.
0085 ** Algorithm if we are using the wishlist
0086 + Wishlist must be saved with RA hour.
0087 + Select items from the wishlist that satisfy the hour angle
0088   constraint (DB query) and load into a list.
0089 + Select an element at random and check if it satisfies the hole
0090   constraint. If it does not, remove it from the list, then try again.
0091 + If we find no objects, display the same error message.
0092 ** Improvements:
0093 + Incorporate timestamp of last observation, i.e. show only
0094   non-observed objects for a long time.
0095 + Try to repeat showing 'all-time favorites'.