Beispiel #1
0
//----------------------------------------------------------------------------
void NURBSCurveExample::DoSimulation2 ()
{
    mSimTime += mSimDelta;

    if (!mCircle)
    {
        NextConfiguration();
    }
    else
    {
        // The curve evolves to a line segment.
        float t = mSimTime - 1.0f;
        float oneMinusT = 1.0f - t;
        Vector2f ctrl = oneMinusT*mSpline->GetControlPoint(2) +
            t*mSpline->GetControlPoint(1);
        mSpline->SetControlPoint(2, ctrl);

        // The circle floats up a little bit.
        int imax = mCircle->GetNumCtrlPoints();
        for (int i = 0; i < imax; ++i)
        {
            ctrl = mCircle->GetControlPoint(i) + Vector2f::UNIT_Y;
            mCircle->SetControlPoint(i, ctrl);
        }
    }

    OnDisplay();
}
Beispiel #2
0
//----------------------------------------------------------------------------
bool PolygonDistance::OnKeyDown (unsigned char key, int x, int y)
{
	if (WindowApplication2::OnKeyDown(key, x, y))
	{
		return true;
	}

	switch (key)
	{
	case 'g':
		NextConfiguration();
		OnDisplay();
		return true;
	case '0':
		InitialConfiguration();
		OnDisplay();
		return true;
	case 'p':  // toggle for drawing the perpendiculars
		mDrawPerpendiculars = !mDrawPerpendiculars;
		OnDisplay();
		return true;
	}

	return false;
}
//----------------------------------------------------------------------------
void NURBSCurveExample::DoSimulation2 ()
{
    m_fSimTime += m_fSimDelta;

    if ( !m_pkCircle )
    {
        NextConfiguration();
    }
    else
    {
        // curve evolves to a line segment
        float fT = m_fSimTime - 1.0f, fOmT = 1.0f - fT;
        Vector2f kCtrl = fOmT*m_pkSpline->GetControlPoint(2) +
            fT*m_pkSpline->GetControlPoint(1);
        m_pkSpline->SetControlPoint(2,kCtrl);

        // circle floats up a little bit
        int iMax = m_pkCircle->GetNumCtrlPoints();
        for (int i = 0; i < iMax; i++)
        {
            kCtrl = m_pkCircle->GetControlPoint(i)+Vector2f::UNIT_Y;
            m_pkCircle->SetControlPoint(i,kCtrl);
        }
    }

    OnDisplay();
}