#plane2Cone.py
# by. zahir
from math import *
#目的となる円錐の頂点角の角度
coneAngle = 22
#左右のどちらが前に出るか 左 = -1、 右 = 1
front = 1
centerAngle = coneAngle * pi
doc = MQSystem.getDocument()
obj = doc.object[doc.currentObjectIndex]
numVertex = obj.numVertex
nV = obj.numVertex
vers = obj.vertex
distR = 1
distL = 1
if(front==1):
distL = 1.5
if(front== -1):
distR = 1.5
MQSystem.clearLog()
def trace( *args ):
if len(args)==0:
MQSystem.println("")
return
for arg in args:
MQSystem.println(str(arg))
def transform( vertex ):
pos = vertex.getPos()
_x = pos.x
_y = pos.y
_z = pos.z;
theta = atan2( _y, _x ) * 57.29578
l = sqrt( _x * _x + _y * _y )
r = l * ( centerAngle / 360 )
rotAngle = ( 360 / centerAngle ) * ( theta - 90 )
r += _z;
if( rotAngle < 0 ):
r += distL * rotAngle / 360 * front
if( rotAngle > 0):
r += distR * rotAngle / 360 * front
rotAngle += 270
rotAngle *= 0.01745 # 0.01745 = PI / 180
_x = cos( rotAngle ) * r;
_z = sin( rotAngle ) * r;
_y = cos( coneAngle * 0.01745 ) * l;
pos.x = _x;
pos.y = _y;
pos.z = _z;
#end
#実行
for i in range(0,nV):
transform( vers[ i ] )