/// <summary> /// See <see cref="IForceFactory.CreateRotaionalFlowRestistance(double)"/>. /// </summary> public ForceSet CreateRotaionalFlowRestistance(double density) { ArgumentChecks.AssertIsPositive(density, nameof(density)); var flowResistanceForParticles = new GenericDummyForce <IParticle>(); var flowResistanceForBodies = new BodyRotationalFlowResistance <Polygon>(density); return(new ForceSet(flowResistanceForParticles, flowResistanceForBodies)); }
/// <summary> /// See <see cref="IForceFactory.CreateLinearFlowRestistance(double)"/>. /// </summary> public ForceSet CreateLinearFlowRestistance(double density) { ArgumentChecks.AssertIsPositive(density, nameof(density)); var flowResistanceForParticles = new GenericDummyForce <IParticle>(); var flowResistanceForBodies = new BodyLinearFlowResistance <Polygon>( this._lineCalculationHelper, this._polygonSupportFunctions, density); return(new ForceSet(flowResistanceForParticles, flowResistanceForBodies)); }
/// <summary> /// See <see cref="IForceFactory.CreateBlast(Point, double, double, double)"/>. /// </summary> public ForceSet CreateBlast( Point position, double force, double blastRadius, double expansionSpeed) { ArgumentChecks.AssertIsPositive(blastRadius, nameof(blastRadius)); ArgumentChecks.AssertIsStrictPositive(expansionSpeed, nameof(expansionSpeed)); // TODO: make blast generic, add "apply strategies" for each type. var blastForParticles = new GenericDummyForce <IParticle>(); var blastForBodies = new BodyBlast <Polygon>( this._polygonSupportFunctions, position, force, blastRadius, expansionSpeed); return(new ForceSet(blastForParticles, blastForBodies)); }