Ejemplo n.º 1
0
        protected override Vector3d CalculateDesiredVelocity()
        {
            Vector3d nrml     = environment.ClosestNormal(particle.Position3D);
            Vector3d drainVec = Vector3d.CrossProduct(nrml, Vector3d.ZAxis);

            drainVec.Unitize();
            drainVec.Transform(Transform.Rotation(Math.PI * angle, nrml, particle.Position3D));
            drainVec = drainVec * stepDistance;
            if (environment.GetType() == typeof(SurfaceEnvironmentType))
            {
                Point3d pt2D = particle.Position3D;
                pt2D.Transform(Transform.Translation(drainVec));
                pt2D     = environment.MapTo2D(pt2D);
                drainVec = Util.Vector.Vector2Point(particle.Position, pt2D);
            }
            return(drainVec);
        }