float _diagonalSupport(Offset centersVector, _Diagonal diagonal) { Offset delta = this._cornerFor(this.begin, diagonal.endId) - this._cornerFor(this.begin, diagonal.beginId); float length = delta.distance; return(centersVector.dx * delta.dx / length + centersVector.dy * delta.dy / length); }
void _initialize() { D.assert(this.begin != null); D.assert(this.end != null); Offset centersVector = this.end.center - this.begin.center; _Diagonal diagonal = ArcUtils._maxBy(ArcUtils._allDiagonals, (_Diagonal d) => this._diagonalSupport(centersVector, d)); this._beginArc = new MaterialPointArcTween( begin: this._cornerFor(this.begin, diagonal.beginId), end: this._cornerFor(this.end, diagonal.beginId)); this._endArc = new MaterialPointArcTween( begin: this._cornerFor(this.begin, diagonal.endId), end: this._cornerFor(this.end, diagonal.endId)); this._dirty = false; }