示例#1
0
    public List<Vector2> TranslateTo(Vector2 point)
    {
        Vector2 center = Gesture.GetCenter(this.Points);
        List<Vector2> translatedPoints = new List<Vector2>();

        for (int i = 0; i < this.Points.Count; i++)
        {
            float x = this.Points[i].x + point.x - center.x;
            float y = this.Points[i].y + point.y - center.y;
            translatedPoints.Add(new Vector2(x, y));
        }

        return translatedPoints;
    }
示例#2
0
    public List<Vector2> RotateBy(float angle)
    {
        Vector2 center = Gesture.GetCenter(this.Points);
        float cos = Mathf.Cos(angle);
        float sin = Mathf.Sin(angle);
        List<Vector2> rotatedPoints = new List<Vector2>();

        for (int i = 0; i < this.Points.Count; i++)
        {
            float x = (this.Points[i].x - center.x) * cos - (this.Points[i].y - center.y) * sin + center.x;
            float y = (this.Points[i].x - center.x) * sin + (this.Points[i].y - center.y) * cos + center.y;
            rotatedPoints.Add(new Vector2(x, y));
        }

        return rotatedPoints;
    }
示例#3
0
    public static float GetIndicativeAngle(List<Vector2> points)
	{
        Vector2 centroid = Gesture.GetCenter(points);
        return Mathf.Atan2(centroid.y - points[0].y, centroid.x - points[0].x);
    }