Beispiel #1
0
		public void Initialise()
		{
			m_ray = Vector3.Zero;
			m_nfree		=	0;
			m_status	=	GJKStatus.Failed;
			m_current	=	0;
			m_distance	=	0f;
			for (int i = 0; i < m_simplices.Length; ++i)
			{
				m_simplices[i] = new sSimplex();
			}

			for (int i = 0; i < m_store.Length; ++i)
			{
				m_store[i] = new sSV();
			}
			// Free is a list of pointers/references so doesn't need objects.
			//for (int i = 0; i < m_free.Length; ++i)
			//{
			//    m_free[i] = new sSV();
			//}
		}
Beispiel #2
0
		public void Initialize()
		{
			m_status = eStatus.Failed;
			m_normal = Vector3.Zero;
			m_depth = 0;
			m_nextsv = 0;
			m_result = new sSimplex();

			for (int i = 0; i < m_sv_store.Length; ++i)
			{
				m_sv_store[i] = new sSV();
			}

			for (int i = 0; i < m_fc_store.Length; ++i)
			{
				m_fc_store[i] = new sFace();
			}

			for (int i = 0; i < GjkEpaSolver2.EPA_MAX_FACES; ++i)
			{
				Append(m_stock, m_fc_store[GjkEpaSolver2.EPA_MAX_FACES - i - 1]);
			}
		}
Beispiel #3
0
		public void AppendVertice(sSimplex simplex,ref Vector3 v)
		{
			simplex.p[simplex.rank]=0;
			simplex.c[simplex.rank]=m_free[--m_nfree];
			GetSupport(ref v,ref simplex.c[simplex.rank++]);
		}
Beispiel #4
0
		public void RemoveVertice(sSimplex simplex)
		{
			m_free[m_nfree++]=simplex.c[--simplex.rank];
		}