Esempio n. 1
0
        /// <summary>
        /// Transform
        /// </summary>
        public override void TransformBy(LitMath.Matrix3 transform)
        {
            LitMath.Vector2 pnt = _center + new LitMath.Vector2(_radius, 0);

            _center = transform * _center;
            _radius = (transform * pnt - _center).length;
        }
Esempio n. 2
0
 /// <summary>
 /// Transform
 /// </summary>
 public override void TransformBy(LitMath.Matrix3 transform)
 {
     for (int i = 0; i < this.NumberOfVertices; ++i)
     {
         _vertices[i] = transform * _vertices[i];
     }
 }
Esempio n. 3
0
 /// <summary>
 /// Transform
 /// </summary>
 public override void TransformBy(LitMath.Matrix3 transform)
 {
     LitMath.Vector2 refPnt = _basePoint + _direction;
     _basePoint = transform * _basePoint;
     refPnt     = transform * refPnt;
     _direction = (refPnt - _basePoint).normalized;
 }
Esempio n. 4
0
        /// <summary>
        /// Transform
        /// </summary>
        public override void TransformBy(LitMath.Matrix3 transform)
        {
            LitMath.Vector2 spnt = transform * this.startPoint;
            LitMath.Vector2 epnt = transform * this.endPoint;
            LitMath.Vector2 mpnt = transform * this.middlePoint;

            _center = transform * _center;
            _radius = (spnt - _center).length;

            double sAngle = LitMath.Vector2.SignedAngleInRadian(
                new LitMath.Vector2(1, 0),
                spnt - _center);
            double eAngle = LitMath.Vector2.SignedAngleInRadian(
                new LitMath.Vector2(1, 0),
                epnt - _center);

            if (LitMath.Vector2.SignedAngle(spnt - _center, mpnt - _center) >= 0)
            {
                this.startAngle = sAngle;
                this.endAngle   = eAngle;
            }
            else
            {
                this.startAngle = eAngle;
                this.endAngle   = sAngle;
            }
        }
Esempio n. 5
0
        /// <summary>
        /// Transform
        /// </summary>
        public override void TransformBy(LitMath.Matrix3 transform)
        {
            LitMath.Vector2 pntX = _center + new LitMath.Vector2(_radiusX, 0);
            LitMath.Vector2 pntY = _center + new LitMath.Vector2(0, _radiusY);

            _center  = transform * _center;
            _radiusX = (transform * pntX - _center).length;
            _radiusY = (transform * pntY - _center).length;
        }
Esempio n. 6
0
 /// <summary>
 /// 刷新结果图元
 /// </summary>
 private void UpdateResultEntities()
 {
     LitMath.Matrix3 mirrorMatrix = MathUtils.MirrorMatrix(
         new LitMath.Line2(_mirrorLine.startPoint, _mirrorLine.endPoint));
     _resultEntities.Clear();
     foreach (Entity entity in _entities)
     {
         Entity copy = entity.Clone() as Entity;
         copy.TransformBy(mirrorMatrix);
         _resultEntities.Add(copy);
     }
 }
Esempio n. 7
0
        /// <summary>
        /// 镜像矩阵
        /// </summary>
        internal static LitMath.Matrix3 MirrorMatrix(LitMath.Line2 mirrorLine)
        {
            LitMath.Vector2 lineDir  = mirrorLine.direction;
            LitMath.Matrix3 matPos1  = LitMath.Matrix3.Translate(-mirrorLine.startPoint);
            double          rotAngle = LitMath.Vector2.SignedAngle(lineDir, new LitMath.Vector2(1, 0));

            LitMath.Matrix3 matRot1 = LitMath.Matrix3.Rotate(rotAngle);

            LitMath.Matrix3 mirrorMatX = new LitMath.Matrix3(
                1, 0, 0,
                0, -1, 0,
                0, 0, 1);

            LitMath.Matrix3 matRot2 = LitMath.Matrix3.Rotate(-rotAngle);
            LitMath.Matrix3 matPos2 = LitMath.Matrix3.Translate(mirrorLine.startPoint);

            return(matPos2 * matRot2 * mirrorMatX * matRot1 * matPos1);
        }
Esempio n. 8
0
 /// <summary>
 /// Transform
 /// 前提: 变换不改变图元整体形状
 /// </summary>
 public abstract void TransformBy(LitMath.Matrix3 transform);
Esempio n. 9
0
 /// <summary>
 /// Transform
 /// </summary>
 public override void TransformBy(LitMath.Matrix3 transform)
 {
     _position = transform * _position;
 }
Esempio n. 10
0
 /// <summary>
 /// Transform
 /// </summary>
 public override void TransformBy(LitMath.Matrix3 transform)
 {
     _startPoint = transform * _startPoint;
     _endPoint   = transform * _endPoint;
 }
Esempio n. 11
0
 /// <summary>
 /// Transform
 /// </summary>
 public override void TransformBy(LitMath.Matrix3 transform)
 {
 }