void SetupPlain(Vector3 leftUpperCorner, float width, float height, Vector3 angleVec1, Vector3 angleVec2, Color4 color)
        {
            //left upper -corner

            {
                Mesh plain1 = GeoHelper.CreateCube(0.02f);
                plain1.Position  = leftUpperCorner; //left corner
                plain1.MeshColor = color;
                plain1.Rotation  = new Vector3(.5f, 0.5f, 0);
                meshList.Add(plain1);
            }
            //right upper corner
            //คือวิ่งตาม row
            var x = angleVec1.X; //Math.Cos(angleVec1.X);
            var y = angleVec1.Y; //Math.Cos(angleVec1.Y);
            var z = angleVec1.Z; // Math.Cos(angleVec1.Z);

            //var x = Math.Cos(angleVec1.X);
            //var y = Math.Cos(angleVec1.Y);
            //var z = Math.Cos(angleVec1.Z);
            {
                Mesh plain1 = GeoHelper.CreateCube(0.02f);
                plain1.Position  = leftUpperCorner + new Vector3((float)(x * width), (float)(y * width), (float)(z * width)); //left corner
                plain1.MeshColor = color;
                plain1.Rotation  = new Vector3(.5f, 0.5f, 0);
                meshList.Add(plain1);
            }
            //x = Math.Cos(angleVec2.X);
            //y = Math.Cos(angleVec2.Y);
            //z = Math.Cos(angleVec2.Z);
            x = angleVec2.X; //Math.Cos(angleVec1.X);
            y = angleVec2.Y; //Math.Cos(angleVec1.Y);
            z = angleVec2.Z; // Math.Cos(angleVec1.Z);

            {
                Mesh plain1 = GeoHelper.CreateCube(0.02f);
                plain1.Position  = leftUpperCorner + new Vector3((float)(x * width), (float)(y * width), (float)(z * width)); //left corner
                plain1.MeshColor = color;
                plain1.Rotation  = new Vector3(.5f, 0.5f, 0);
                meshList.Add(plain1);
            }

            Vector3 a3 = angleVec1 + angleVec2;

            x = a3.X; //Math.Cos(angleVec1.X);
            y = a3.Y; //Math.Cos(angleVec1.Y);
            z = a3.Z; // Math.Cos(angleVec1.Z);

            {
                Mesh plain1 = GeoHelper.CreateCube(0.02f);
                plain1.Position  = leftUpperCorner + new Vector3((float)(x * width), (float)(y * width), (float)(z * width)); //left corner
                plain1.MeshColor = color;
                plain1.Rotation  = new Vector3(.5f, 0.5f, 0);
                meshList.Add(plain1);
            }
            //left lower corner
            //วิ่งลงตาม column

            //right lower corner
            //
        }
        void Setup2()
        {
            //---------------------------------
            float maxRefBoxLength = 1.0f;
            Mesh  referenceMesh   = GeoHelper.CreateCube(maxRefBoxLength);

            referenceMesh.MeshColor = new Color4(1.0f, 1.0f, 0.0f, 1.0f);
            meshList.Add(referenceMesh);
            //---------------------------------
            //reference node
            {
                Mesh plain1 = GeoHelper.CreateCube(0.02f);               //, 0.02f, 0.02f);
                plain1.Position  = new Vector3(maxRefBoxLength, 0f, 0f); //x
                plain1.MeshColor = new Color4(1.0f, 1.0f, 1.0f, 1.0f);
                plain1.Rotation  = new Vector3(.5f, 0.5f, 0);
                meshList.Add(plain1);
            }
            {
                Mesh plain1 = GeoHelper.CreateCube(0.02f);              //, 0.02f, 0.02f);
                plain1.Position  = new Vector3(0, maxRefBoxLength, 0f); //y
                plain1.MeshColor = new Color4(1.0f, .0f, 1.0f, 1.0f);   //margenta
                plain1.Rotation  = new Vector3(.5f, 0.5f, 0);
                meshList.Add(plain1);
            }
            {
                Mesh plain1 = GeoHelper.CreateCube(0.02f);             //, 0.02f, 0.02f);
                plain1.Position  = new Vector3(0, 0, maxRefBoxLength); //z
                plain1.MeshColor = new Color4(0.0f, 1.0f, 1f, 1.0f);
                plain1.Rotation  = new Vector3(.5f, 0.5f, 0);
                meshList.Add(plain1);
            }
            //Mesh mesh2 = GeoHelper.CreateCube(0.2f, 0.5f, 0.01f);
            //Mesh mesh2 = GeoHelper.CreateCube(0.02f, 0.02f, 0.02f);
            //mesh2.Position = new Vector3(0.5f, 0.5f, 0);
            //mesh2.MeshColor = new Color4(1.0f, 0.0f, 0.0f, 1.0f);
            //mesh2.Rotation = new Vector3(.5f, 0.5f, 0);
            //meshList.Add(mesh2);
            //---------------------------------
            //destination
            {
                float y = float.Parse("6.123032E-17");
                SetupPlain(
                    new Vector3(-0.2555f, -0.1375f, 1.072f),
                    0.6f, 0.6f,
                    new Vector3(1, y, 0),  //row
                    new Vector3(0, 0, -1), //col
                    new Color4(1.0f, 1.0f, 1.0f, 1.0f));
            }
            //---------------------------------


            //{
            //    Mesh plain1 = GeoHelper.CreateCube(0.02f);//, 0.02f, 0.02f);
            //    plain1.Position = new Vector3(-0.2555f, -0.1375f, 1.072f); //left corner
            //    plain1.MeshColor = new Color4(1.0f, 1.0f, 1.0f, 1.0f); //red
            //    plain1.Rotation = new Vector3(.5f, 0.5f, 0);
            //    meshList.Add(plain1);
            //}
            //{
            //    Mesh plain1 = GeoHelper.CreateCube(0.02f);//, 0.02f, 0.02f);
            //    plain1.Position = new Vector3(-0.2555f, -0.1375f, 0.672000051f); //z-.4
            //    plain1.MeshColor = new Color4(1.0f, .3f, 0.0f, 1.0f); //red
            //    plain1.Rotation = new Vector3(.5f, 0.5f, 0);
            //    meshList.Add(plain1);
            //}
            //{
            //    Mesh plain1 = GeoHelper.CreateCube(0.02f);//, 0.02f, 0.02f);
            //    plain1.Position = new Vector3(0.144500017f, -0.1375f, 1.072f); //x+.4
            //    plain1.MeshColor = new Color4(1.0f, .3f, 0.0f, 1.0f); //red
            //    plain1.Rotation = new Vector3(.5f, 0.5f, 0);
            //    meshList.Add(plain1);
            //}
            //{
            //    Mesh plain1 = GeoHelper.CreateCube(0.02f);//, 0.02f, 0.02f);
            //    plain1.Position = new Vector3(0.144500017f, -0.1375f, 0.672000051f);//x+.4,z-.4
            //    plain1.MeshColor = new Color4(1.0f, .3f, 0.0f, 1.0f); //red
            //    plain1.Rotation = new Vector3(.5f, 0.5f, 0);
            //    meshList.Add(plain1);
            //}

            //---------------------------------
            //source
            {
                //plain2.Position = new Vector3(-0.182642578f, -0.320142578f, 1.0405f);
                SetupPlain(
                    new Vector3(-0.182642578f, -0.320142578f, 1.0405f),
                    0.4f, 0.4f,
                    new Vector3(1, 0, 0), //row
                    new Vector3(0, 1, 0), //col
                    new Color4(1.0f, .3f, 0.0f, 1.0f));
            }
            //for (int i = 0; i < 10; ++i)
            //{

            //    //plain2.Position = new Vector3(-0.182642578f, -0.320142578f, 1.0405f);
            //    SetupPlain(
            //        new Vector3(-0.182642578f, -0.320142578f, 1.0405f - ((float)i * 0.04f)),
            //        0.4f, 0.4f,
            //        new Vector3(1, 0, 0),//row
            //        new Vector3(0, 1, 0),//col
            //        new Color4(0.0f, 1f, 0.0f, 1.0f));
            //}
            //{
            //    Mesh plain2 = GeoHelper.CreateCube(0.02f);
            //    plain2.Position = new Vector3(-0.182642578f, -0.320142578f, 1.0405f);
            //    plain2.MeshColor = new Color4(0.0f, 1.0f, 0.0f, 1.0f);//green
            //    plain2.Rotation = new Vector3(.5f, 0.5f, 0);
            //    meshList.Add(plain2);
            //}
            //{
            //    Mesh plain2 = GeoHelper.CreateCube(0.02f);
            //    plain2.Position = new Vector3(0.217357427f, -0.320142578f, 1.0405f); //x+.4
            //    plain2.MeshColor = new Color4(0.0f, 1.0f, 0.0f, 1.0f);//green
            //    plain2.Rotation = new Vector3(.5f, 0.5f, 0);
            //    meshList.Add(plain2);
            //}
            //{
            //    Mesh plain2 = GeoHelper.CreateCube(0.02f);
            //    plain2.Position = new Vector3(-0.182642578f, 0.07985744f, 1.0405f); //y+.4
            //    plain2.MeshColor = new Color4(0.0f, 1.0f, 0.0f, 1.0f);//green
            //    plain2.Rotation = new Vector3(.5f, 0.5f, 0);
            //    meshList.Add(plain2);
            //}
            //{
            //    Mesh plain2 = GeoHelper.CreateCube(0.02f);
            //    plain2.Position = new Vector3(0.217357427f, 0.07985744f, 1.0405f);//x+.4,z+.4
            //    plain2.MeshColor = new Color4(0.0f, 1.0f, 0.0f, 1.0f);//green
            //    plain2.Rotation = new Vector3(.5f, 0.5f, 0);
            //    meshList.Add(plain2);
            //}

            //---------------------------------
            //source2
            //{
            //    float y = float.Parse("6.123032E-17");
            //    //plain2.Position = new Vector3(-0.182642578f, -0.320142578f, 1.0405f);
            //    SetupPlain(
            //       new Vector3(-0.182642578f, -0.320142578f, 0.6055f),
            //        0.4f, 0.4f,
            //        new Vector3(1, y, 0),//row
            //        new Vector3(0, 0, -1),//col
            //        new Color4(0.0f, 0.0f, 1.0f, 1.0f));
            //}
            //{
            //    Mesh plain3 = GeoHelper.CreateCube(0.02f);
            //    plain3.Position = new Vector3(-0.182642578f, -0.320142578f, 0.6055f);//1.0255f
            //    plain3.MeshColor = new Color4(0.0f, 0.0f, 1.0f, 1.0f);//blue
            //    plain3.Rotation = new Vector3(.5f, 0.5f, 0);
            //    meshList.Add(plain3);
            //}
            //{
            //    Mesh plain3 = GeoHelper.CreateCube(0.02f);
            //    plain3.Position = new Vector3(0.217357427f, -0.320142578f, 0.6055f); //x+.4
            //    plain3.MeshColor = new Color4(0.0f, 0.0f, 1.0f, 1.0f);//blue
            //    plain3.Rotation = new Vector3(.5f, 0.5f, 0);
            //    meshList.Add(plain3);
            //}
            //{
            //    Mesh plain3 = GeoHelper.CreateCube(0.02f);
            //    plain3.Position = new Vector3(-0.182642578f, 0.07985744f, 0.6055f); //y+.4
            //    plain3.MeshColor = new Color4(0.0f, 0.0f, 1.0f, 1.0f);//blue
            //    plain3.Rotation = new Vector3(.5f, 0.5f, 0);
            //    meshList.Add(plain3);
            //}
            //{
            //    Mesh plain3 = GeoHelper.CreateCube(0.02f);
            //    plain3.Position = new Vector3(0.217357427f, 0.07985744f, 0.6055f);//x+.4,y+.4
            //    plain3.MeshColor = new Color4(0.0f, 0.0f, 1.0f, 1.0f);//blue
            //    //plain3.Rotation = new Vector3(.5f, 0.5f, 0);
            //    meshList.Add(plain3);
            //}
            //---------------------------------
            //camera.Position = new Vector3(0f, 0.0f, 8.0f);
            //x เป็นตำแหน่งกึ่งกลางแกน x
            camera.Target    = new Vector3(-0.2555f + .2f, -0.6375f + .2f, 1.072f + 0.0001f);
            camera.Rotate    = Matrix.Identity;// Matrix.RotationX((float)DegToRad(-8));
            camera.Translate = Matrix.Identity;
            //---------------------------------

            //camera.Rotate = Matrix.RotationZ((float)DegToRad(30));
            //เคลื่อน camera ออกไปเป็นมุมฉาก
            //camera.Position = new Vector3(-0.2555f + .2f,
            //   -0.6375f + .2f,
            //   1.072f + 7); //+7

            float angle_seta  = (float)DegToRad(90);
            float angle_alpha = (float)DegToRad(0);
            float angle_beta  = (float)DegToRad(0);

            float c_x = -0.2555f + .2f;
            float c_y = -0.6375f + .2f;
            float c_z = 1.072f + .2f;

            float d = 7;

            //float finalpos_x = (float)((d * Math.Cos(angle_seta) * Math.Sin(angle_beta)) + (d * Math.Sin(angle_seta) * Math.Sin(angle_alpha)));
            //float finalpos_y = (float)((d * Math.Sin(angle_seta)) + (d * Math.Sin(angle_seta) * Math.Cos(angle_alpha)));
            //float finalpos_z = (float)(d * Math.Cos(angle_seta) * Math.Cos(angle_beta));
            //float d = 7f;
            //float finalpos_x = (float)((d * Math.Cos(angle_seta) * Math.Sin(angle_beta)) + (d * Math.Sin(angle_seta) * Math.Sin(angle_alpha)));

            //float finalpos_y = (float)((d * Math.Sin(angle_seta)));//+ (d * Math.Sin(angle_seta) * Math.Cos(angle_alpha)));

            float finalpos_x = (float)(d * Math.Cos(angle_seta) * Math.Sin(angle_beta));
            float finalpos_y = (float)(d * Math.Sin(angle_seta));
            float finalpos_z = (float)(d * Math.Cos(angle_seta) * Math.Cos(angle_beta));

            //camera.Translate = Matrix.Translation(0, finalpos_y, finalpos_z);
            //Vector3 v1 = new Vector3(c_x + finalpos_x,
            //    c_y + finalpos_y,
            //    c_z + finalpos_z);
            Vector3 v1 = new Vector3(c_x + finalpos_x, c_y + finalpos_y, c_z + finalpos_z);

            camera.Position = v1;

            //camera.Translate = Matrix.Translation(0, c_y + finalpos_y, c_z + finalpos_z);

            //Vector3 v2 = new Vector3(c_x,
            //    c_y - (float)(Math.Sin(Math.PI * angle_seta / 180) * d),
            //    c_z - ((float)(Math.Cos(Math.PI * angle_seta / 180) * d)));


            //camera.Position = new Vector3(c_x,
            //    c_y - (float)(Math.Sin(Math.PI * angle_seta / 180) * d),
            //    c_z - ((float)(Math.Cos(Math.PI * angle_seta / 180) * d))); //+7



            //camera.Position = new Vector3(-0.2555f + .2f, -0.6375f + .2f, 1.072f + (float)(Math.Cos(Math.PI * 45 / 180) * 7)); //+7

            //camera.Position = new Vector3(-0.2555f + .2f, -6.6375f + .2f, 8.072f);
            //camera.Position = new Vector3(-0.2555f + .2f, -8.6375f + .2f, 6.072f);
            //camera.Position = new Vector3(-0.2555f + .2f, -10.6375f + .2f, 4.072f);
            //camera.Position = new Vector3(-0.2555f + .2f, -12.6375f + .2f, 2.072f);
            //camera.Position = new Vector3(-0.2555f + .2f, -14.6375f + .2f, 2.072f);
            //camera.Position = new Vector3(-0.2555f + .2f, -16.6375f + .2f, 2.072f);
            ////---------------------------------

            //camera.Position = new Vector3(-0.2555f + .2f, -11.6375f + .2f, 1.072f);
            ////camera.Position = new Vector3(-0.2555f + .2f, -10.6375f, 4.072f);
            //camera.Position = new Vector3(-0.2555f + .2f, -16.6375f + .2f, 1.22f);
            // camera.Position = new Vector3(-0.2555f + .2f, -16.6375f  , 1.075f);
        }