当前位置: 首页>>代码示例>>C#>>正文


C# Cylinder.SetAttribute方法代码示例

本文整理汇总了C#中Cylinder.SetAttribute方法的典型用法代码示例。如果您正苦于以下问题:C# Cylinder.SetAttribute方法的具体用法?C# Cylinder.SetAttribute怎么用?C# Cylinder.SetAttribute使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Cylinder的用法示例。


在下文中一共展示了Cylinder.SetAttribute方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Bezier

        /// <summary>
        /// Test scene for BezierSurface.
        /// </summary>
        public static void Bezier( IRayScene sc )
        {
            Debug.Assert( sc != null );

              // CSG scene:
              CSGInnerNode root = new CSGInnerNode( SetOperation.Union );
              root.SetAttribute( PropertyName.REFLECTANCE_MODEL, new PhongModel() );
              root.SetAttribute( PropertyName.MATERIAL, new PhongMaterial( new double[] { 1.0, 0.8, 0.1 }, 0.1, 0.5, 0.5, 64 ) );
              sc.Intersectable = root;

              // Background color:
              sc.BackgroundColor = new double[] { 0.0, 0.05, 0.07 };

              // Camera:
              sc.Camera = new StaticCamera( new Vector3d( 0.7, 0.5, -5.0 ),
                                    new Vector3d( 0.0, -0.18, 1.0 ),
                                    50.0 );

              // Light sources:
              sc.Sources = new LinkedList<ILightSource>();
              sc.Sources.Add( new AmbientLightSource( 0.8 ) );
              sc.Sources.Add( new PointLightSource( new Vector3d( -5.0, 3.0, -3.0 ), 1.0 ) );

              // --- NODE DEFINITIONS ----------------------------------------------------

              // Bezier patch (not yet):
              BezierSurface b = new BezierSurface( 1, 2, new double[] {
            0.0, 0.0, 3.0,  // row 0
            1.0, 0.0, 3.0,
            2.0, 0.0, 3.0,
            3.0, 0.0, 3.0,
            4.0, 0.0, 3.0,
            5.0, 0.0, 3.0,
            6.0, 0.0, 3.0,
            0.0, 0.0, 2.0,  // row 1
            1.0, 0.0, 2.0,
            2.0, 3.0, 2.0,
            3.0, 3.0, 2.0,
            4.0, 3.0, 2.0,
            5.0, 0.0, 2.0,
            6.0, 0.0, 2.0,
            0.0, 0.0, 1.0,  // row 2
            1.0, 0.0, 1.0,
            2.0, 0.0, 1.0,
            3.0, 1.5, 1.0,
            4.0, 3.0, 1.0,
            5.0, 0.0, 1.0,
            6.0, 0.0, 1.0,
            0.0, 0.0, 0.0,  // row 3
            1.0, 0.0, 0.0,
            2.0, 0.0, 0.0,
            3.0, 0.0, 0.0,
            4.0, 0.0, 0.0,
            5.0, 0.0, 0.0,
            6.0, 0.0, 0.0,
            } );
              b.SetAttribute( PropertyName.TEXTURE, new CheckerTexture( 10.5, 12.0, new double[] { 0.0, 0.0, 0.1 } ) );
              root.InsertChild( b, Matrix4d.RotateY( -0.4 ) * Matrix4d.CreateTranslation( -1.1, -0.9, 0.0 ) );

              // Cylinders for reflections..
              Cylinder c = new Cylinder();
              c.SetAttribute( PropertyName.MATERIAL, new PhongMaterial( new double[] { 0.0, 0.6, 0.0 }, 0.2, 0.6, 0.3, 8 ) );
              root.InsertChild( c, Matrix4d.Scale( 0.15 ) * Matrix4d.RotateX( MathHelper.PiOver2 ) * Matrix4d.CreateTranslation( -0.4, 0.0, 0.0 ) );
              c = new Cylinder();
              c.SetAttribute( PropertyName.MATERIAL, new PhongMaterial( new double[] { 0.8, 0.2, 0.0 }, 0.2, 0.6, 0.3, 8 ) );
              root.InsertChild( c, Matrix4d.Scale( 0.2 ) * Matrix4d.RotateX( MathHelper.PiOver2 ) * Matrix4d.CreateTranslation( -1.9, 0.0, 3.0 ) );

              // Infinite plane with checker:
              Plane pl = new Plane();
              pl.SetAttribute( PropertyName.COLOR, new double[] { 0.3, 0.0, 0.0 } );
              pl.SetAttribute( PropertyName.TEXTURE, new CheckerTexture( 0.6, 0.6, new double[] { 1.0, 1.0, 1.0 } ) );
              root.InsertChild( pl, Matrix4d.RotateX( -MathHelper.PiOver2 ) * Matrix4d.CreateTranslation( 0.0, -1.0, 0.0 ) );
        }
开发者ID:pepouch,项目名称:PG1Grcis,代码行数:76,代码来源:RayCastingScenes.cs

示例2: Cylinders

        /// <summary>
        /// Test scene for cylinders
        /// </summary>
        public static void Cylinders( IRayScene sc )
        {
            Debug.Assert( sc != null );

              // CSG scene:
              CSGInnerNode root = new CSGInnerNode( SetOperation.Union );
              root.SetAttribute( PropertyName.REFLECTANCE_MODEL, new PhongModel() );
              root.SetAttribute( PropertyName.MATERIAL, new PhongMaterial( new double[] { 0.6, 0.0, 0.0 }, 0.15, 0.8, 0.15, 16 ) );
              sc.Intersectable = root;

              // Background color:
              sc.BackgroundColor = new double[] { 0.0, 0.05, 0.07 };

              // Camera:
              sc.Camera = new StaticCamera( new Vector3d( 0.7, 3.0, -10.0 ),
                                    new Vector3d( 0.0, -0.2, 1.0 ),
                                    50.0 );

              // Light sources:
              sc.Sources = new LinkedList<ILightSource>();
              sc.Sources.Add( new AmbientLightSource( 1.0 ) );
              sc.Sources.Add( new PointLightSource( new Vector3d( -5.0, 3.0, -3.0 ), 1.6 ) );

              // --- NODE DEFINITIONS ----------------------------------------------------

              // Base plane
              Plane pl = new Plane();
              pl.SetAttribute( PropertyName.COLOR, new double[] { 0.0, 0.2, 0.0 } );
              pl.SetAttribute( PropertyName.TEXTURE, new CheckerTexture( 0.5, 0.5, new double[] { 1.0, 1.0, 1.0 } ) );
              root.InsertChild( pl, Matrix4d.RotateX( -MathHelper.PiOver2 ) * Matrix4d.CreateTranslation( 0.0, -1.0, 0.0 ) );

              // Cylinders
              Cylinder c = new Cylinder();
              root.InsertChild( c, Matrix4d.RotateX( MathHelper.PiOver2 ) * Matrix4d.CreateTranslation( -2.1, 0.0, 1.0 ) );
              c = new Cylinder();
              c.SetAttribute( PropertyName.COLOR, new double[] { 0.2, 0.0, 0.7 } );
              c.SetAttribute( PropertyName.TEXTURE, new CheckerTexture( 12.0, 1.0, new double[] { 0.0, 0.0, 0.3 } ) );
              root.InsertChild( c, Matrix4d.RotateY( -0.4 ) * Matrix4d.CreateTranslation( 1.0, 0.0, 1.0 ) );
              c = new Cylinder( 0.0, 100.0 );
              c.SetAttribute( PropertyName.COLOR, new double[] { 0.1, 0.7, 0.0 } );
              root.InsertChild( c, Matrix4d.RotateY( 0.2 ) * Matrix4d.CreateTranslation( 5.0, 0.3, 4.0 ) );
              c = new Cylinder( -0.5, 0.5 );
              c.SetAttribute( PropertyName.COLOR, new double[] { 0.8, 0.6, 0.0 } );
              root.InsertChild( c, Matrix4d.Scale( 2.0 ) * Matrix4d.RotateX( 1.2 ) * Matrix4d.CreateTranslation( 2.0, 1.8, 16.0 ) );
        }
开发者ID:pepouch,项目名称:PG1Grcis,代码行数:48,代码来源:RayCastingScenes.cs

示例3: head

        protected static CSGInnerNode head()
        {
            CSGInnerNode root = new CSGInnerNode( SetOperation.Union );

              double[] skinColor = new double[] { 1, .8, .65 };
              double[] whiteColor = new double[] { 1, 1, 1 };
              double[] blackColor = new double[] { 0, 0, 0 };
              double[] blueColor = new double[] { 0, 0, 1 };
              double[] redColor = new double[] { 1, 0, 0 };

              CSGInnerNode hlava = new CSGInnerNode( SetOperation.Difference );
              root.InsertChild( hlava, Matrix4d.Identity );

              Sphere s = new Sphere();
              s.SetAttribute( PropertyName.COLOR, skinColor );
              hlava.InsertChild( s, Matrix4d.Scale( 2.3 ) );

              // klobouk
              CSGInnerNode klobouk = new CSGInnerNode( SetOperation.Union );

              Cylinder klb = new Cylinder( -0.5, 0.5 );
              klb.SetAttribute( PropertyName.COLOR, blackColor );
              klobouk.InsertChild( klb, Matrix4d.Scale( 2, 2, 1.4 ) * Matrix4d.RotateX( Math.PI / 2 ) * Matrix4d.CreateTranslation( 0, 0.5, 0 ) );

              Cylinder ksilt = new Cylinder( -0.5, 0.5 );
              ksilt.SetAttribute( PropertyName.COLOR, blackColor );
              klobouk.InsertChild( ksilt, Matrix4d.Scale( 3, 3, .1 ) * Matrix4d.RotateX( Math.PI / 2 ) );

              root.InsertChild( klobouk, Matrix4d.CreateTranslation( 0, 1.25, 0 ) );

              // levy ocni dulek
              s = new Sphere();
              s.SetAttribute( PropertyName.COLOR, skinColor );
              hlava.InsertChild( s, Matrix4d.Scale( 0.7 ) * Matrix4d.CreateTranslation( -0.7, .3, -1.8 ) );

              // pravy ocni dulek
              s = new Sphere();
              s.SetAttribute( PropertyName.COLOR, skinColor );
              hlava.InsertChild( s, Matrix4d.Scale( 0.7 ) * Matrix4d.CreateTranslation( 0.7, .3, -1.8 ) );

              // prave oko
              CSGInnerNode oko = new CSGInnerNode( SetOperation.Union );
              root.InsertChild( oko, Matrix4d.CreateTranslation( 0.70, 0.3, -0.5 ) );

              Sphere bulva = new Sphere();
              bulva.SetAttribute( PropertyName.COLOR, whiteColor );
              oko.InsertChild( bulva, Matrix4d.Scale( 1.3 ) );

              Sphere cocka = new Sphere();
              cocka.SetAttribute( PropertyName.COLOR, blueColor );
              oko.InsertChild( cocka, Matrix4d.Scale( 0.3 ) * Matrix4d.CreateTranslation( 0, 0, -1.2 ) );

              // leve oko
              oko = new CSGInnerNode( SetOperation.Union );
              root.InsertChild( oko, Matrix4d.CreateTranslation( -0.70, 0.3, -0.5 ) );

              bulva = new Sphere();
              bulva.SetAttribute( PropertyName.COLOR, whiteColor );
              oko.InsertChild( bulva, Matrix4d.Scale( 1.3 ) );

              cocka = new Sphere();
              cocka.SetAttribute( PropertyName.COLOR, blueColor );
              oko.InsertChild( cocka, Matrix4d.Scale( 0.3 ) * Matrix4d.CreateTranslation( 0, 0, -1.2 ) );

              // nos
              Cylinder nos = new Cylinder( -0.5, 0.5 );
              nos.SetAttribute( PropertyName.COLOR, skinColor );
              root.InsertChild( nos, Matrix4d.Scale( 0.2, 0.2, 0.6 ) * Matrix4d.CreateTranslation( 0, 0, -2.65 ) );

              // usta
              CSGInnerNode usta = new CSGInnerNode( SetOperation.Xor );

              Cylinder horniRet = new Cylinder( -0.5, 0.5 );
              horniRet.SetAttribute( PropertyName.COLOR, redColor );
              usta.InsertChild( horniRet, Matrix4d.CreateTranslation( 0, -0.3, 0 ) );

              Cylinder dolniRet = new Cylinder( -0.5, 0.5 );
              dolniRet.SetAttribute( PropertyName.COLOR, redColor );
              usta.InsertChild( dolniRet, Matrix4d.CreateTranslation( 0, 0.3, 0 ) );

              root.InsertChild( usta, Matrix4d.Scale( 0.7, 0.3, 1 ) * Matrix4d.CreateTranslation( 0, -0.7, -1.85 ) );

              // vnitrek ust
              CSGInnerNode vnitrekUst = new CSGInnerNode( SetOperation.Intersection );
              horniRet = new Cylinder( -0.5, 0.5 );
              horniRet.SetAttribute( PropertyName.COLOR, blackColor );
              vnitrekUst.InsertChild( horniRet, Matrix4d.CreateTranslation( 0, -0.3, 0 ) );

              dolniRet = new Cylinder( -0.5, 0.5 );
              dolniRet.SetAttribute( PropertyName.COLOR, blackColor );
              vnitrekUst.InsertChild( dolniRet, Matrix4d.CreateTranslation( 0, 0.3, 0 ) );

              usta.InsertChild( vnitrekUst, Matrix4d.CreateTranslation( 0, 0, 0.1 ) );

              return root;
        }
开发者ID:pepouch,项目名称:PG1Grcis,代码行数:96,代码来源:RayCastingScenes.cs

示例4: testWithCylinders

        protected static CSGInnerNode testWithCylinders( SetOperation op )
        {
            // scene:
              CSGInnerNode root = new CSGInnerNode( op );
              int num = 5;

              for ( int i = 0; i < num; ++i )
              {
            double j = i;
            Cylinder c = new Cylinder( -0.5, 0.5 );
            c.SetAttribute( PropertyName.COLOR, new double[] { j / num, 1.0 - j / num, 0 } );
            root.InsertChild( c, Matrix4d.RotateX( Math.PI / 4 ) * Matrix4d.CreateTranslation( -1 + 0.6 * i, 0, 0 ) );
              }

              return root;
        }
开发者ID:pepouch,项目名称:PG1Grcis,代码行数:16,代码来源:RayCastingScenes.cs


注:本文中的Cylinder.SetAttribute方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。