|
|
"""
|
|
|
The module MISC_ROUTINES gathers classes and functions which are useful for daily processing. As an
|
|
|
example we have conversion factor or universal constants.
|
|
|
|
|
|
MODULES CALLED:
|
|
|
NUMPY, SYS
|
|
|
|
|
|
MODIFICATION HISTORY:
|
|
|
Created by Ing. Freddy Galindo (frederickgalindo@gmail.com). ROJ, 21 October 2009.
|
|
|
"""
|
|
|
|
|
|
import numpy
|
|
|
import sys
|
|
|
|
|
|
class CoFactors():
|
|
|
"""
|
|
|
CoFactor class used to call pre-defined conversion factor (e.g. degree to radian). The cu-
|
|
|
The current available factor are:
|
|
|
|
|
|
d2r = degree to radian.
|
|
|
s2r = seconds to radian?, degree to arcsecond.?
|
|
|
h2r = hour to radian.
|
|
|
h2d = hour to degree
|
|
|
"""
|
|
|
|
|
|
d2r = numpy.pi/180.
|
|
|
s2r = numpy.pi/(180.*3600.)
|
|
|
h2r = numpy.pi/12.
|
|
|
h2d = 15.
|
|
|
|
|
|
class Redirect:
|
|
|
def __init__(self,stdout):
|
|
|
self.stdout = stdout
|
|
|
|
|
|
def write(self,message):
|
|
|
self.stdout.insertPlainText(message)
|
|
|
|
|
|
class WidgetPrint:
|
|
|
"""
|
|
|
WidgetPrint class allows to define the standard output.
|
|
|
"""
|
|
|
def __init__(self,textid=None):
|
|
|
self.__stdout = sys.stdout
|
|
|
self.textid = textid
|
|
|
self.wPrint()
|
|
|
|
|
|
def wPrint(self):
|
|
|
if self.textid == None: sys.stdout = self.__stdout
|
|
|
if self.textid != None: sys.stdout = Redirect(self.textid)
|
|
|
print ("")
|
|
|
|
|
|
class Vector:
|
|
|
"""
|
|
|
direction = 0 Polar to rectangular; direction=1 rectangular to polar
|
|
|
"""
|
|
|
def __init__(self,vect,direction=0):
|
|
|
nsize = numpy.size(vect)
|
|
|
if nsize <= 3:
|
|
|
vect = vect.reshape(1,nsize)
|
|
|
|
|
|
self.vect = vect
|
|
|
self.dirc = direction
|
|
|
|
|
|
|
|
|
|
|
|
def Polar2Rect(self):
|
|
|
if self.dirc == 0:
|
|
|
jvect = self.vect*numpy.pi/180.
|
|
|
mmx = numpy.cos(jvect[:,1])*numpy.sin(jvect[:,0])
|
|
|
mmy = numpy.cos(jvect[:,1])*numpy.cos(jvect[:,0])
|
|
|
mmz = numpy.sin(jvect[:,1])
|
|
|
mm = numpy.array([mmx,mmy,mmz]).transpose()
|
|
|
|
|
|
elif self.dirc == 1:
|
|
|
mm = [numpy.arctan2(self.vect[:,0],self.vect[:,1]),numpy.arcsin(self.vect[:,2])]
|
|
|
mm = numpy.array(mm)*180./numpy.pi
|
|
|
|
|
|
return mm
|
|
|
|
|
|
|
|
|
|
|
|
|