3D Geometrinin Güzergaha Yerlestirilmesi

Daha öncesinde tanımlanmış bir güzergah objesine, proje objeleri hizalanarak kendilerini konumlandırır. Bu objeleri güzergaha oturabilmesi için öncelikle güzergah parametresi tanımlanması gerekir. Bir projede birden fazla güzergah olabilir.


Parametreleri

  • AlignH: 

        Bir objenin güzergahın yatay eğrisi üzerinde hizalanmasının kontrolüne izin verir.

  • AlignV:

        Bir objenin güzergahın düşey eğrisi üzerinde hizalanmasının kontrolüne izin verir.

  • AlignT:

        Bir objenin güzergahın dever etkisinin kontrolüne izin verir.


        Bu parametrelerin alabileceği değerler:

          1) None:

        Nesne güzergahdaki lokasyona taşınacaktır, ancak güzergaha göre dönmeyecektir.

          2) Orient:

        Nesne güzergahdaki lokasyona taşınacaktır ve rotayı eşitlemek için güzergaha göre dönecektir.

          3) Warp:

        Nesne güzergahdaki lokasyona taşınacaktır ve rotayı eşitlemek için güzergaha göre dönecektir. Ek olarak yatay ve düşey güzergaha eşitlenmek için eğrilecektir.

Bir obje güzergaha otururken Type'ı önemlidir. "Surface" ve "Volume" objesi güzergaha girdiğinde tam orta noktasından otururken, "Line" objesi güzergaha baş ve son noktalarından oturur. (Bknz: Örnek3)

Daha fazla bilgi için;

bkz. Alignment Objesi

bkz. Alignment Fonksiyonları


Örnek:

Daha öncesinde yaratılmış olan bir güzergah objesi aynı objeler arası iletişimde anlatıldığı gibi çağrılır(bkz. Objeler Arası Iletişim). Daha sonrasında objeyi, çağrılan güzergaha oturtmak için yukarıda belirtilen parametreler aşağıdaki satırda verilen  ifadeyle 3D modeli oluşturulan objenin içine atanır. Eğer 3D oluşturan objeler çok ise her birine ayrı ayrı bu parametreler yazılmalıdır.

Alignment="test.Guzergah" AlignH="warp" AlignV="warp" AlignT="none"

İfadesi ile oluşturulacak olan obje istenildiği gibi güzergaha oturtulmuş olur.


<O N="Guzergaha_Oturan_Obje" T="Project" Category="Cekirdek Objeler">
   <P N="test" V="A1" T="Alignment Obje" Role="Input" />
   <O T="ParamInfo" Min="1" Max="1" Required="1" Pick="1" Param="test" />
   <O T="Group" Z="2">
     <O T="Volume" Alignment="test.Guzergah" AlignH="warp" AlignV="warp" AlignT="none">
           <O T="Surface" Z="0">
               <O T="Point" X="4000" Y="-4000" />
               <O T="Point" X="4000" Y="4000" />
               <O T="Point" X="-4000" Y="4000" />
               <O T="Point" X="-4000" Y="-4000" />
           </O>
           <O T="Surface" Z="2000">
               <O T="Point" X="2000" Y="-2000" />
               <O T="Point" X="2000" Y="2000" />
               <O T="Point" X="-2000" Y="2000" />
               <O T="Point" X="-2000" Y="-2000" />
           </O>
       </O>
   </O>
   <O T="Private">
       <O N="A1" T="Alignment Obje">
          <P N="DDirection" V="2" D="SagSol[Left=1/Right=2]" />
          <O N="Guzergah" T="Alignment" Station="0" Azimuth="0" Lat="0" Lng="0" Elev="0">
               <O N="A" T="elevation point">
                   <P N="Station" V="0" />
                   <P N="Grade" V="0" />
                   <P N="Elevation" V="1200" />
               </O>
               <O N="B" T="ElevationPoint">
                   <P N="Station" V="40000" />
                   <P N="Grade" V="0" />
                   <P N="Elevation" V="40000" />
               </O>
               <O N="C" T="ElevationPoint">
                   <P N="Station" V="100000" />
                   <P N="Grade" V="0" />
                   <P N="Elevation" V="80000" />
               </O>
               <O N="D" T="ElevationPoint">
                   <P N="Station" V="400000" />
                   <P N="Grade" V="0" />
                   <P N="Elevation" V="80000" />
               </O>
               <O N="E" T="ElevationPoint">
                   <P N="Station" V="500000" />
                   <P N="Grade" V="0" />
                   <P N="Elevation" V="100000" />
               </O>
               <O T="Straight" Length="600000" />
               <O N="CS1" T="CrossSection">
                   <P N="Station" V="0" />
                   <P N="LeftEdgeToHCL" V="7000" />
                   <P N="ElevationAtHCL" V="0" />
                   <O N="Sol" T="CrossSectionSegment">
                       <P N="Slope" V="-0.1" />
                       <P N="Width" V="7000" />
                   </O>
                   <O N="Sag" T="CrossSectionSegment">
                       <P N="Slope" V="0.1" />
                       <P N="Width" V="7000" />
                   </O>
               </O>
               <O N="CS2" T="CrossSection">
                   <P N="Station" V="400000" />
                   <P N="LeftEdgeToHCL" V="7000" />
                   <P N="ElevationAtHCL" V="0" />
                   <O N="Sol" T="CrossSectionSegment">
                       <P N="Slope" V="0.1" />
                       <P N="Width" V="7000" />
                   </O>
                   <O N="Sag" T="CrossSectionSegment">
                       <P N="Slope" V="-0.1" />
                       <P N="Width" V="7000" />
                   </O>
               </O>
           </O>
       </O>
   </O>
</O>


Örnek:

Yukarıdaki örnekte Mavi objeler "Volume" objeleriyle, Kırmızı objeler "Surface" objeleriyle, Yeşil objeler "Line" objeleriyle oluşturulmuş ve her bir obje X yönünde oluşturulmuştur. Güzergah üzerinde tanımlı olan çizgi eksenler en içten dışa AlignH değerleri Orient, None, Warp tanımlarıyla yapılmıştır. Göründüğü gibi bir obje güzergaha None değeriyle oturtulduğunda obje sadece koordinatlara göre yerleşir, dönmez veya bükülmez. Orient değeriyle oturtulduğunda obje güzergaha oturur ve kendisini döndürür. Warp değeriyle oturtulursa obje güzergaha oturur, döner ve güzergaha göre bükülür. Dikkat edilmesi gereken asıl nokta tipi "Line" olan bir obje None değeri ile oturtulduğunda çizginin baş ve son noktalarına göre otururken, "Surface" ve "Volume" objelerinde orta noktadan güzergaha oturtulur.
Yukarıdaki örneği Library de görmek için bakınız:

https://www.openbrim.org/objid3nfw94eqc9nqufsnzhd81.libobj

Güzergah Koordinat Sistemi

Bir güzergahın (0,0,0) noktası o güzergahın Latitude, Longitude, Elev değerleridir. Gerçek koordinat düzleminden dönme açısını ise Azimuth değerinden alır. Güzergah boyunca ilerleyen orta eksen X ekseni kabul edilir. (Bu yüzden objelerimizi X yönünde tanımlıyoruz.) Aşağıda güzergahın koordinat sistemi görülmektedir.

Bir obje güzergah oturmadan önce uzaydaki (0,0,0) noktasını bulur ve ona göre konumlanır. Bu obje güzergaha oturtulduğu zaman objenin uzaydaki sıfır noktası tam olarak güzergahın sıfır noktasına oturtulur.

Şekilde gösterildiği gibi pembe obje gerçek koordinat sisteminden güzergaha oturtularak güzergahın koordinat sisteminin sıfır noktasına yerleşmiştir. Daha sonrasında bir obje için girilen X ve Y değerleri güzergah koordinat sistemine yerleşir. Gerçek koordinat sistemindeki değerleri istenirse fonksiyonlar yardımı ile hesaplanır.

Örnek:

Güzergah üzerindeki noktaların gerçek koordinat sistemindeki değerlerini fonksiyonlar yardımıyla hesaplanması (Bkz. Alignment Fonksiyonları). Mesela güzergahın sıfır noktasının gerçek koordinat sistemindeki değerler şöyle hesaplanır:

        Gerçek X değeri=alignHX(Guzergah,0,0)
        Gerçek Y değeri=alignHY(Guzergah,0,0)
        Gerçek Z değeri=alignV(Guzergah,0,0)+alignV(Guzergah,0,0)

İle güzergah üzerindeki (0,0,0) noktasının gerçek koordinat sisteminde(0,0,4000) olarak bulunur.


Örnek:

Yukarıda girilen X ve Y lokasyonları güzergah üzerinde aşağıdaki gibi ötelenir ve gerçek değerlerine dönüştürülebilir.

Bir objenin gerçek ve güzergah koordinatlarını gösteren library objesine bakınız:

https://www.openbrim.org/objidqtopgwno4fw57p41nzz.libobj