Monday, June 25, 2012

Dust tail prep

How the dust tail is modeled


Dust tail to be represented as a quadratic equation (vertex points along the curve) Then tail will be planar. Dust velocity equation will act as axis of symmetry, axisDV
1. First get quadratic equation kx**2, where k is calculated from dust ejection velocity, and magnitude from heliocentric distance (k is determined by comparing those two values of many comets, via testing)
2. Get a list of vertex points, vertexArray
3. Since that equation's axis of symmetry will be x=0, we can get the rotation to aDV, A
4. Next, get the translation to the point in space, B
5. Combine these to the final transformation matrix T(x) = B(A(x))
6. Put all points in vertexArray through T


Finding k, which represents the magnitude of the dust tail, from comparing the usual case of dust ejection velocity (which takes into account heliocentric distance) vector length.

Min dust ejection velocity vector length: 5.2853 
Max DEV length: 23.2426
Usual DEV length: (10, 15)

k = DEV_length * factor // TODO: need factor? Can only determine after drawing

Still need to find projection from 3-D coordinates to 2-D window (screen).

Comet data and parse code below



Format
Comet name: Dust ejection velocity vector length



"0testComet" : 9.56491
"123P/West-Hartley" : 16.7392
"129P/Shoemaker-Levy" : 14.8473
"138P/Shoemaker-Levy" : 23.2426
"152P/Helin-Lawrence" : 17.1956
"17P/Holmes" : 14.7115
"181P/Shoemaker-Levy" : 13.0096
"242P/Spahr" : 15.1836
"244P/Scotti" : 15.2461
"246P/NEAT" : 17.2459
"248P/Gibbs" : 14.2471
"257P/Catalina" : 16.9925
"29P/Schwassmann-Wachmann" : 12.1393
"C/1995 O1 (Hale-Bopp)" : 5.2853
"C/2006 S3 (LONEOS)" : 13.3663
"C/2009 F4 (McNaught)" : 12.8199
"C/2009 P1 (Garradd)" : 17.9912
"C/2010 S1 (LINEAR)" : 12.061
"C/2011 F1 (LINEAR)" : 17.5763
"C/2011 L4 (PANSTARRS)" : 14.8581
"C/2011 O1 (LINEAR)" : 15.3377
"C/2011 R1 (McNaught)" : 19.2711
"C/2011 W3 (Lovejoy)" : 15.8829
"C/2012 A1 (PANSTARRS)" : 10.5588
"C/2012 A2 (LINEAR)" : 15.7095
"C/2012 B3 (La Sagra)" : 15.2118
"C/2012 BJ98" : 19.8014
"C/2012 C1 (McNaught)" : 13.3935
"C/2012 C2 (Bruenjes)" : 21.6564
"C/2012 CH17 (MOSS)" : 22.1211
"C/2012 E1 (Hill)" : 10.85
"C/2012 E3 (PANSTARRS)" : 13.3574
"C/2012 F1 (Gibbs)" : 17.883
"C/2012 F3 (PANSTARRS)" : 10.1882
"C/2012 F6 (Lemmon)" : 15.1815
"P/1996 A1 (Jedicke)" : 12.3661
"P/1998 U3 (Jager)" : 13.2816
"P/1998 Y2 (Li)" : 13.7391
"P/2005 K3 (McNaught)" : 23.1954
"P/2010 V1 (Ikeya-Murakami)" : 14.9805
"P/2012 A3 (SOHO)" : 20.3407
"P/2012 B1 (PANSTARRS)" : 14.5001
"P/2012 F2 (PANSTARRS)" : 16.0921
"P/2012 F5 (Gibbs)" : 17.1863
"P/2012 G1 (PANSTARRS)" : 18.8672
"P/2012 H1 (PANSTARRS)" : 15.2884


Parses comet data into unique lines (generated above data)
Has some bugs, but good enough here

#!/usr/bin/python

# how to use: 
# $ ./dustDataParser [file] > [file1]
# $ cat [file1] | tr -s '\n' | sort > [file2]
# Puts only unique lines from file into parsed_file. Is sorted.

import sys
from optparse import OptionParser

parser = OptionParser()

options, args = parser.parse_args(sys.argv[1:])
filename = args[0]
f = open(filename, 'r')
lines = f.readlines()
f.close()

uniques = []
sectioned = []

for k in lines:
s = k[0:30] # can vary
if sectioned.count(s) is 0:
uniques.append(k)
sectioned.append(s)

for u in uniques:
print u

No comments:

Post a Comment