本文整理汇总了C++中Branch::growSynapse方法的典型用法代码示例。如果您正苦于以下问题:C++ Branch::growSynapse方法的具体用法?C++ Branch::growSynapse怎么用?C++ Branch::growSynapse使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Branch
的用法示例。
在下文中一共展示了Branch::growSynapse方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: syncBranchDensity
void CellComponent::syncBranchDensity(float parentRandomBranchDeterminer, float parentRandomDepthDeterminer,
float baseBranchiness, float tipBranchiness, float treeDepth, float baseThreshold, float tipThreshold, int depth) {
float branchiness;
if(depth>treeDepth/2+parentRandomDepthDeterminer){
branchiness = tipBranchiness;
mThreshold = tipThreshold;
}
else{
branchiness = baseBranchiness;
mThreshold = baseThreshold;
}
assert(branchiness<(1<<23) );//using floats in a manner that will not cooperate with floats after a few millions
size_t childSize=mChildBranches.size();
float roundingError=branchiness-floor(branchiness);
if (parentRandomBranchDeterminer>roundingError) {
branchiness=ceil(branchiness);
}else {
branchiness=floor(branchiness);
}
size_t maxDepth=(size_t)floor(parentRandomDepthDeterminer);
if (parentRandomDepthDeterminer>treeDepth-floor(treeDepth))
maxDepth=(size_t)ceil(treeDepth);
if (depth>=(int)maxDepth) {
branchiness=0;
}
branchiness-=childSize;
while(branchiness>0){
Branch *b;
mChildBranches.push_back(b = new Branch(this));
if(depth>=(int)maxDepth-1){
b->growSynapse();
}
branchiness-=1;
}
while (branchiness<0&&mChildBranches.size()) {
size_t whichDies=rand()%mChildBranches.size();
delete mChildBranches[whichDies];
if (whichDies+1!=mChildBranches.size())
mChildBranches[whichDies]=mChildBranches.back();
mChildBranches.pop_back();
}
for (size_t i=0;i<mChildBranches.size();++i) {
mChildBranches[i]->syncBranchDensity(parentRandomBranchDeterminer, parentRandomDepthDeterminer, baseBranchiness, tipBranchiness, treeDepth, baseThreshold, tipThreshold, depth + 1);
}
}