تحويل N-Ary ب-المفتاح في سلسلة من الدرجة الثانية أو مكعب B-Spline

StackOverflow https://stackoverflow.com/questions/355192

  •  21-08-2019
  •  | 
  •  

سؤال

أنا أفعل بعض الصناديق تعمل وزارة الشؤون الاجتماعية (على ربط الجسم بين C# أنظمة التشغيل).أنا و كولن حرق تعمل حاليا على الحصول على بعض الصناديق قانون العمل (أقل مني في هذه الأيام :) - قام الكثير من التقدم).

في أي حال ، TTF المواصفات يسمح التعسفي كمية من نقاط التحكم بين مقابض ، اللحظات لا يعالج في كل (TTF وقد مثال الدائرة يدل على ذلك - حسنا فعلت البلهاء لقد أنقذت 10 بايت).

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

شكرا لكم أيها الرجال.

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

المحلول

قمت ببعض البحث ووجدت بعض خوارزميات بالنسبة TTF المواصفات في هذا الموقع من هنا.

نصائح أخرى

بيزيه المقالة في ويكيبيديا، مع بعض المعارف حساب التفاضل والتكامل العملية، يمكنك ترجمة صيغ برنامج كمبيوتر مثل الزائفة C # الإدراج البرمجية التالية. أنا أفعل ذلك مع شريحة من الدرجة الثانية، ولكن من السهل أن تترجم إلى آخر.

// Quadratic spline, with three given points
// B(t) = (1-t)^2P(0) + 2*tP(1) + t^2P(2)
// where T is a real number in the interval [0, 1]

public void DrawQuadSpline(Point p0, Point p1, Point p2, int steps) 
{
    Point next = p0;
    Point previous = p0;
    double tStep = 1 / ((float) steps);
    double t = 0;
    for (int i = 0; i < steps; i++) 
    {
        float x = CalculateQuadSpline(P0.x, P1.x, P2.x, t);
        float y = CalculateQuadSpline(P0.y, P1.y, P2.y, t);
        Point next = new Point(x, y);
        drawLine(previous, next);
        previous = next;
        t = t + tStep;
    }
} 

private void CalculateQuadSpline(float z0, float z1, float z2, float t) 
{
    return (1.0-t)*(1.0-t)*z0 + 2.0*t*z1 + t*t*z2;
}

وقد تحتاج الى بعض التغيير والتبديل ولقد فعل هذا فقط في جاوة قبل، ولكن هذا في الأساس هو.

حسنا، يبدو أن الخطوط العريضة TTF تعرف بأنها من الدرجة الثانية ب-المفاتيح.

وهناك نوعان من الخوارزميات التي سترغب في أن يكون على دراية.

والأول هو استخراج بيزيه عبر الإدراج عقدة. هذا وسوف تحصل على قطاعات بيزيه من الدرجة الثانية. ثم عليك أن ترغب في درجة-رفع كل قطعة بيزيه للحصول على cubics.

ووالمرجع الرئيسي الأول هو استخدام صفي CAGD الكتب المدرسية، والتي هي على الانترنت. وتغطي استخراج بيزيه في 6.3 . وتغطي درجة ارتفاع منحنيات بيزيه في 2.4 . اسمحوا لي أن أعرف إذا كان لديك أي مشاكل ..

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