2010-12-06 09:43:13 +08:00
|
|
|
#!/usr/bin/python
|
|
|
|
import mlat
|
|
|
|
import numpy
|
|
|
|
|
2011-07-15 08:01:43 +08:00
|
|
|
#here's some test data to validate the algorithm
|
|
|
|
teststations = [[37.76225, -122.44254, 100], [37.409044, -122.077748, 100], [37.585085, -121.986395, 100]]
|
|
|
|
testalt = 8000
|
|
|
|
testplane = numpy.array(mlat.llh2ecef([37.617175,-122.380843, testalt]))
|
|
|
|
testme = mlat.llh2geoid(teststations[0])
|
|
|
|
teststamps = [10,
|
|
|
|
10 + numpy.linalg.norm(testplane-numpy.array(mlat.llh2geoid(teststations[1]))) / mlat.c,
|
|
|
|
10 + numpy.linalg.norm(testplane-numpy.array(mlat.llh2geoid(teststations[2]))) / mlat.c,
|
|
|
|
]
|
|
|
|
|
2010-12-07 02:28:44 +08:00
|
|
|
replies = []
|
2011-07-15 08:01:43 +08:00
|
|
|
for i in range(0, len(teststations)):
|
|
|
|
replies.append((teststations[i], teststamps[i]))
|
2010-12-07 02:28:44 +08:00
|
|
|
|
2011-07-15 08:01:43 +08:00
|
|
|
ans = mlat.mlat(replies, testalt)
|
|
|
|
error = numpy.linalg.norm(numpy.array(mlat.llh2ecef(ans))-numpy.array(testplane))
|
|
|
|
range = numpy.linalg.norm(mlat.llh2geoid(ans)-numpy.array(mlat.llh2geoid(teststations[0])))
|
2010-12-07 02:28:44 +08:00
|
|
|
print "Error: %.2fm" % (error)
|
|
|
|
print "Range: %.2fkm (from first station in list)" % (range/1000)
|