35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
from abaqusConstants import *
|
|
from abaqus import *
|
|
import random
|
|
outFile = open('ori.dat',"w")
|
|
random.seed(658468764)
|
|
# Generate 'c' direction
|
|
for i in range(0,500):
|
|
angle1=random.random()*2.*pi
|
|
sigma=0.02 # extruded rod
|
|
a2=random.normalvariate(1., sigma)
|
|
if a2>1.:
|
|
a2=1.-(a2-1.)
|
|
# a2=acos(random.random()) # homogeneous
|
|
angle2=acos(a2)
|
|
cx=cos(angle1)*cos(angle2)
|
|
cy=sin(angle1)*cos(angle2)
|
|
cz=sin(angle2)
|
|
# Get Stereo Projection
|
|
# sx=cx*(1.-(cz/(1.+cz)))
|
|
# sy=cy*(1.-(cz/(1.+cz)))
|
|
# Get arbitary normal to C
|
|
nx=cos(angle1)*cos(angle2+pi/2.)
|
|
ny=sin(angle1)*cos(angle2+pi/2.)
|
|
nz=sin(angle2+pi/2.)
|
|
# Rotate about random angle
|
|
a3=random.random()*2.*pi
|
|
xx=nx*(cos(a3)+cx*cx*(1.-cos(a3)))+ny*(cx*cy*(1.-cos(a3))-cz*sin(a3))+nz*(cx*cz*(1.-cos(a3))+cy*sin(a3))
|
|
xy=nx*(cx*cy*(1.-cos(a3))+cz*sin(a3))+ny*(cos(a3)+cy*cy*(1.-cos(a3)))+nz*(cy*cz*(1.-cos(a3))-cx*sin(a3))
|
|
xz=nx*(cz*cx*(1.-cos(a3))-cy*sin(a3))+ny*(cz*cy*(1.-cos(a3))+cx*sin(a3))+nz*(cos(a3)+cz*cz*(1.-cos(a3)))
|
|
# Y-Axis is normal to C and X
|
|
yx=xy*cz-xz*cy
|
|
yy=xz*cx-xx*cz
|
|
yz=xx*cy-xy*cx
|
|
#Tests
|
|
outFile.close()
|