def GenerateCracks(pPointNumber, pChildProba, pX, pY, pVector, pAngle,
pShortAngle, pLengthAtt, pProbaAtt, pBaseRadius):
lCrackPointList = []
x = pX
y = pY
z = 0
vec = pVector
for lCurrentPoint in range(pPointNumber):
lNewPointCrack = CrackPoint()
lNewPointCrack.x = x
lNewPointCrack.y = y
lNewPointCrack.z = z
lNewPointCrack.position = lCurrentPoint
lNewPointCrack.hasChildren = DefineProba(pChildProba)
lRadius = DefineCurveRadius(lCurrentPoint, pPointNumber,
lNewPointCrack.hasChildren,
pBaseRadius)
if lNewPointCrack.hasChildren:
lLen = int(pPointNumber / pLengthAtt)
lNewProba = pChildProba / pProbaAtt
lNewPointCrack.children = GenerateCracks(lLen, lNewProba,
x, y, pVector, pAngle,
pShortAngle,
pLengthAtt, pProbaAtt,
lRadius)
lNewPointCrack.radius = lRadius
lCrackPointList.append(lNewPointCrack)
if lCurrentPoint % 5:
angle = random.uniform(-pShortAngle, pShortAngle)
else:
angle = random.uniform(-pAngle, pAngle)
eul = mathutils.Euler((0.0, 0.0, math.radians(angle)), 'XYZ')
vec.rotate(eul)
x = x + vec.x
y = y + vec.y
z = z + vec.z
return lCrackPointList
评论列表
文章目录