本文整理汇总了C#中ActiveSite.GetNeighbor方法的典型用法代码示例。如果您正苦于以下问题:C# ActiveSite.GetNeighbor方法的具体用法?C# ActiveSite.GetNeighbor怎么用?C# ActiveSite.GetNeighbor使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ActiveSite
的用法示例。
在下文中一共展示了ActiveSite.GetNeighbor方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Algorithm
//---------------------------------------------------------------------
public static bool Algorithm(ISpecies species,
ActiveSite site)
{
//if (species.EffectiveSeedDist == EffectiveSeedDist.Universal)
//if (species.EffectiveSeedDist == Landis.Species.EffectiveSeedDist.Universal)
if (species.EffectiveSeedDist == Universal)
return UniversalDispersal.Algorithm(species, site);
if (! Reproduction.SufficientResources(species, site)) {
if (isDebugEnabled)
log.DebugFormat("site {0}: {1} not seeded: insufficient light",
site.Location, species.Name);
return false;
}
if (! Reproduction.Establish(species, site)) {
if (isDebugEnabled)
log.DebugFormat("site {0}: {1} not seeded: cannot establish",
site.Location, species.Name);
return false;
}
// if (Reproduction.MaturePresent(species, site)) {
if (SiteVars.Cohorts[site].IsMaturePresent(species)) {
if (isDebugEnabled)
log.DebugFormat("site {0}: {1} seeded on site",
site.Location, species.Name);
return true;
}
if (isDebugEnabled)
log.DebugFormat("site {0}: search neighbors for {1}",
site.Location, species.Name);
//UI.WriteLine(" Ward seed disersal. Spp={0}, site={1},{2}.", species.Name, site.Location.Row, site.Location.Column);
foreach (RelativeLocationWeighted reloc in Seeding.MaxSeedQuarterNeighborhood)
{
double distance = reloc.Weight;
int rRow = (int) reloc.Location.Row;
int rCol = (int) reloc.Location.Column;
double EffD = (double) species.EffectiveSeedDist;
double MaxD = (double) species.MaxSeedDist;
if(distance > MaxD + ((double) Model.Core.CellLength / 2.0 * 1.414))
return false; //Check no further
double dispersalProb = GetDispersalProbability(EffD, MaxD, distance);
//UI.WriteLine(" DispersalProb={0}, EffD={1}, MaxD={2}, distance={3}.", dispersalProb, EffD, MaxD, distance);
//First check the Southeast quadrant:
if (dispersalProb > Model.Core.GenerateUniform())
{
Site neighbor = site.GetNeighbor(reloc.Location);
if (neighbor != null && neighbor.IsActive)
// if (Reproduction.MaturePresent(species, neighbor))
if (SiteVars.Cohorts[site].IsMaturePresent(species))
return true;
}
//Next, check all other quadrants:
if (dispersalProb > Model.Core.GenerateUniform())
{
Site neighbor = site.GetNeighbor(new RelativeLocation(rRow * -1, rCol));
if(rCol == 0)
neighbor = site.GetNeighbor(new RelativeLocation(0, rRow));
if (neighbor != null && neighbor.IsActive)
// if (Reproduction.MaturePresent(species, neighbor))
if (SiteVars.Cohorts[site].IsMaturePresent(species))
return true;
}
if (dispersalProb > Model.Core.GenerateUniform())
{
Site neighbor = site.GetNeighbor(new RelativeLocation(rRow * -1, rCol * -1));
if (neighbor != null && neighbor.IsActive)
// if (Reproduction.MaturePresent(species, neighbor))
if (SiteVars.Cohorts[site].IsMaturePresent(species))
return true;
}
if (dispersalProb > Model.Core.GenerateUniform())
{
Site neighbor = site.GetNeighbor(new RelativeLocation(rRow, rCol * -1));
if(rCol == 0)
neighbor = site.GetNeighbor(new RelativeLocation(0, rRow * -1));
if (neighbor != null && neighbor.IsActive)
// if (Reproduction.MaturePresent(species, neighbor))
if (SiteVars.Cohorts[site].IsMaturePresent(species))
return true;
}
} // end foreach relativelocation
return false;
}