Beispiel #1
0
    // Use this for initialization
    void Start()
    {
        PlaneCreator pc = new PlaneCreator(new Vector3(0, 0, 0), 2, 2, 10, prefab);

        Position[] positions = Position.PositionCreator(new Position(0, 0, new PTime(0, 0)), 2, 2, 10, 10);
        for (int i = 0; i < positions.Length; i++)
        {
            Debug.Log("position" + i + " lon,lat = " + positions[i].lontitute + "," + positions[i].latitute + "," + positions[i].time);
        }
    }
Beispiel #2
0
    void Start()
    {
        myTransform = transform;
        taskExecutionManager.Initialize();
        chunkManager.Initialize();

        worldMatrix = Matrix4x4.TRS(myTransform.position, myTransform.rotation, Vector3.one);
        gridMesh    = PlaneCreator.Create(chunkSize, pointsNumber);
        triangles   = gridMesh.triangles;
        uvs         = gridMesh.uv;
        tangents    = gridMesh.tangents;

        var fnsuComponents = myTransform.GetComponents <FastNoiseSIMDUnity>();

        fastNoise1 = fnsuComponents[0].fastNoiseSIMD;
        fastNoise2 = fnsuComponents[1].fastNoiseSIMD;
        taskExecutionManager.noiseGroup[0] = new NoiseGroup(fastNoise1, fastNoise2);
        for (int i = 1; i < taskExecutionManager.ranTaskCount; i++)
        {
            var fn1 = new FastNoiseSIMD();
            var fn2 = new FastNoiseSIMD();
            fnsuComponents[0].InitNoise(fn1);
            fnsuComponents[1].InitNoise(fn2);
            taskExecutionManager.noiseGroup[i] = new NoiseGroup(fn1, fn2);
        }

        float f = Time.realtimeSinceStartup;

        int counter       = 0;
        int halfWorldSize = worldSize / 2;

        for (int x = -halfWorldSize; x < halfWorldSize; x += chunkSize)
        {
            for (int z = -halfWorldSize; z < halfWorldSize; z += chunkSize)
            {
                Vector3 position = new Vector3(x, 0, z);
                Chunk   chunk    = chunkManager.CreateChunkGameobject($"Chunk {counter}", myTransform, position, Quaternion.identity);
                chunk.absolutePosition = position;
                var verts = gridMesh.vertices;
                Generate(chunk.chunkName, verts, chunk.chunkData.transformationMatrix, x, 0, z);

                counter++;
            }
        }

        Debug.Log($"Default : {(Time.realtimeSinceStartup - f) * 1000.0f} ms");
    }
Beispiel #3
0
    public void Refresh(Position centerPoint)
    {
        this.centerPoint = centerPoint;

        ratio = Mathf.Cos(Mathf.Deg2Rad * centerPoint.latitute);
        float onesecond = ((360 * 3600) / (size * Mathf.Pow(2, zoom)));

        halfLon = (onesecond * size / 3600);
        fullLon = halfLon * 2;
        halfLat = halfLon * ratio;
        fullLat = halfLat * 2;

        PlaneCreator pc = new PlaneCreator(new Vector3(0, 0, 0), 6, 4, 10, planePrefab);

        planes = pc.planes;

        points = Position.PositionCreator(centerPoint, 6, 4, fullLat, fullLon);
    }
Beispiel #4
0
        public Track Best(string startP, string finishP, Type deliv, int volume)
        {
            GlobalData data   = GlobalData.GetInstance();
            int        start  = Decr(startP);
            int        finish = Decr(finishP);

            int[][] mat = new int[data.SIZE][];
            for (int i = 0; i < data.SIZE; i++)
            {
                mat[i] = new int[data.SIZE];
            }

            mat = MatrixUpd(deliv);
            int[] path = new int[data.SIZE];
            for (int i = 0; i < data.SIZE; i++)
            {
                path[i] = -1;
            }

            path = Optim(mat, start, finish);
            int count = 0;

            for (int i = 0; i < data.SIZE; i++)
            {
                if (path[i] != -1)
                {
                    count++;
                }
                else
                {
                    break;
                }
            }

            CarCreator   carCreator   = CarCreator.GetInstance();
            TrainCreator trainCreator = TrainCreator.GetInstance();
            PlaneCreator planeCreator = PlaneCreator.GetInstance();

            switch (count)
            {
            case 1:
            {
                Car car1 = carCreator.CreateTransport() as Car;
                foreach (var it in data.table)
                {
                    if (it.Key.Contains(data.points[path[0]]))
                    {
                        car1 = carCreator.CreateTransport(
                            data.tableCost[it.Value * 3 + 2],
                            data.matrixDist[path[0], path[1]])
                               as Car;
                    }
                }

                Track track = new Track();
                track.AddTransport(volume, car1);
                return(track);
            }

            case 3:
            {
                Car car1 = carCreator.CreateTransport() as Car;
                foreach (var it in data.table)
                {
                    if (it.Key.Contains(data.points[path[0]]))
                    {
                        car1 = carCreator.CreateTransport(
                            data.tableCost[it.Value * 3 + 2],
                            data.matrixDist[path[0], path[1]])
                               as Car;
                    }
                }

                Car car2 = carCreator.CreateTransport() as Car;
                foreach (var it in data.table)
                {
                    if (it.Key.Contains(data.points[path[2]]))
                    {
                        car2 = carCreator.CreateTransport(
                            data.tableCost[it.Value * 3 + 2],
                            data.matrixDist[path[2], path[3]])
                               as Car;
                    }
                }

                Train train1 = trainCreator.CreateTransport() as Train;
                Plane plane1 = planeCreator.CreateTransport() as Plane;
                Track track  = new Track();

                foreach (var it in data.table)
                {
                    if (it.Key.Contains(data.points[path[1]]) &&
                        data.points[path[1]].Contains("TS"))
                    {
                        train1 = trainCreator.CreateTransport(
                            data.tableCost[it.Value * 3 + 1],
                            data.matrixDist[path[1], path[2]])
                                 as Train;
                        track.AddTransport(volume, car1, car2, train1);
                    }

                    if (it.Key.Contains(data.points[path[1]]) &&
                        data.points[path[1]].Contains("AP"))
                    {
                        plane1 = planeCreator.CreateTransport(
                            data.tableCost[it.Value * 3],
                            data.matrixDist[path[1], path[2]])
                                 as Plane;
                        track.AddTransport(volume, car1, car2, plane1);
                    }
                }

                return(track);
            }

            case 5:
            {
                Car car1 = carCreator.CreateTransport() as Car;
                foreach (var it in data.table)
                {
                    if (it.Key.Contains(data.points[path[0]]))
                    {
                        car1 = carCreator.CreateTransport(
                            data.tableCost[it.Value * 3 + 2],
                            data.matrixDist[path[0], path[1]])
                               as Car;
                    }
                }

                Train train1 = trainCreator.CreateTransport() as Train;
                Plane plane1 = planeCreator.CreateTransport() as Plane;
                foreach (var it in data.table)
                {
                    if (it.Key.Contains(data.points[path[1]]) &&
                        data.points[path[1]].Contains("TS"))
                    {
                        train1 = trainCreator.CreateTransport(
                            data.tableCost[it.Value * 3 + 1],
                            data.matrixDist[path[1], path[2]])
                                 as Train;
                    }
                    if (it.Key.Contains(data.points[path[1]]) &&
                        data.points[path[1]].Contains("AP"))
                    {
                        plane1 = planeCreator.CreateTransport(
                            data.tableCost[it.Value * 3],
                            data.matrixDist[path[1], path[2]])
                                 as Plane;
                    }
                }

                Car car2 = carCreator.CreateTransport() as Car;
                foreach (var it in data.table)
                {
                    if (it.Key.Contains(data.points[path[2]]))
                    {
                        car2 = carCreator.CreateTransport(
                            data.tableCost[it.Value * 3 + 2],
                            data.matrixDist[path[2], path[3]])
                               as Car;
                    }
                }

                foreach (var it in data.table)
                {
                    if (it.Key.Contains(data.points[path[3]]) &&
                        data.points[path[3]].Contains("AP"))
                    {
                        plane1 = planeCreator.CreateTransport(
                            data.tableCost[it.Value * 3],
                            data.matrixDist[path[3], path[4]])
                                 as Plane;
                    }
                    if (it.Key.Contains(data.points[path[3]]) &&
                        data.points[path[3]].Contains("TS"))
                    {
                        train1 = trainCreator.CreateTransport(
                            data.tableCost[it.Value * 3 + 1],
                            data.matrixDist[path[3], path[4]])
                                 as Train;
                    }
                }

                Car car3 = carCreator.CreateTransport() as Car;
                foreach (var it in data.table)
                {
                    if (it.Key.Contains(data.points[path[4]]))
                    {
                        car3 = carCreator.CreateTransport(
                            data.tableCost[it.Value * 3 + 2],
                            data.matrixDist[path[4], path[5]])
                               as Car;
                    }
                }

                Track track = new Track();
                track.AddTransport(volume, car1, car2, car3, train1, plane1);
                return(track);
            }

            case 7:
            {
                Car car1 = carCreator.CreateTransport() as Car;
                foreach (var it in data.table)
                {
                    if (it.Key.Contains(data.points[path[0]]))
                    {
                        car1 = carCreator.CreateTransport(
                            data.tableCost[it.Value * 3 + 2],
                            data.matrixDist[path[0], path[1]])
                               as Car;
                    }
                }

                Train train1 = trainCreator.CreateTransport() as Train;
                foreach (var it in data.table)
                {
                    if (it.Key.Contains(data.points[path[1]]))
                    {
                        train1 = trainCreator.CreateTransport(
                            data.tableCost[it.Value * 3 + 1],
                            data.matrixDist[path[1], path[2]])
                                 as Train;
                    }
                }

                Car car2 = carCreator.CreateTransport() as Car;
                foreach (var it in data.table)
                {
                    if (it.Key.Contains(data.points[path[2]]))
                    {
                        car2 = carCreator.CreateTransport(
                            data.tableCost[it.Value * 3 + 2],
                            data.matrixDist[path[2], path[3]])
                               as Car;
                    }
                }

                Plane plane1 = planeCreator.CreateTransport() as Plane;
                foreach (var it in data.table)
                {
                    if (it.Key.Contains(data.points[path[3]]))
                    {
                        plane1 = planeCreator.CreateTransport(
                            data.tableCost[it.Value * 3],
                            data.matrixDist[path[3], path[4]])
                                 as Plane;
                    }
                }

                Car car3 = carCreator.CreateTransport() as Car;
                foreach (var it in data.table)
                {
                    if (it.Key.Contains(data.points[path[4]]))
                    {
                        car3 = carCreator.CreateTransport(
                            data.tableCost[it.Value * 3 + 2],
                            data.matrixDist[path[4], path[5]])
                               as Car;
                    }
                }

                Train train2 = trainCreator.CreateTransport() as Train;
                foreach (var it in data.table)
                {
                    if (it.Key.Contains(data.points[path[5]]))
                    {
                        train2 = trainCreator.CreateTransport(
                            data.tableCost[it.Value * 3 + 1],
                            data.matrixDist[path[5], path[6]])
                                 as Train;
                    }
                }

                Car car4 = carCreator.CreateTransport() as Car;
                foreach (var it in data.table)
                {
                    if (it.Key.Contains(data.points[path[6]]))
                    {
                        car4 = carCreator.CreateTransport(
                            data.tableCost[it.Value * 3 + 2],
                            data.matrixDist[path[6], path[7]])
                               as Car;
                    }
                }

                Track track = new Track();
                track.AddTransport(volume, car1, car2, car3, car4, train1, train2, plane1);

                return(track);
            }

            default:
            {
                return(null);
            }
            }
        }
    public StructHelper makeFeature(GameObject fetureTemplate, GameObject featurePredictionsTemplate, Dictionary <string, Dictionary <string, ushort[][]> > feature)
    {
        FeatureMapData featureMapData = new FeatureMapData();
        int            index;
        int            counter;
        GameObject     go;

        initStructObjects();
        featureMapData.setCoordX(0);
        featureMapData.setCoordY(0);
        featureMapData.setCoordZ(0);
        int counterLayers = 0;
        int scalingFactor = 40;
        var labels        = new List <string>(feature["labels"].Keys);

        foreach (KeyValuePair <string, Dictionary <string, ushort[][]> > layer in feature)
        {
            counter       = 0;
            counterLayers = counterLayers + 1;
            featureMapData.setCoordScale(scalingFactor / counterLayers);
            Tuple <int, int> divisors = closestDivisors(layer.Value.Count);
            featureMapData.setCoordY(0);
            featureMapData.setCoordX(0);
            featureMapData.setCoordZ(featureMapData.getCoordZ() - 200);
            foreach (KeyValuePair <string, ushort[][]> featureMap in layer.Value)
            {
                featureMapData.setHeight(featureMap.Value.GetLength(0));
                featureMapData.setWidth(featureMap.Value.GetLength(0));
                featureMapData.setName(featureMap.Key);

                featureMapData.setCoordY(featureMapData.getCoordY() + featureMapData.getWidth() + featureMapData.getWidth());

                if (featureMapData.getName().Contains("fc") || featureMapData.getName().Contains("dense") || featureMapData.getName().Contains("pred"))
                {
                    index    = 0;
                    divisors = closestDivisors(featureMap.Value[0].Length);
                    var name        = featureMapData.getName();
                    var featureMaps = featureMap.Value[0];
                    featureMapData.setCoordX(0);
                    featureMapData.setCoordY(0);
                    for (int i = 0; i < divisors.Item1; i++)
                    {
                        featureMapData.setCoordX(featureMapData.getCoordX() + 60);
                        featureMapData.setCoordY(0);
                        for (int j = 0; j < divisors.Item2; j++)
                        {
                            go      = GameObject.Instantiate(featurePredictionsTemplate);
                            go.name = featureMapData.getName();
                            CubeCreator cube = go.AddComponent <CubeCreator>();
                            featureMapData.setCoordY(featureMapData.getCoordY() + 60);

                            if (featureMapData.getName().Contains("pred"))
                            {
                                cube.createCube(featureMapData, name + "_" + labels[index], featureMaps[index]);
                                structHelper.LastLayersPredictions.Add(name + "_" + index.ToString(), cube);
                            }
                            else
                            {
                                cube.createCube(featureMapData, name + "_" + index.ToString(), featureMaps[index]);
                                structHelper.LastLayersPredictions.Add(name + "_" + index.ToString(), cube);
                            }
                            index++;
                        }
                    }
                }
                else
                {
                    go      = GameObject.Instantiate(fetureTemplate);
                    go.name = featureMapData.getName();
                    PlaneCreator plane = go.GetComponent <PlaneCreator>();
                    plane.createPlane(featureMapData, featureMap.Value);
                    structHelper.convLayers.Add(featureMap.Key, plane);
                }
                counter++;
                if (counter == divisors.Item2)
                {
                    featureMapData.setCoordY(0);
                    featureMapData.setCoordX(featureMapData.getCoordX() + featureMapData.getHeight() + featureMapData.getHeight());
                    counter = 0;
                }
            }
        }
        var parent = GameObject.Find("BackCamera").GetComponent <Camera>().transform.position = new Vector3(800, 800, featureMapData.getCoordZ() - 70);

        return(structHelper);
    }
Beispiel #6
0
    public void Refresh()
    {
        ratio = Mathf.Cos(Mathf.Deg2Rad * centerPoint.latitute);
        float onesecond = ((360 * 3600) / (size * Mathf.Pow(2, zoom)));

        halfLon    = (onesecond * size / 3600);
        fullLon    = halfLon * 2;
        halfLat    = halfLon * ratio;
        fullLat    = halfLat * 2;
        fiveperLat = 0.005f * 10 / fullLat;
        fiveperLon = 0.005f * 10 / fullLon;

        /*
         * for (int i = 0; i < 25; i++)
         * {
         *  planes[i] = GameObject.Find("Plane" + i);
         *
         * }*/

        PlaneCreator pc = new PlaneCreator(new Vector3(0, 0, 0), 6, 4, 10, prefab);

        planes = pc.planes;

        //Debug.Log("refresh");
        points = Position.PositionCreator(centerPoint, 6, 4, fullLat, fullLon);

        /*
         * for (int i = 0; i < points.Length; i++)
         * {
         *  Debug.Log("points" + i + ":" + points[i].latitute+","+points[i].lontitute+","+points[i].time);
         * }
         *
         *
         * Position p0 = new Position(centerPoint.latitute + 2 * fullLat, centerPoint.lontitute - 2 * fullLon,0);
         * Position p1 = new Position(centerPoint.latitute + 2 * fullLat, centerPoint.lontitute - fullLon, 0);
         * Position p2 = new Position(centerPoint.latitute + 2 * fullLat, centerPoint.lontitute, 0);
         * Position p3 = new Position(centerPoint.latitute + 2 * fullLat, centerPoint.lontitute + fullLon, 0);
         * Position p4 = new Position(centerPoint.latitute + 2 * fullLat, centerPoint.lontitute + 2 * fullLon, 0);
         * Position p5 = new Position(centerPoint.latitute + fullLat, centerPoint.lontitute - 2 * fullLon, 0);
         * Position p6 = new Position(centerPoint.latitute + fullLat, centerPoint.lontitute - fullLon, 0);
         * Position p7 = new Position(centerPoint.latitute + fullLat, centerPoint.lontitute, 0);
         * Position p8 = new Position(centerPoint.latitute + fullLat, centerPoint.lontitute + fullLon, 0);
         * Position p9 = new Position(centerPoint.latitute + fullLat, centerPoint.lontitute + 2 * fullLon, 0);
         * Position p10 = new Position(centerPoint.latitute, centerPoint.lontitute - 2 * fullLon, 0);
         * Position p11 = new Position(centerPoint.latitute, centerPoint.lontitute - fullLon, 0);
         * Position p12 = new Position(centerPoint.latitute, centerPoint.lontitute, 0);
         * Position p13 = new Position(centerPoint.latitute, centerPoint.lontitute + fullLon, 0);
         * Position p14 = new Position(centerPoint.latitute, centerPoint.lontitute + 2 * fullLon, 0);
         * Position p15 = new Position(centerPoint.latitute - fullLat, centerPoint.lontitute - 2 * fullLon, 0);
         * Position p16 = new Position(centerPoint.latitute - fullLat, centerPoint.lontitute - fullLon, 0);
         * Position p17 = new Position(centerPoint.latitute - fullLat, centerPoint.lontitute, 0);
         * Position p18 = new Position(centerPoint.latitute - fullLat, centerPoint.lontitute + fullLon, 0);
         * Position p19 = new Position(centerPoint.latitute - fullLat, centerPoint.lontitute + 2 * fullLon, 0);
         * Position p20 = new Position(centerPoint.latitute - 2 * fullLat, centerPoint.lontitute - 2 * fullLon, 0);
         * Position p21 = new Position(centerPoint.latitute - 2 * fullLat, centerPoint.lontitute - fullLon, 0);
         * Position p22 = new Position(centerPoint.latitute - 2 * fullLat, centerPoint.lontitute, 0);
         * Position p23 = new Position(centerPoint.latitute - 2 * fullLat, centerPoint.lontitute + fullLon, 0);
         * Position p24 = new Position(centerPoint.latitute - 2 * fullLat, centerPoint.lontitute + 2 * fullLon, 0);
         *
         * Position[] temp = {p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24};
         * points = temp;
         */
    }