سؤال

يا رفاق, لقد حصلت لي الأساسية L-نظام العمل وقررت أن محاولة تحسين تقديم الطلب.في السابق كنت حلقات عبر كامل سلسلة L-نظام التبديل القضية الرسم...والأفضل من ذلك سوف تظهر لك ما كنت أفعله.

for(unsigned int stringLoop = 0; stringLoop < _buildString.length(); stringLoop++)
{

        switch(_buildString.at(stringLoop))
        {
        case'X':
            //Do Nothing
            //X is there just to facilitate the Curve of the plant
            break;
        case'F':

            _prevState = _currState;
            _currState.position += _currState.direction * stdBranchLength; 
            //Set the previous state to the current state
            _graphics.SetColour3f(0.0f, 1.0f, 0.0f);

            _graphics.Begin(OGLFlags::LINE_STRIP);
                _graphics.Vertex3f(_prevState.position.X(), _prevState.position.Y(), _prevState.position.Z());
                _graphics.Vertex3f(_currState.position.X(), _currState.position.Y(), _currState.position.Z());
            _graphics.End();

            break;
        case'[':
            _prevStack.push(_currState);
            break;
        case']':
            _prevState = _currState;
            _currState = _prevStack.top();
            _prevStack.pop();               
            break;
        case'-':

            _currState.direction = _currState.direction.RotatedAboutZ(-(ROTATION) * Math::DegreesToRadians);

            break;
        case'+':
            _currState.direction = _currState.direction.RotatedAboutZ(ROTATION * Math::DegreesToRadians);

            break;
        };

}

أزلت كل هذا لأنني كنت حرفيا حل شجرة كل إطار واحد ، لقد غيرت هذه الحلقة حتى أنه حفظ كل من verticies في ناقلات الأمراض المنقولة جنسيا.

    for(unsigned int stringLoop = 0; stringLoop < _buildString.length(); stringLoop++)
{

        switch(_buildString.at(stringLoop))
        {
        case'X':
            break;
        case'F':

            //_prevState = _currState;
            _currState.position += _currState.direction * stdBranchLength;
            _vertexVector.push_back(_currState.position);

            break;
        case'[':
            _prevStack.push(_currState);
            break;
        case']':
            _currState = _prevStack.top();
            _prevStack.pop();               
            break;
        case'-':            
            _currState.direction = _currState.direction.RotatedAboutZ(-(ROTATION) * Math::DegreesToRadians);
            break;
        case'+':
            _currState.direction = _currState.direction.RotatedAboutZ(ROTATION * Math::DegreesToRadians);
            break;
        };
}

الآن لقد غيرت بلدي تقديم حلقة لذلك أنا فقط قراءة مباشرة من ناقلات مجموعة.

    DesignPatterns::Facades::OpenGLFacade _graphics = DesignPatterns::Facades::openGLFacade::Instance();

_graphics.Begin(OGLFlags::LINE_STRIP);
    for(unsigned int i = 0; i < _vertexVector.size(); i++)
    {
        _graphics.Vertex3f(_vertexVector.at(i).X(), _vertexVector.at(i).Y(), _vertexVector.at(i).Z());
    }
_graphics.End();

الآن مشكلتي هي أنه عندما أنا باستخدام ناقلات مجموعة يمكنني استخدام خط ستيب أنا الحصول على المزيد من القطع الأثرية.الصورة الأولى هو الأصل تقديم هذا غير محسن واحدة ، ثم الثانية هو أحدث تجسيد التي يعمل بشكل أسرع ، و ثلثي هو تقديم التنين المنحنى الذي يستخدم أي دفع الملوثات العضوية الثابتة مثل الأولين تستخدم (أنا متأكد من دفع والبوب حيث المشاكل قادمة).هي المشكلة مع بلدي المنطق هنا تخزين verticies, أو لأن أنا باستخدام خط القطاع ؟ أنا فقط استخدام خطوط ، ولكنها لا تنجح في كل شيء ، فإنه ينتهي يبحث أكثر من line_stipple.أيضا أعتذر عن طول هذا المنصب.

النص البديل http://img197.imageshack.us/img197/8030/bettera.jpg النص البديل http://img23.imageshack.us/img23/3924/buggyrender.jpg النص البديل http://img8.imageshack.us/img8/627/dragoncurve.jpg

هل كانت مفيدة؟

المحلول

كنت الحصول على تلك خطوط إضافية لأنك تستخدم LINE_STRIP.

في 'و' حالة دفع كل نقطة نهاية الخط الخاص بك في ناقلات (كما كنت تفعل في الأصل).

_vertexVector.push_back(_prevState.position);
_vertexVector.push_back(_currState.position);

و عند رسم استخدام LINE_LIST بدلا من ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top