Пример #1
0
 //For adding created connections to point B of the connection
 public void AddConnectedRegion(MapRegion region, RegionConnection connection)
 {
     if (!connections.ContainsKey(region))
     {
         if (!region.connections.ContainsKey(this))
         {
             connections.Add(region,connection);
         }
     }
 }
Пример #2
0
        public bool CreateShapeModelXLD(HObject ImageIn, object RegionDomain, string ModelName)
        {
            try
            {
                HTuple   ModelOriginPos = new HTuple();
                string[] strList        = ModelName.Split('.');
                if (strList.Length != 2)
                {
                    return(false);
                }
                // Local iconic variables
                HObject ho_ImageReduced, ho_Regions2, ho_RegionFillUp1;
                HObject ho_Contours1;

                // Local control variables
                HTuple hv_Width, hv_Height, hv_ModelID, hv_Row;
                HTuple hv_Column, hv_Angle, hv_Score, hv_ModelPos;

                // Initialize local and output iconic variables
                HOperatorSet.GenEmptyObj(out ho_ImageReduced);
                HOperatorSet.GenEmptyObj(out ho_Regions2);
                HOperatorSet.GenEmptyObj(out ho_RegionFillUp1);
                HOperatorSet.GenEmptyObj(out ho_Contours1);


                HOperatorSet.GetImageSize(ImageIn, out hv_Width, out hv_Height);
                ho_ImageReduced.Dispose();
                HOperatorSet.ReduceDomain(ImageIn, RegionDomain as HObject, out ho_ImageReduced);

                ho_Regions2.Dispose();
                HOperatorSet.Threshold(ho_ImageReduced, out ho_Regions2, 204, 255);
                ho_RegionFillUp1.Dispose();
                HOperatorSet.FillUpShape(ho_Regions2, out ho_RegionFillUp1, "area", 1, 1000);
                HOperatorSet.Connection(ho_RegionFillUp1, out HObject RegionConnection);
                HOperatorSet.SelectShape(RegionConnection, out HObject RegionSelected, "area", "and", 10000, 200000);

                ho_Contours1.Dispose();
                HOperatorSet.GenContourRegionXld(RegionSelected, out ho_Contours1, "border");


                HOperatorSet.CreateShapeModelXld(ho_Contours1, "auto", (new HTuple(0)).TupleRad(), (new HTuple(360)).TupleRad(), "auto", "auto", "ignore_local_polarity", 5, out hv_ModelID);
                HOperatorSet.WriteShapeModel(hv_ModelID, "LdsShapeModel.shm");
                HOperatorSet.FindShapeModel(ImageIn, hv_ModelID, (new HTuple(0)).TupleRad(), (new HTuple(360)).TupleRad(), 0.5, 1, 0.5, "least_squares", 0, 0.9, out hv_Row, out hv_Column, out hv_Angle, out hv_Score);

                hv_ModelPos    = new HTuple();
                hv_ModelPos[0] = hv_Row;
                hv_ModelPos[1] = hv_Column;
                hv_ModelPos[2] = hv_Angle;

                //创建的模板保存起来
                HOperatorSet.WriteShapeModel(hv_ModelID, $"{strList[0]}.shm");
                HOperatorSet.WriteTuple(hv_ModelPos, $"{strList[0]}.tup");


                (RegionDomain as HObject).Dispose();
                ho_ImageReduced.Dispose();
                ho_Regions2.Dispose();
                ho_RegionFillUp1.Dispose();
                ho_Contours1.Dispose();
                RegionConnection.Dispose();
                RegionSelected.Dispose();
                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
Пример #3
0
    //For creating connections in MapManager mapgen
    public void AddConnectedRegion(MapRegion region, bool intercity, int moveCost)
    {
        //Create graphic
        VectorUI newVectorUI=Instantiate(roadLinePrefab);
        List<Vector2> roadPoints=new List<Vector2>();
        roadPoints.Add(transform.position);
        roadPoints.Add(region.transform.position);
        //Visually differentiate inter-town connections and inner town connections
        float connectionThickness=0;
        Color connectionColor=Color.cyan;
        //Intertown - black, thinner
        if (intercity) {connectionThickness=8f; connectionColor=Color.black;}
        else {connectionThickness=16f; connectionColor=Color.gray;} //Innner town - gray, thicker

        newVectorUI.AssignVectorLine("Road Line",transform.parent,false,roadPoints,connectionThickness,connectionColor);
        //Create connection
        RegionConnection newConnection=new RegionConnection(newVectorUI,moveCost,intercity,this,region);
        region.AddConnectedRegion(this,newConnection);
        connections.Add(region,newConnection);
    }