createGoldenRatioDivides static method

List<NamedLine> createGoldenRatioDivides({
  1. NamedLine? fromStartLine,
  2. NamedLine? toEndLine,
  3. bool includeStartEnd = false,
})

创建黄金分割线

Implementation

static List<NamedLine> createGoldenRatioDivides({
  NamedLine? fromStartLine,
  NamedLine? toEndLine,
  bool includeStartEnd = false}){
  NamedLine fromStart = fromStartLine ?? NamedLine.percent(0.0, name: NAME_START);
  NamedLine toEnd = toEndLine ?? NamedLine.percent(1.0, name: NAME_END);
  goldenStartPercentGetter(size)=> 0.382 * (toEnd.percentGetter(size) - fromStart.percentGetter(size)) + fromStart.percentGetter(size);
  goldenEndPercentGetter(size)=> 0.618 * (toEnd.percentGetter(size) - fromStart.percentGetter(size)) + fromStart.percentGetter(size);
  List<NamedLine> excludeStartEnd = [
    NamedLine.getter(
      goldenStartPercentGetter,
      name: '$GOLDEN_RATIO_DIVIDES-$NAME_START:(1/1)=>${goldenStartPercentGetter(Size.square(1.0))}',
    ),
    NamedLine.getter(
      goldenEndPercentGetter,
      name: '$GOLDEN_RATIO_DIVIDES-$NAME_END:(1/1)=>${goldenEndPercentGetter(Size.square(1.0))}',
    )
  ];
  return includeStartEnd ? [
    NamedLine.rename(rename: '$GOLDEN_RATIO_DIVIDES-$NAME_START', copy: fromStart),
    ... excludeStartEnd,
    NamedLine.rename(rename: '$GOLDEN_RATIO_DIVIDES-$NAME_END', copy: toEnd)
  ] : excludeStartEnd;
}