初始化环面(Torus)几何数据

        private bool InitialiseTorus()
        {
            //  Calculate the number of vertices and indices.
            numVertices=(torusPrecision+1)*(torusPrecision+1);
            numIndices=2*torusPrecision*torusPrecision*3;
        
            //  Create the vertices and indices.
            vertices = new TorusVertex[numVertices];
            indices = new uint[numIndices];

            //  Calculate the first ring - inner radius 4, outer radius 1.5
            for (int i = 0; i < torusPrecision + 1; i++)
            {
                vertices[i].position = (new Vertex(1.5f, 0.0f, 0.0f)).GetRotatedZ(i * 360.0f / torusPrecision) + new Vertex(4.0f, 0.0f, 0.0f);
                vertices[i].s = 0.0f;
                vertices[i].t = (float)i / torusPrecision;

                vertices[i].sTangent.Set(0.0f, 0.0f, -1.0f);
                vertices[i].tTangent = (new Vertex(0.0f, -1.0f, 0.0f)).GetRotatedZ(i * 360.0f / torusPrecision);
                vertices[i].normal = vertices[i].tTangent.VectorProduct(vertices[i].sTangent);
            }

            //  Rotate the first ring to get the other rings
            for(uint ring=1; ring<torusPrecision+1; ring++)
            {
                for (uint i = 0; i < torusPrecision + 1; i++)
                {
                    vertices[ring * (torusPrecision + 1) + i].position =
                        vertices[i].position.GetRotatedY(ring * 360.0f / torusPrecision);

                    vertices[ring * (torusP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值