import maya.cmds as cmds | |
import math | |
import random | |
import numpy | |
from numpy import linalg as LA | |
random.seed( 1234 ) | |
cubeList = cmds.ls( 'myCube*' ) | |
if len( cubeList ) > 0: | |
cmds.delete( cubeList ) | |
day = 100 | |
e=0.0167 | |
ra = 147098291 | |
rp = 152098233 | |
r = 10000000 | |
sun = cmds.polySphere(r=1, sx=20, sy=20, ax=(0, 1, 0), cuv=2, ch=1, name = "myCube#") | |
earth = cmds.polySphere(r = 0.1, sx = 20, sy = 20, ax = (10, 1, 10), cuv = 2, ch =1, name = "myCube#") | |
for i in range(1, 366): | |
j = i/58.12#represents 366 divided by 2 pi | |
earthInPos = cmds.duplicate(earth) | |
ex = math.sin(j) * (ra/r) | |
ey = 0 | |
ez = math.cos(j) * (rp/r) | |
cmds.move(ex, ey, ez , earthInPos) | |
point = cmds.duplicate(earthInPos) | |
cmds.scale(0.1, 0.1, 0.1, point) | |
px = ex - math.sin(j) * 0.1 | |
py = ey * 0.1 | |
pz = ez - math.cos(j) * 0.1 | |
pointNormal = cmds.duplicate(point) | |
cmds.move(ex - math.sin(j) * 0.2,ey * 0.2, ez - math.cos(j) * 0.2, pointNormal) | |
cmds.move(px ,py, pz, point) | |
vex = -(ex - px) | |
vey = -(ey - py) | |
vez = -(ez - pz) | |
vectorearth = cmds.duplicate(earth) | |
cmds.move(vex * 10, vey * 10, vez * 10, vectorearth) | |
#cmds.rotate( 0, '0deg', 0, vectorearth, pivot=(1, 0, 0) ) | |
#cmds.viewLookAt( vectorearth, pos=(3.0, 1.0, 0.0) ) | |
#con = cmds.aimConstraint( pointNormal, point, aimVector=[0,0,1] ) | |
#cmds.delete(con) | |
vsx = ex | |
vsy = ey | |
vsz = ez | |
vs = (vsx, vsy, vsz) | |
ve = (vex, vey, vez) | |
#print vs | |
vs = vs / LA.norm(vs) | |
ve = ve / LA.norm(ve) | |
#print vs | |
#for X | |
vsx = (vs[0], 0, 0) | |
vex = (ve[0], 0, 0) | |
dotx = numpy.linalg.multi_dot([vsx,vex]) | |
print numpy.arccos(dotx)* 57.2958 | |
#for Y | |
vsy = (0, vs[1], 0) | |
vey = (0, ve[1], 0) | |
doty = numpy.linalg.multi_dot([vsy,vey]) | |
print numpy.arccos(doty) * 57.2958 | |
#for Z | |
vsz = (0, 0, vs[2]) | |
vez = (0, 0, ve[2]) | |
dotz = numpy.linalg.multi_dot([vsz,vez]) | |
print numpy.arccos(dotz)* 57.2958 | |
cmds.delete(earth) | |
#cmds.move(math.sin(day) * 2, 0, math.cos(day) * 2, earth) | |
#e = earth | |
#p = point on earth | |
#ve = vector from center of earth to point on earth | |
#vs = vector from sun to earth(sun is at 000) |
SpaceApps is a NASA incubator innovation program.