XDL Manual

XDL µ¥ÀÌÅÍ °´Ã¼ »ç¿ëÇϱâ

(piXoneer XDL Tutorial)

 

 

 

 

 

XDLÀÌ ÁÖ·Î »ç¿ëÇÏ´Â µ¥ÀÌÅÍ ±¸Á¶Ã¼¿¡ ´ëÇÑ È°¿ë¹ýÀ» ¼³¸íÇÕ´Ï´Ù.

XVertex, XGrid, XColorTable, XGeoPoint, XAngleµî¿¡ ´ëÇؼ­ ¼³¸íÇÕ´Ï´Ù.

 

2017. 01.

¼öÁ¤ 2019. 02.

 

 

 

 

¸ñÂ÷

1    »ç¿ë Çϱâ... 9

1.1    XDL ¿£Áø... 9

1.2    XDLÀÇ µ¥ÀÌÅͱ¸Á¶¸¦ ÀÌ¿ëÇÑ ¿¹Á¦ ÇÁ·Î±×·¥ ¸¸µé±â... 9

1.3    XAngleÈ°¿ë ¿¹Á¦... 13

1.4    XVertex2i È°¿ë ¿¹Á¦... 15

1.5    XVertex2d È°¿ë ¿¹Á¦... 16

1.6    XVertex3d È°¿ë ¿¹Á¦... 18

1.7    XVertex4d È°¿ë ¿¹Á¦... 20

1.8    XGeoPoint È°¿ë ¿¹Á¦... 21

1.9   XColorTable È°¿ë ¿¹Á¦... 23

1.10  XGrid È°¿ë ¿¹Á¦... 25

 

 


 

1      »ç¿ë Çϱâ

1.1    XDL ¿£Áø

¼³Ä¡ ÇÁ·Î±×·¥À¸·Î ¹èÆ÷µÇ´Â XDL ¿£ÁøÀº Visual Studio 2010 x86 Release ¹öÀüÀ¸·Î, Visual Studio 2010 ÀÌ»óÀÇ ¹öÀü¿¡¼­ »ç¿ë °¡´ÉÇÏ´Ù.

¾Æ·¡ÀÇ ¼³¸íÀº Visual Studio 2010À» ±âÁØÀ¸·Î ÇÏ°Ú´Ù.

 

1.2    XDLÀÇ µ¥ÀÌÅͱ¸Á¶¸¦ ÀÌ¿ëÇÑ ¿¹Á¦ ÇÁ·Î±×·¥ ¸¸µé±â

1.2.1         Visual Studio 2010À» ½ÇÇàÇÑ´Ù.

1.2.2         ¸Þ´º [ÆÄÀÏ]-[»õ·Î ¸¸µé±â]-[ÇÁ·ÎÁ§Æ®]¸¦ ¼±ÅÃÇÑ´Ù.

 

 

1.2.3         [»õ ÇÁ·ÎÁ§Æ®] ´ëÈ­»óÀÚ¿¡¼­ ¿ÞÂÊÀÇ ÅÛÇø´ â¿¡¼­ ¡°Visual C#¡±À» ¼±ÅÃÇÏ°í, ´ëÈ­»óÀÚ Áß°£ÀÇ ¸ñ·Ï¿¡¼­ ¡°Windows Forms ÀÀ¿ë ÇÁ·Î±×·¥¡±À» ¼±ÅÃÇÑ´Ù. ÇÁ·ÎÁ§Æ®ÀÇ À̸§À» »ç¿ëÀÚ°¡ ¿øÇÏ´Â °æ·Î·Î À̵¿ÇÑ ´ÙÀ½ ¡°XDL_DataStructure¡± ÀÔ·ÂÇÏ°í [»õ ÇÁ·ÎÁ§Æ®] ´ëÈ­»óÀÚÀÇ ¡°È®ÀΡ± ¹öÆ°À» Ŭ¸¯ÇÑ´Ù.

 

.

ÇÁ·ÎÁ§Æ® À̸§Àº Visual Studio°¡ »ý¼ºÇÏ´Â À̸§À¸·Î ±âº»À¸·Î ÇÏ°Ú´Ù. ÀÌ ¹®¼­¿¡¼­´Â ´ëÈ­»óÀÚ ¿À¸¥ÂÊ ¾Æ·¡¿¡ ÀÖ´Â ¡°¼Ö·ç¼Ç¿ë µð·ºÅ͸® ¸¸µé±â¡±´Â ¼±ÅÃÇÏÁö ¾Ê°Ú´Ù.

¡°È®ÀΡ± ¹öÆ°À» ´©¸£¸é ÇÁ·ÎÁ§Æ®°¡ ±âº»ÀûÀ¸·Î »ý¼ºµÇ°í, È­¸é¿¡ FormÀ» µðÀÚÀÎÇÒ ¼ö ÀÖ´Â È­¸éÀÌ ¶á´Ù. ¸¸¾à ¾Æ·¡¿Í °°ÀÌ Form µðÀÚÀÎÈ­¸éÀÌ »ý¼ºµÇÁö ¾ÊÀ¸¸é, [¼Ö·ç¼Ç Ž»ö±â] â¿¡¼­ ¡°Form1.cs¡±¸¦ ¸¶¿ì½º ´õºíŬ¸¯À» ÇÏ¿© µðÀÚÀÎÈ­¸éÀ» ¿¬´Ù.

 

1.2.4         ÂüÁ¶¸¦ ÅëÇØ NXDL.dll Ç׸ñÀ» Ãß°¡ÇÑ´Ù.

¼Ö·ç¼Ç Ž»ö±âÀÇ ÇÁ·ÎÁ§Æ® ¾Æ·¡¿¡ ÀÖ´Â ÂüÁ¶ ¾ÆÀÌÅÛÀÇ ¸¶¿ì½º ¿À¸¥ÂÊ ¹öÆ°À» Ŭ¸¯ÇÏ¿© »ý¼ºµÇ´Â Æ˾÷¸Þ´º¿¡¼­ ¡°ÂüÁ¶Ãß°¡¡± ¸Þ´º¸¦ ¼±ÅÃÇÑ´Ù.

 

 

¸Þ´º¸¦ ¼±ÅÃÇÏ¸é ¾Æ·¡¿Í °°ÀÌ [ÂüÁ¶Ãß°¡] ´ëÈ­»óÀÚ°¡ ³ªÅ¸³ª¸ç, ´ëÈ­»óÀÚ ¾Æ·¡ÂÊ¿¡ ÀÖ´Â ¡°Ã£¾Æº¸±â¡± ¹öÆ°À» Ŭ¸¯ÇÑ´Ù.

 

 

¿­±â ´ëÈ­»óÀÚ¿¡¼­ ¡°C:\Pixoneer\XDL1.2\bin\NXDL.dll¡± ÆÄÀÏÀ» ¼±ÅÃÇÑ ÈÄ ¡°¿­±â¡±¸¦ Ŭ¸¯ÇÏ°í, [ÂüÁ¶Ãß°¡] ´ëÈ­»óÀÚÀÇ ¡°È®ÀΡ± ¹öÆ°À» Ŭ¸¯ÇÑ´Ù. [ÂüÁ¶] ¿¡ ¡°NXDL¡±°¡ Ãß°¡µÈ °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.

 

 

1.2.5         ÇÁ·Î±×·¥ Á¾·á ½Ã ¸Þ¸ð¸®¸¦ ÇØÁ¦¸¦ À§ÇÑ Äڵ带 FormÀÌ ´ÝÈ÷´Â À̺¥Æ®¿¡ Ãß°¡ÇÑ´Ù.

Form1ÀÇ µðÀÚÀÎ È­¸é¿¡¼­ FormÀ» ¼±ÅÃÇÑ ÈÄ [¼Ó¼º] â(Visual Studio ¸Þ´º [º¸±â]-[´Ù¸¥ â]-[¼Ó¼º â]À» ¼±ÅÃÇÏ¸é µÈ´Ù.)¿¡¼­ ¡°À̺¥Æ®¡± ¸Þ´º¸¦ Ŭ¸¯ÇÏ°í À̺¥Æ® ¸ñ·Ï Áß ¡°FormClosed¡±¸¦ ¼±ÅÃÇÑ µÚ ¸¶¿ì½º ´õºíŬ¸¯À» ÇÏ¿© ÇØ´çÀ̺¥Æ®¸¦ Ãß°¡ÇÑ´Ù.

 

 

¾Æ·¡ÀÇ ±½Àº ±Û¾¾Ã³·³ Form1_FormClosed ÇÔ¼ö¿¡ Äڵ带 Ãß°¡ÇÑ´Ù.

namespace XDL_DataStructure
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
Pixoneer.NXDL.Xfn.Close();	//ÄÚµå Ãß°¡
        }
    }
}

 

1.2.6         ´ÙÀ½°ú °°ÀÌ NXDL¿¡ ´ëÇÏ¿© ÂüÁ¶¸¦ ¼³Á¤ÇÑ´Ù.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using Pixoneer.NXDL; // Ãß°¡

 

1.2.7         ´ÙÀ½°ú °°ÀÌ Form¿¡ ¹öÆ°À» ¿Ã·Á µðÀÚÀÎÇÑ´Ù.

 

 


1.3    XAngleÈ°¿ë ¿¹Á¦

1.3.1         XAngleÀ» ´õºí Ŭ¸¯ÇÏ¿© ÇÔ¼ö¸¦ ÀÚµ¿»ý¼ºÇÑ´Ù.

private void buttonXAngle_Click(object sender, EventArgs e)
{

}

 

1.3.2         buttonXAngle_Click ÇÔ¼ö¿¡ ´ÙÀ½°ú °°ÀÌ Äڵ带 ÀÔ·ÂÇÑ´Ù.

private void buttonXAngle_Click(object sender, EventArgs e)
{
// XAngleÀ» ÀÌ¿ëÇÏ¿© Degree°ªÀ» DMS³ª Radian°ªÀ¸·Î º¯°æÇÏ´Â ¿¹Á¦.
            // 1. °´Ã¼ÀÇ ¼±¾ð
            XAngle angle1 = new XAngle();
            XAngle angle2 = new XAngle(0.634345152625095); // ¶óµð¾È °ªÀ» ÀÔ·Â

            // 2. °¢µµ°¡ µ¿ÀÏÇÑÁö ¿©ºÎ üũ
            angle1.deg = 36.34530;
            if (angle1.IsEqual(angle2))
            {
                Console.WriteLine("Equal");
            }

            // 3. º¯È¯°ªÀÇ ÇÁ¸°ÆÃ
            int nDeg, nMin;
            double sec;
            nDeg = nMin = 0;
            sec = 0;
            angle1.GetDms(ref nDeg, ref nMin, ref sec);
            Console.WriteLine("Degree : " + angle1.deg.ToString());
            Console.WriteLine("DMS : " + nDeg.ToString() + " deg, " + nMin.ToString()
 + " min, " + sec.ToString() + " sec");
            Console.WriteLine("Radian : " + angle1.rad.ToString());

}

1.3.3         ÄÄÆÄÀÏÇÏ°í ÇÁ·Î±×·¥À» ½ÇÇàÇÏ¿© XAngle¹öÆ°À» Ŭ¸¯ÇÑ´Ù.

 

1.3.4         Ãâ·Ââ¿¡ °ªÀÌ ÇÁ¸°Æ®µÊÀ» È®ÀÎÇÑ´Ù.

¶óµð¾È °ªÀÎ 0.634345152625095°ª°ú Degree°ªÀÎ 36.34530°ªÀÌ µ¿ÀÏÇϹǷΠEqualÀÇ °á°ú°ªÀ» ³ªÅ¸³»¸ç angle1ÀÇ °´Ã¼·ÎºÎÅÍ Degree, DMS, Radian°ªÀ» ÇÁ¸°Æ®ÇÑ´Ù.

 

 

1.4    XVertex2i È°¿ë ¿¹Á¦

1.4.1         XVertex2iÀ» ´õºí Ŭ¸¯ÇÏ¿© ÇÔ¼ö¸¦ ÀÚµ¿»ý¼ºÇÑ´Ù.

private void buttonXVertex2i_Click(object sender, EventArgs e)
{

}

 

1.4.2         buttonXVertex2i_Click ÇÔ¼ö¿¡ ´ÙÀ½°ú °°ÀÌ Äڵ带 ÀÔ·ÂÇÑ´Ù.

private void buttonXVertex2i_Click(object sender, EventArgs e)
{
// XVertex2i´Â 2Â÷¿ø Á¡ ÁÂÇ¥¸¦ ¼³Á¤ÇÏ´Â x, y°ªÀ» °®´Â µ¥ÀÌÅÍ ±¸Á¶¿¡ ÇØ´çÇÕ´Ï´Ù.
      // XVertex2i¿¡¼­ 2´Â 2Â÷¿øÀ» ÀǹÌÇÏ°í i´Â integerÀ» ÀǹÌÇÕ´Ï´Ù.
      // XVertex2i°´Ã¼¸¦ ÀÌ¿ëÇÏ¿© ±âº» »çÄ¢¿¬»êÀº ¹°·ÐÀÌ°í, Dot Product³ª NormalizeµîÀÇ
// ¿¬»êµµ °¡´ÉÇÕ´Ï´Ù.

      // 1. °´Ã¼ÀÇ ¼±¾ð
      XVertex2i v1 = new XVertex2i(100, 200);
      XVertex2i v2 = new XVertex2i();
      v2.x = 400; v2.y = 500;

      // 2. XVertex2i °´Ã¼ÀÇ ¿¬»ê
      XVertex2i v3 = v1 + v2;
      XVertex2i v4 = 5 * v3 * 10;
      XVertex2i v5 = v4 - v1;
      double dotV1V2 = v1.dotProduct(v2);
      double normV1 = v1.norm();

      // 3. °á°ú°ªÀÇ ÇÁ¸°ÆÃ.
      Console.WriteLine("x : " + v3.x.ToString() + " y : " + v3.y.ToString());
      Console.WriteLine("x : " + v4.x.ToString() + " y : " + v4.y.ToString());
      Console.WriteLine("x : " + v5.x.ToString() + " y : " + v5.y.ToString());
      Console.WriteLine("dot v1 v2 : " + dotV1V2.ToString());
      Console.WriteLine("norm v1 : " + normV1.ToString());  

}

1.4.3         ÄÄÆÄÀÏÇÏ°í ÇÁ·Î±×·¥À» ½ÇÇàÇÏ¿© XVertex2i¹öÆ°À» Ŭ¸¯ÇÑ´Ù.

 

1.4.4         Ãâ·Ââ¿¡ °ªÀÌ ÇÁ¸°Æ®µÊÀ» È®ÀÎÇÑ´Ù.

Ãâ·Ââ¿¡ XVertex2i°´Ã¼¸¦ ÀÌ¿ëÇÑ °´Ã¼ÀÇ »ý¼º°ú °´Ã¼¸¦ ÀÌ¿ëÇÑ µ¡¼À, »¬¼À, Dot Product, NormÀÇ ¿¬»êÀ» ¼öÇàÇÏ´Â °á°ú¸¦ º¸¿©ÁØ´Ù.

 

 

1.5    XVertex2d È°¿ë ¿¹Á¦

 

1.5.1         XVertex2dÀ» ´õºí Ŭ¸¯ÇÏ¿© ÇÔ¼ö¸¦ ÀÚµ¿»ý¼ºÇÑ´Ù.

private void buttonXVertex2d_Click(object sender, EventArgs e)
{

}

 

1.5.2         buttonXVertex2d_Click ÇÔ¼ö¿¡ ´ÙÀ½°ú °°ÀÌ Äڵ带 ÀÔ·ÂÇÑ´Ù.

private void buttonXVertex2d_Click(object sender, EventArgs e)
{
// XVertex2d´Â 2Â÷¿ø Á¡ ÁÂÇ¥¸¦ ¼³Á¤ÇÏ´Â x, y°ªÀ» °®´Â µ¥ÀÌÅÍ ±¸Á¶¿¡ ÇØ´çÇÕ´Ï´Ù.
      // XVertex2d¿¡¼­ 2´Â 2Â÷¿øÀ» ÀǹÌÇÏ°í d´Â doubleÀ» ÀǹÌÇÕ´Ï´Ù.
      // XVertex2d°´Ã¼¸¦ ÀÌ¿ëÇÏ¿© ±âº» »çÄ¢¿¬»êÀº ¹°·ÐÀÌ°í, Dot Product³ª NormalizeµîÀÇ
// ¿¬»êµµ °¡´ÉÇÕ´Ï´Ù.

      // 1. °´Ã¼ÀÇ ¼±¾ð
      XVertex2d v1 = new XVertex2d(100.2, 200.5);
      XVertex2d v2 = new XVertex2d();
      v2.x = 400.2; v2.y = 500.5;

      // 2. XVertex2d °´Ã¼ÀÇ ¿¬»ê
      XVertex2d v3 = v1 + v2;
      XVertex2d v4 = 5 * v3 * 10;
      XVertex2d v5 = v4 - v1;
      double dotV1V2 = v1.dotProduct(v2); // Dot Product ¿¬»ê
      double normV1 = v1.norm();          // Norm °è»ê

      // 3. °á°ú°ªÀÇ ÇÁ¸°ÆÃ.
      Console.WriteLine("x : " + v3.x.ToString() + " y : " + v3.y.ToString());
      Console.WriteLine("x : " + v4.x.ToString() + " y : " + v4.y.ToString());
      Console.WriteLine("x : " + v5.x.ToString() + " y : " + v5.y.ToString());
      Console.WriteLine("dot v1 v2 : " + dotV1V2.ToString());
      Console.WriteLine("norm v1 : " + normV1.ToString());

}

 

1.5.3         ÄÄÆÄÀÏÇÏ°í ÇÁ·Î±×·¥À» ½ÇÇàÇÏ¿© XVertex2d¹öÆ°À» Ŭ¸¯ÇÑ´Ù.

 

1.5.4         Ãâ·Ââ¿¡ °ªÀÌ ÇÁ¸°Æ®µÊÀ» È®ÀÎÇÑ´Ù.

Ãâ·Ââ¿¡ XVertex2d°´Ã¼¸¦ ÀÌ¿ëÇÑ °´Ã¼ÀÇ »ý¼º°ú °´Ã¼¸¦ ÀÌ¿ëÇÑ µ¡¼À, »¬¼À, Dot Product, NormÀÇ ¿¬»êÀ» ¼öÇàÇÏ´Â °á°ú¸¦ º¸¿©ÁØ´Ù.

 

 

 

1.6    XVertex3d È°¿ë ¿¹Á¦

 

1.6.1         XVertex3dÀ» ´õºí Ŭ¸¯ÇÏ¿© ÇÔ¼ö¸¦ ÀÚµ¿»ý¼ºÇÑ´Ù.

private void buttonXVertex3d_Click(object sender, EventArgs e)
{

}

 

1.6.2         ButtonXVertex3d_Click ÇÔ¼ö¿¡ ´ÙÀ½°ú °°ÀÌ Äڵ带 ÀÔ·ÂÇÑ´Ù.

private void buttonXVertex3d_Click(object sender, EventArgs e)
{
// XVertex3d´Â 3Â÷¿ø Á¡ ÁÂÇ¥¸¦ ¼³Á¤ÇÏ´Â x, y, z°ªÀ» °®´Â µ¥ÀÌÅÍ ±¸Á¶¿¡ ÇØ´çÇÕ´Ï´Ù.
// XVertex3d¿¡¼­ 3´Â 3Â÷¿øÀ» ÀǹÌÇÏ°í d´Â doubleÀ» ÀǹÌÇÕ´Ï´Ù.
// XVertex3d°´Ã¼¸¦ ÀÌ¿ëÇÏ¿© ±âº» »çÄ¢¿¬»êÀº ¹°·ÐÀÌ°í, Dot Product³ª NormalizeµîÀÇ // ¿¬»êµµ °¡´ÉÇÕ´Ï´Ù.

// 1. °´Ã¼ÀÇ ¼±¾ð
XVertex3d v1 = new XVertex3d(100, 200, 300);
XVertex3d v2 = new XVertex3d();
v2.x = 400; v2.y = 500; v2.z = 600;

// 2. XVertex3d °´Ã¼ÀÇ ¿¬»ê
XVertex3d v3 = v1 + v2;
XVertex3d v4 = 5 * v3 * 10;
XVertex3d v5 = v4 - v1;
double dotV1V2 = v1.dotProduct(v2);
double normV1 = v1.norm();

// 3. °á°ú°ªÀÇ ÇÁ¸°ÆÃ.
Console.WriteLine("x : " + v3.x.ToString() + " y : " + v3.y.ToString() + " z : " + v3.z.ToString());
Console.WriteLine("x : " + v4.x.ToString() + " y : " + v4.y.ToString() + " z : " + v4.z.ToString());
Console.WriteLine("x : " + v5.x.ToString() + " y : " + v5.y.ToString() + " z : " + v5.z.ToString());
Console.WriteLine("dot v1 v2 : " + dotV1V2.ToString());
Console.WriteLine("norm v1 : " + normV1.ToString());

}

1.6.3         ÄÄÆÄÀÏÇÏ°í ÇÁ·Î±×·¥À» ½ÇÇàÇÏ¿© XVertex3d¹öÆ°À» Ŭ¸¯ÇÑ´Ù.

 

1.6.4         Ãâ·Ââ¿¡ °ªÀÌ ÇÁ¸°Æ®µÊÀ» È®ÀÎÇÑ´Ù.

Ãâ·Ââ¿¡ XVertex3d°´Ã¼¸¦ ÀÌ¿ëÇÑ °´Ã¼ÀÇ »ý¼º°ú °´Ã¼¸¦ ÀÌ¿ëÇÑ µ¡¼À, »¬¼À, Dot Product, NormÀÇ ¿¬»êÀ» ¼öÇàÇÏ´Â °á°ú¸¦ º¸¿©ÁØ´Ù.

 

 

1.7    XVertex4d È°¿ë ¿¹Á¦

 

1.7.1           XVertex4dÀ» ´õºí Ŭ¸¯ÇÏ¿© ÇÔ¼ö¸¦ ÀÚµ¿»ý¼ºÇÑ´Ù.

private void buttonXVertex4d_Click(object sender, EventArgs e)
{

}

 

1.7.2           ButtonXVertex4d_Click ÇÔ¼ö¿¡ ´ÙÀ½°ú °°ÀÌ Äڵ带 ÀÔ·ÂÇÑ´Ù.

private void buttonXVertex4d_Click(object sender, EventArgs e)
{
// XVertex4d´Â 4Â÷¿ø Á¡ ÁÂÇ¥¸¦ ¼ºÁ¤ÇÏ´Â x, y, z, w°ªÀ» °®´Â µ¥ÀÌÅÍ ±¸Á¶¿¡ 
// ÇØ´çÇÕ´Ï´Ù.
// Xvertex4d¿¡¼­ 4´Â 4Â÷¿øÀ» ÀǹÌÇÏ°í d´Â doubleÀ» ÀǹÌÇÕ´Ï´Ù.
// Xvertex4d°´Ã¼¸¦ ÀÌ¿ëÇÏ¿© ±âº» »çÄ¢¿¬»êÀº ¹°·ÐÀÌ°í, NormalizeÀÇ ¿¬»ê°ú ¼­·ÎÀÇ °ªÀÌ
// µ¿ÀÏÇÑÁö ÆǴܵµ °¡´ÉÇÕ´Ï´Ù.

// 1. °´Ã¼ÀÇ ¼±¾ð
XVertex4d v1 = new XVertex4d(100, 200, 300, 400);
XVertex4d v2 = new XVertex4d();
v2.x = 500; v2.y = 600; v2.z = 700; v2.w = 800;

// 2. XVertex4d °´Ã¼ÀÇ ¿¬»ê
XVertex4d v3 = v1 + v2;
XVertex4d v4 = 5 * v3 * 10;
XVertex4d v5 = v4 - v1;
double normV1 = v1.norm();
bool IsEqualV1V1 = v1.IsEqual(v1);
bool IsEqualV3V1 = v3.IsEqual(v1);


// 3. °á°ú°ªÀÇ ÇÁ¸°ÆÃ.
Console.WriteLine("x : " + v3.x.ToString() + " y : " + v3.y.ToString() + " z : " + v3.z.ToString() + " w : " + v3.w.ToString());
Console.WriteLine("x : " + v4.x.ToString() + " y : " + v4.y.ToString() + " z : " + v4.z.ToString() + " w : " + v4.w.ToString());
Console.WriteLine("x : " + v5.x.ToString() + " y : " + v5.y.ToString() + " z : " + v5.z.ToString() + " w : " + v5.w.ToString());
Console.WriteLine("norm v1 : " + normV1.ToString());
Console.WriteLine("v1 is equal to v1 : " + IsEqualV1V1);
Console.WriteLine("v3 Is equal to v1 : " + IsEqualV3V1);

}

1.7.3           ÄÄÆÄÀÏÇÏ°í ÇÁ·Î±×·¥À» ½ÇÇàÇÏ¿© XVertex4d¹öÆ°À» Ŭ¸¯ÇÑ´Ù.

 

1.7.4           Ãâ·Ââ¿¡ °ªÀÌ ÇÁ¸°Æ®µÊÀ» È®ÀÎÇÑ´Ù.

Ãâ·Ââ¿¡ XVertex4d°´Ã¼¸¦ ÀÌ¿ëÇÑ °´Ã¼ÀÇ »ý¼º°ú °´Ã¼¸¦ ÀÌ¿ëÇÑ µ¡¼À, »¬¼À, NormÀÇ ¿¬»ê, IsEqual ÇÔ¼ö¸¦ ¼öÇàÇÏ´Â °á°ú¸¦ º¸¿©ÁØ´Ù.

 

 

1.8    XGeoPoint È°¿ë ¿¹Á¦

 

1.8.1         XGeoPointÀ» ´õºíŬ¸¯ÇÏ¿© ÇÔ¼ö¸¦ ÀÚµ¿»ý¼ºÇÑ´Ù.

private void buttonXGeoPoint_Click(object sender, EventArgs e)
{

}

 

1.8.2         ButtonXGeoPoint_Click ÇÔ¼ö¿¡ ´ÙÀ½°ú °°ÀÌ Äڵ带 ÀÔ·ÂÇÑ´Ù.

Degree´ÜÀ§·Î ÀÔ·ÂÇÑ °´Ã¼¿Í Radian°ªÀ¸·Î ÀÔ·ÂÇÑ °´Ã¼°¡ µ¿ÀÏÇÑÁö ¿©ºÎ¸¦ È®ÀÎÇÏ°í XGeoPoint·ÎºÎÅÍ ECEFÁÂÇ¥°ªÀ» XVertex3d·Î º¯È¯ÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ ECEF°ªÀ» XGeoPoint·Î º¯È¯ÇÏ¿© ±âÁ¸ ÀԷ°ª°ú µ¿ÀÏÇÑÁö ¿©ºÎ¸¦ È®ÀÎÇÒ ¼ö ÀÖ´Ù.

private void buttonXGeoPoint_Click(object sender, EventArgs e)

{
// XGeoPoint´Â À§°æµµ ÁÂÇ¥¿Í ECEF ÁÂÇ¥°£ÀÇ »óÈ£ º¯È¯À» ¼öÇàÇÏ¸ç ´Ù¾çÇÑ Å¸ Ŭ·¡½ºÀÇ 
// ÀԷ°´Ã¼·Î È°¿ëµÈ´Ù.
        // 3Â÷¿ø Áö±¸ÁÂÇ¥ÀÇ °è»ê ¹× µµ½Ã¸¦ ¼öÇà ½Ã À§°æµµ¿Í ECEFÁÂÇ¥»çÀÌÀÇ º¯È¯ÀÌ ºó¹øÈ÷ 
// ÀϾ´Âµ¥ À̶§ È°¿ëÀÌ °¡´ÉÇÏ´Ù.

       // 1. À§°æµµ ÁÂÇ¥°ªÀ¸·ÎºÎÅÍ XGeoPoint°´Ã¼¸¦ »ý¼º
        XGeoPoint geoPos1 = XGeoPoint.FromDegree(127.123, 36.1234, 258);

        // 2. XGeoPoint°´Ã¼·ÎºÎÅÍ Radian°ªÀ¸·Î º¯È¯ÀÌ °¡´ÉÇϸç Radian°ªÀ¸·ÎºÎÅÍ 
// XGeoPoint°´Ã¼¸¦ »ý¼º
        XGeoPoint geoPos2 = XGeoPoint.FromRadian(geoPos1.lonr, geoPos1.latr, 
geoPos1.hgt);

        // 3. µÎ XGeoPoint°´Ã¼ÀÇ °ªÀÌ µ¿ÀÏÇÑÁö ¿©ºÎ È®ÀÎ
        if (geoPos1.IsEqual(geoPos2))
        {
            Console.WriteLine("geoPos1 is equal to geoPos2");
        }
        else
        {
            Console.WriteLine("geoPos1 is not equal to geoPos2");
        }

        // 4. XGeoPoint°´Ã¼·ÎºÎÅÍ ECEFÁÂÇ¥°ªÀ» XVertex3dÀ¸·Î ¾ò´Â´Ù.
        XVertex3d v1 = geoPos1.ecr;

        // 5. ECEFÁÂÇ¥°ªÀ» ÀÌ¿ëÇÏ¿© XGeoPoint°ªÀ» »ý¼ºÇÑ´Ù. 
        XGeoPoint geopos3 = XGeoPoint.FromEcr(ref v1);
        if (geopos3.IsEqual(geoPos1))
        {
            Console.WriteLine("geoPos3 is equal to geoPos1");
        }
        else
        {
            Console.WriteLine("geoPos3 is not equal to geoPos1");
        }
}

 

1.8.3         ÄÄÆÄÀÏÇÏ°í ÇÁ·Î±×·¥À» ½ÇÇàÇÏ¿© XGeoPoint¹öÆ°À» Ŭ¸¯ÇÑ´Ù.

 

1.8.4         Ãâ·Ââ¿¡ °ªÀÌ ÇÁ¸°Æ®µÊÀ» È®ÀÎÇÑ´Ù.

Ãâ·Ââ¿¡ XGeoPoint°´Ã¼¸¦ ÀÌ¿ëÇÑ ´Ù¾çÇÑ ÇüÅ·ÎÀÇ º¯È¯À» ¼öÇàÇÏ°í µ¿ÀÏÇÑÁö ¿©ºÎ¸¦ È®ÀÎÇÒ ¼ö ÀÖ´Ù.

 

 

 

1.9     XColorTable È°¿ë ¿¹Á¦

 

1.9.1         XColorTableÀ» ´õºí Ŭ¸¯ÇÏ¿© ÇÔ¼ö¸¦ ÀÚµ¿»ý¼ºÇÑ´Ù.

private void buttonXColorTable_Click(object sender, EventArgs e)
{

}

 

1.9.2         ButtonXColorTable_Click ÇÔ¼ö¿¡ ´ÙÀ½°ú °°ÀÌ Äڵ带 ÀÔ·ÂÇÑ´Ù.

private void buttonXColorTable_Click(object sender, EventArgs e)

{
// 1. ColorTableÀÌ ±âÁ¤ÀÇµÈ TableÀÇ ¼ö¸¦ ¾ò´Â´Ù.
      int nNumColorTable = Enum.GetNames(typeof(eColorTable)).Length;
      Console.WriteLine("ColorTable ¼ö : " + nNumColorTable.ToString());

      // 2. ±â Á¤ÀÇµÈ ColorTableÀÇ À̸§À» ¾ò¾î¼­ ÇÁ¸°Æ®ÇÑ´Ù.
      String[] arrPNmaes = XColorTable.GetPaletteNameList();
      for (int i=0; i<arrPNmaes.Length; i++)
      {
      	Console.WriteLine(arrPNmaes[i]);
       }
        
       // 3. XColorTableÀÇ °´Ã¼¸¦ »ý¼ºÇÏ°í Rainbow ColorTableÀ» ¼³Á¤ÇÑ´Ù. 
       XColorTable clrTbl = new XColorTable();
       clrTbl.LoadColorTable(eColorTable.Rainbow);

      // 4. °¢ 256°³ÀÇ Ä®¶ó Å×ÀÌºí¿¡ Á¸ÀçÇÏ´Â r, g, b°ªÀ» ¾ò¾î¼­ Ãâ·ÂÇÑ´Ù.
      byte r, g, b;
      r = g = b = 0;
      for (int i=0; i<=255; i++)
      {
          clrTbl.GetCLT(i, ref r, ref g, ref b);
      	  Console.WriteLine("Index " + i.ToString() + ", " + "R : " + 
r.ToString() + ", " + "G : " + g.ToString() + ", " + "B : " +
 b.ToString());
       }
            
       // 5. ÀϺΠ±¸°£À» 0À¸·Î ä¿î´Ù.
       for (int i=0; i<=100; i++)
       {
           clrTbl.SetCLT(i, 0, 0, 0);
      }

       // 6. °¢ 256°³ÀÇ Ä®¶ó Å×ÀÌºí¿¡ Á¸ÀçÇÏ´Â r, g, b°ªÀ» ¾ò¾î¼­ Ãâ·ÂÇÑ´Ù.
// ÀϺα¸°£ÀÌ 0À¸·Î º¯°æµÇ¾ú´ÂÁö È®ÀÎÇÑ´Ù.
       r = g = b = 0;
       for (int i = 0; i <= 255; i++)
       {
            clrTbl.GetCLT(i, ref r, ref g, ref b);
            Console.WriteLine("Index " + i.ToString() + ", " + "R : " +
 r.ToString() + ", " + "G : " + g.ToString() + ", " + "B : " +
 b.ToString());
        }

1.9.3         ÄÄÆÄÀÏÇÏ°í ÇÁ·Î±×·¥À» ½ÇÇàÇÏ¿© XColorTable¹öÆ°À» Ŭ¸¯ÇÑ´Ù.

 

1.9.4         Ãâ·Ââ¿¡ °ªÀÌ ÇÁ¸°Æ®µÊÀ» È®ÀÎÇÑ´Ù.

 

 

1.10 XGrid È°¿ë ¿¹Á¦

 

1.10.1      XColorTableÀ» ´õºí Ŭ¸¯ÇÏ¿© ÇÔ¼ö¸¦ ÀÚµ¿»ý¼ºÇÑ´Ù.

private void buttonXGrid_Click(object sender, EventArgs e)
{

}

 

1.10.2      ButtonXGrid_Click ÇÔ¼ö¿¡ ´ÙÀ½°ú °°ÀÌ Äڵ带 ÀÔ·ÂÇÑ´Ù.

private void buttonXGrid_Click(object sender, EventArgs e)
{
// 1. 32bit signed IntegerÇüÀÇ 3x3ÇüÅÂÀÇ XGrid°´Ã¼¸¦ »ý¼ºÇÑ´Ù. 
       XGrid grid = new XGrid(3, 3, eDataType.SINT32);

       // 2. grid°´Ã¼¿¡ °ªÀ» ÀÔ·ÂÇÑ´Ù.
       int val = 1;
       for (int j = 0; j < 3; j++)
       {
          for (int i = 0; i < 3; i++)
          {
              grid.SetValue(j, i, val);
              val += 1;
          }
       }

       // 3. ÀÔ·ÂµÈ grid°´Ã¼ÀÇ °ªÀ» ÇÁ¸°Æ®ÇÑ´Ù.
       // ÀÔ·ÂµÈ °ªÀ» ¾òÀ» ¶§´Â DoubleÇüÀ¸·Î ij½ºÆõǾ ¾ò´Â´Ù.
       double ret = 0;
       string strVal = "";
       for (int j = 0; j < 3; j++)
       {
           for (int i = 0; i < 3; i++)
           {
               grid.GetValue(j, i, ref ret); strVal = strVal + ret.ToString( ) + " ";
           }
           strVal += "; ";
       }
       Console.WriteLine(strVal);

       // 4. ÀÔ·ÂµÈ grid°ª¿¡ ´ëÇÑ FlipÀ» ¼öÇàÇÑ´Ù. 
       XGrid horzFlip =new XGrid();
       grid.FlipHorz(out horzFlip);

       // 5. FlipµÈ grid°´Ã¼ÀÇ °ªÀ» ÇÁ¸°Æ®ÇÑ´Ù.
       ret = 0;
       strVal = "";
       for (int j = 0; j < 3; j++)
       {
           for (int i = 0; i < 3; i++)
           {
               horzFlip.GetValue(j, i, ref ret); strVal = strVal + ret.ToString() + " ";
           }
           strVal += "; ";
       }
       Console.WriteLine(strVal);


       // 6. ƯÁ¤ Row¸¦ ¾ò´Â´Ù.
       XGrid rowVec = new XGrid();
       horzFlip.GetRowVector(out rowVec, 1);
       strVal = "";
       for (int i = 0; i < 3; i++)
       {
            rowVec.GetValue(0, i, ref ret); strVal = strVal + ret.ToString() + " ";
       }
       Console.WriteLine(strVal);
    }
}

 

1.10.3      ÄÄÆÄÀÏÇÏ°í ÇÁ·Î±×·¥À» ½ÇÇàÇÏ¿© XGrid¹öÆ°À» Ŭ¸¯ÇÑ´Ù.

 

1.10.4      Ãâ·Ââ¿¡ °ªÀÌ ÇÁ¸°Æ®µÊÀ» È®ÀÎÇÑ´Ù.