سؤال

لدي التدرج الشعاعي التالي:

<radialGradient
   inkscape:collect="always"
   xlink:href="#linearGradient2454"
   id="radialGradient2460"
   cx="4022.8572"
   cy="5451.2656"
   fx="4022.8572"
   fy="5451.2656"
   r="3559.865"
   gradientTransform="matrix(-0.1071067,-0.1166362,0.1377765,-7.0459663e-2,276.61943,1452.439)"
   gradientUnits="userSpaceOnUse" />

أرغب في تقليل هذا التدرج في الحجم بنسبة 90٪ وترجمته بشكل مناسب بناء على هذا النطاق الجديد (يصبح الموضع الجديد 402.2، يصبح موضع Y 545.1، إلخ).

من الواضح أن مضاعفة CX، CEC، FX، FY، و R By .1 سوف تحصل على جزء من الطريق هناك. ومع ذلك، كيف يمكنني إعادة صياغة البرنامج الطبيعي برمجيا للحصول على بقية الطريق؟

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

المحلول

سأترك المعلمات (CX، FX، R إلخ). فقط اضرب مصفوفة التحويل الحالية مع مصفوفة جديدة للتحجيم. المصفوفة الناتجة هي مصفوفة التحويل الجديدة للتدرج الخاص بك.

إذا كنت ترغب في التوسع حول المركز، فأنت أيضا إضافة ترجمة في مصفوفة التحجيم.

لذلك سيكون هذا لعامل التحجيم S = 0.1:

newGradientTansform = 
oldGradienTransform * matrix(s, 0, 0, s, -cx*(s-1), -cy*(s-1))
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top