コード例 #1
0
 public BodiesRingGenerator(ParticlesPlaneGenerator sliceGenerator,
                            Vector3 ringCenter, Vector3 up, float ringRadius,
                            float sectionStart   = 0.0f,
                            float sectionEnd     = (float)(2.0 * Math.PI),
                            float bodyScaleMin   = 1.0f, float bodyScaleMax = 1.0f, float bodyRadius = 0.0f,
                            float safetyDistance = 0.0f)
     : base(new ParticlesRingGenerator(sliceGenerator,
                                       ringCenter, up, ringRadius, sectionStart, sectionEnd),
            bodyScaleMin, bodyScaleMax, bodyRadius, safetyDistance)
 {
 }
コード例 #2
0
        public ParticlesRingGenerator(ParticlesPlaneGenerator planeGenerator,
                                      Vector3 ringCenter, Vector3 up, float ringRadius,
                                      float sectionStart = 0.0f,
                                      float sectionEnd   = (float)(2.0 * Math.PI))
        {
            m_ringCenter     = ringCenter;
            m_ringZAxis      = up.Normalized();
            m_ringRadius     = ringRadius;
            m_sectionStart   = sectionStart;
            m_sectionEnd     = sectionEnd;
            m_planeGenerator = planeGenerator;

            if (Math.Abs(m_ringZAxis.X) < c_eps && Math.Abs(m_ringZAxis.Y) < c_eps)
            {
                m_ringXAxis = new Vector3(1.0f, 0.0f, 0.0f);
            }
            else
            {
                m_ringXAxis = new Vector3(m_ringZAxis.Y, -m_ringZAxis.X, 0.0f);
                m_ringXAxis.Normalize();
            }
            m_ringYAxis = Vector3.Cross(m_ringXAxis, m_ringZAxis);
        }
コード例 #3
0
 public BodiesRingGenerator(ParticlesPlaneGenerator sliceGenerator,
     Vector3 ringCenter, Vector3 up, float ringRadius,
     float sectionStart = 0.0f,
     float sectionEnd = (float)(2.0*Math.PI),
     float bodyScaleMin = 1.0f, float bodyScaleMax = 1.0f, float bodyRadius = 0.0f,
     float safetyDistance = 0.0f, OrientPolicy oriPolicy = OrientPolicy.Random)
     : base(new ParticlesRingGenerator(sliceGenerator, 
         ringCenter, up, ringRadius, sectionStart, sectionEnd),
         bodyScaleMin, bodyScaleMax, bodyRadius, safetyDistance, oriPolicy)
 {
 }
コード例 #4
0
        public ParticlesRingGenerator(ParticlesPlaneGenerator planeGenerator,
                                      Vector3 ringCenter, Vector3 up, float ringRadius,
                                      float sectionStart = 0.0f, 
                                      float sectionEnd = (float)(2.0*Math.PI))
        {
            m_ringCenter = ringCenter;
            m_ringZAxis = up.Normalized();
            m_ringRadius = ringRadius;
            m_sectionStart = sectionStart;
            m_sectionEnd = sectionEnd;
            m_planeGenerator = planeGenerator;

            if (Math.Abs(m_ringZAxis.X) < c_eps && Math.Abs(m_ringZAxis.Y) < c_eps) {
                m_ringXAxis = new Vector3(1.0f, 0.0f, 0.0f);
            } else {
                m_ringXAxis = new Vector3(m_ringZAxis.Y, -m_ringZAxis.X, 0.0f);
                m_ringXAxis.Normalize();
            }
            m_ringYAxis = Vector3.Cross(m_ringXAxis, m_ringZAxis);
        }