-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplot_ellipse.py
More file actions
66 lines (56 loc) · 1.89 KB
/
plot_ellipse.py
File metadata and controls
66 lines (56 loc) · 1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/env python
import os
import sys
import math as mt
import numpy as np
import Gnuplot
## angle: radian
def MakeData(ecc,inc,arg,node,major):
minor=major*mt.sqrt(1-ecc*ecc);
### make matrix to tranxfer rot_co. to iner_co.
rotp=np.array([[mt.cos(arg),-1.*mt.sin(arg),0.],[mt.sin(arg),mt.cos(arg),0.],[0.,0.,1.]])
roti=np.array([[1.,0.,0.],[0.,mt.cos(inc),-1*mt.sin(inc)],[0.,mt.sin(inc),mt.cos(inc)]])
rota=np.array([[mt.cos(node),-1.*mt.sin(node),0],[mt.sin(node),mt.cos(node),0],[0,0,1]])
trans=np.matmul(rota,np.matmul(roti,rotp))
#trans=np.matmul(rota,rotp)
f=open("data.dat","w")
for t in np.arange(0.,1.,0.005):
phase=t*2*mt.pi
obj=np.array([[major*(mt.cos(phase)-ecc)], [minor*mt.sin(phase)],[0.]])
objrot=np.matmul(trans,obj)
#print objrot[0][0],objrot[1][0],objrot[2][0],t
f.write("%e %e %e %lf\n" % (objrot[0][0],objrot[1][0],objrot[2][0],t))
def PlotEllipse(arg,inc,ecc,mang,node):
g=Gnuplot.Gnuplot()
g('set term postscript eps enhanced 20"')
cmd="set output \"out_"+ ecc + "_" + mang + "_" + node + ".eps\""
g(cmd)
cmd="set view " + inc + "," + arg
g(cmd)
g('unset border')
g('unset tics')
g('set key off')
g('set parametric')
g('set xrange [-1.5:1.5]')
g('set yrange [-1.5:1.5]')
g('set zrange [-1.5:1.5]')
g('sp "data.dat" w l lc rgb "red", 0.01*cos(u)*cos(v),0.01*sin(u)*cos(v),0.01*sin(v)')
g('unset parametric')
g('set term x11')
g('q')
if __name__ == '__main__':
d2r=mt.pi/180.
## observer: argument:+90
o_i="60."
### argument: 45 deg
o_a="130"
f=open(sys.argv[1],"r")
line=f.readlines()
f.close
for l in line:
ll=l.split()
#### file: ecc,i,node
major=1.
arg=0.
MakeData(float(ll[0]),float(ll[1])*d2r,arg*d2r,float(ll[2])*d2r,major)
PlotEllipse(o_a,o_i,ll[0],ll[1],ll[2])