Beispiel #1
0
    //using the existing point objects, transform their positions and update their tooltips based on the input transformation matrix
    public void TransformPoints(Matrix2x2 transformation)
    {
        if (transformation == null)
        {
            Debug.LogError("Can't transform points with a null transformation matrix.");
            return;
        }

        int numPoints = listOfPoints.Length;

        for (int i = 0; i < numPoints; i++)
        {
            //transform the point
            float   newX             = transformation.a * listOfPoints[i].x + transformation.b * listOfPoints[i].y;
            float   newY             = transformation.c * listOfPoints[i].x + transformation.d * listOfPoints[i].y;
            Vector2 transformedPoint = new Vector2(newX, newY);

            transformedPointPositions[i] = transformedPoint;

            //find and move the object to the point
            Vector3 worldPosition = new Vector3(transformedPoint.x * cartesianToWorldScale[0], transformedPoint.y * cartesianToWorldScale[1], -1);

            pointObjects[i].transform.position = worldPosition;
        }

        //update line positions
        for (int i = 0; i < numPoints; i++)
        {
            RenderPoint renderPoint = pointObjects[i].GetComponent <RenderPoint>();
            renderPoint.UpdateLine();
        }

        AdjustZoom();
        UpdatePointTooltips();
    }