⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 globalconstraint.cs

📁 Particle System Test Application on C#
💻 CS
字号:
using System;
using Microsoft.DirectX;
using System.Collections;

namespace ParticleSystems
{
    namespace Verlet
    {
        namespace GlobalConstraints
        {
            /// <summary>
            /// AxisAlignedBox umplements IGlobalConstraint. Makes sure that all
            /// particles are kept within the axis aligned box that's defined
            /// by two opposite two corner vectors.
            /// </summary>
            public class AxisAlignedBox : IGlobalConstraint
            {
                /// <summary>
                /// Constructor
                /// </summary>
                /// <param name="corner">A corner vector</param>
                /// <param name="oppositeCorner">A corner vector</param>
                public AxisAlignedBox(Vector3 corner, Vector3 oppositeCorner)
                {
                    mCorner = Vector3.Minimize(corner, oppositeCorner);
                    mOppositeCorner = Vector3.Maximize(corner, oppositeCorner);
                }

                /// <summary>
                /// Applies the global constraint to all particles in the list
                /// </summary>
                /// <param name="particles">An array of particles</param>
                public void Apply(Particle[] particles)
                {
                    int lIter = 0;
                    int lLength = particles.Length;
                    for(; lIter < lLength; ++lIter)
                    {
                        particles[lIter].Position = 
                            Vector3.Minimize(
                                mOppositeCorner, 
                                Vector3.Maximize(
                                    mCorner, 
                                    particles[lIter].Position));
                    }
                }

                /// <summary>
                /// Corner vector
                /// </summary>
                public Vector3 Corner
                {
                    get
                    {
                        return mCorner;
                    }
                }

                /// <summary>
                /// Opposite corner vector
                /// </summary>
                public Vector3 OppositeCorner
                {
                    get
                    {
                        return mOppositeCorner;
                    }
                }

                private Vector3 mCorner;
                private Vector3 mOppositeCorner;
            }
        }

    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -