示例#1
0
        /// <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));
        }
示例#2
0
        /// <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));
        }
示例#3
0
        /// <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));
        }