コード例 #1
0
        public void GenererScene3d()
        {
            if (this.listeSPositionObjetDansImage != null)
            {
                if (this.environnement != null)
                {
                    for (int i = 0; i < this.listeSPositionObjetDansImage.Count; i++)
                    {
                        int idObj = this.listeObjetsIdentifiables.RecupererIdobjetAvecLibelle(this.listeSPositionObjetDansImage[i].libelle);

                        if (this.environnement.ObjetDansEnvironnement_idObj(idObj))
                        {
                            CObjetIdentifie nouvelobjetIdentifie = new CObjetIdentifie();

                            //Recuperer elevation et azimut centre pour les ajouter a elevationAuCentre...
                            //Élevation de l'objet par rapport au centre de l'image

                            float elevationCentre          = image.CalculerAngleElevationCentre(image.GetSecteurAngulaire_elevation_Max() - image.GetSecteurAngulaire_elevation_Min());
                            float elevationObjet           = image.CalculerAngleElevationObjet(this.listeSPositionObjetDansImage[i], image.GetSecteurAngulaire_elevation_Max() - image.GetSecteurAngulaire_elevation_Min());
                            float elevationCentreVersObjet = elevationObjet - elevationCentre;
                            float elevationReel            = image.GetSecteurAngulaire_elevation_Min() + elevationObjet;

                            //Azimut de l'objet par rapport au centre de l'image

                            float azimutCentre          = image.CalculerAngleAzimutCentre(image.GetSecteurAngulaire_azimut_Max() - image.GetSecteurAngulaire_azimut_Min());
                            float azimutObjet           = image.CalculerAngleAzimutObjet(this.listeSPositionObjetDansImage[i], image.GetSecteurAngulaire_azimut_Max() - image.GetSecteurAngulaire_azimut_Min());
                            float azimutCentreVersObjet = azimutObjet - azimutCentre;
                            float azimutReel            = image.GetSecteurAngulaire_azimut_Min() + azimutObjet;

                            double distance = this.nuagePoint3D.GetDistance((int)Math.Ceiling(elevationReel), (int)Math.Ceiling(azimutReel));

                            if (distance == -1)
                            {
                                Console.WriteLine("Distance non disponnible dans le nuage de point 3D");
                            }

                            if (azimutCentreVersObjet < 0)
                            {
                                nouvelobjetIdentifie.SetPosition3D_X(this.image.GetPosition3D_X() - (Math.Sin((Math.Abs(azimutCentreVersObjet) * Math.PI) / 180) * distance));
                            }
                            if (azimutCentreVersObjet >= 0)
                            {
                                nouvelobjetIdentifie.SetPosition3D_X(this.image.GetPosition3D_X() + (Math.Sin((Math.Abs(azimutCentreVersObjet) * Math.PI) / 180) * distance));
                            }

                            nouvelobjetIdentifie.SetPosition3D_Y(this.image.GetPosition3D_Y() + (Math.Cos((Math.Abs(azimutCentreVersObjet) * Math.PI) / 180) * distance));

                            if (elevationCentreVersObjet < 0)
                            {
                                nouvelobjetIdentifie.SetPosition3D_Z(this.image.GetPosition3D_Z() - (Math.Sin((Math.Abs(elevationCentreVersObjet) * Math.PI) / 180) * distance));
                            }
                            if (elevationCentreVersObjet >= 0)
                            {
                                nouvelobjetIdentifie.SetPosition3D_Z(this.image.GetPosition3D_Z() + (Math.Sin((Math.Abs(elevationCentreVersObjet) * Math.PI) / 180) * distance));
                            }

                            nouvelobjetIdentifie.setLibelle(this.listeSPositionObjetDansImage[i].libelle);

                            CObjetIdentifiable objetIdentifiableTemp = this.listeObjetsIdentifiables.RecupererObjetIdentifiable_Libelle(this.listeSPositionObjetDansImage[i].libelle);

                            if (objetIdentifiableTemp != null)
                            {
                                nouvelobjetIdentifie.ChargerObjetIdentifiable(objetIdentifiableTemp);
                                this.scene3D.AjouterObjetIdentifie(nouvelobjetIdentifie);
                            }
                            else
                            {
                                Console.WriteLine("L'objet \"" + this.listeSPositionObjetDansImage[i].libelle + "\" n'est répertorié dans la liste des objets identifiables.");
                            }
                        }
                        else
                        {
                            Console.WriteLine("L'objet \"" + this.listeSPositionObjetDansImage[i].libelle + "\" ne fait pas partie de l'environnement\"" + this.environnement.GetLibelle() + "\".");
                        }
                    }
                }
                else
                {
                    Console.WriteLine("L'environnement\"" + this.image.GetLibelle() + "\" n'est pas déninit dans comme étant un environnement identifiable.");
                }
            }
            else
            {
                Console.WriteLine("+----------------------------------------------------------------------------------------------+");
                Console.WriteLine("| " + DateTime.Now.ToString("HH:mm:ss", System.Globalization.DateTimeFormatInfo.InvariantInfo) + " | Méthode: \"GenererScene3d(List<SPositionObjetDansImage> sPositionObjetDansImage)\"  |");
                Console.WriteLine("| La variable \"sPositionObjetDansImage\" vaut: null.                                            |");
                Console.WriteLine("+----------------------------------------------------------------------------------------------------------------+");
                Console.WriteLine("| Conseil: Vérifier que la méthode \"application.PositionnerObjetsDansImage()\" soit appelée avant cette méthode.  |");
                Console.WriteLine("+----------------------------------------------------------------------------------------------------------------+");
                Console.WriteLine(" ");
            }
        }
コード例 #2
0
ファイル: Objets.cs プロジェクト: Dolovan/Projet_BTS
 public int AjouterObjetIdentifie(CObjetIdentifie objetIdentifie)
 {
     this.lObjetsIdentifies.Add(objetIdentifie);
     return(this.lObjetsIdentifies.IndexOf(objetIdentifie));
 }
コード例 #3
0
ファイル: Scene3D.cs プロジェクト: Dolovan/Projet_BTS
 public int AjouterObjetIdentifie(CObjetIdentifie objetIdentifie)
 {
     return(this.listeObjetsIdentifies.AjouterObjetIdentifie(objetIdentifie));
 }