首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

欢迎有兴趣的亲们解决!该怎么处理

2012-12-24 
欢迎有兴趣的亲们解决!如图,为什么WPF绘制的圆柱有缝隙?[解决办法]大神在哪里?[解决办法]该回复于2012-05-

欢迎有兴趣的亲们解决!

如图,为什么WPF绘制的圆柱有缝隙?
[解决办法]
大神在哪里?
[解决办法]
该回复于2012-05-22 09:36:41被版主删除
[解决办法]
该回复于2012-05-22 09:36:54被版主删除
[解决办法]
wpf就是一垃圾。blend就是垃圾中的垃圾。干嘛用这个东东。
[解决办法]
需求需求啊!会的来哦!不会的帮顶下!XX
[解决办法]

引用:
wpf就是一垃圾。blend就是垃圾中的垃圾。干嘛用这个东东。

为什么这么说?
[解决办法]
帮忙解决问题啊!尽说些么用的,唉、
[解决办法]
没有代码怎么知道。也许人家就是希望有个缝呢。
[解决办法]
废话不说,上代码!
  public GeometryModel3D GetGeometry3D(Point3D p1, Point3D p2, double R, Brush color)
        {
            GeometryModel3D Geomodel = new GeometryModel3D();
            Geomodel.BackMaterial = new DiffuseMaterial(color);
            Geomodel.Material = new DiffuseMaterial(Brushes.Black);
            Geomodel.Geometry = GenerateCylinderMesh(p1, p2, R);//
            return Geomodel;
        }

        public MeshGeometry3D GenerateCylinderMesh(Point3D p1, Point3D p2, double R)
        {
            //将圆柱体进行三角形剖分
            //空间中圆的参数方程:(x,y,z) = r*(A*cosθ+B*sinθ)+(x0,y0,z0)   【0≤θ≤2π】
            //其中 a、b 是单位向量,且满足 A⊥B⊥n(圆的法向量)
            MeshGeometry3D mesh = new MeshGeometry3D();
            mesh.Normals = new Vector3DCollection();//如何得到
            Vector3D CircleVector = p2 - p1;   //从p1点到p2点的3D向量
            Vector3D M = new Vector3D(1, 1, 1);
            if (Vector3D.AngleBetween(M, CircleVector) < 1)
            {
                M = new Vector3D(1, 0, 0);
            }
            Vector3D A = Vector3D.CrossProduct(CircleVector, M);
            Vector3D B = Vector3D.CrossProduct(CircleVector, A);


            A.Normalize();
            B.Normalize();
            double theta = double.NaN;
            Point3D Pos1 = new Point3D();
            Point3D Pos2 = new Point3D();
            double Stacks = 5000;//
            //设圆与 xz 轴平行
            for (int i = 0; i < Stacks; i++)
            {
                //计算剖分三角形顶点在参数方程中对应的角度
                theta = double.Parse(i.ToString()) / Stacks * Math.PI * 2;
                Pos1 = R / 2 * (A * Math.Cos(theta) + B * Math.Sin(theta)) + p1;
                Pos2 = R / 2 * (A * Math.Cos(theta) + B * Math.Sin(theta)) + p2;
                mesh.Positions.Add(Pos1);
                mesh.Positions.Add(Pos2);
                mesh.TextureCoordinates.Add(new Point(double.Parse(i.ToString()) / Stacks, 0));
                mesh.TextureCoordinates.Add(new Point(double.Parse(i.ToString()) / Stacks, 1));
            }

            for (int i = 0; i < Stacks - 1; i++)
            {
                mesh.TriangleIndices.Add(i * 2);
                mesh.TriangleIndices.Add(i * 2 + 1);
                mesh.TriangleIndices.Add(i * 2 + 3);
                mesh.TriangleIndices.Add(i * 2);
                mesh.TriangleIndices.Add(i * 2 + 3);
                mesh.TriangleIndices.Add(i * 2 + 2);
            }
            return mesh;
        }


[解决办法]
引用:

引用:

wpf就是一垃圾。blend就是垃圾中的垃圾。干嘛用这个东东。

为什么这么说?


也想知道答案
[解决办法]
引用:
wpf就是一垃圾。blend就是垃圾中的垃圾。干嘛用这个东东。

看来你很NB了,微软那么多人搞一门技术出来,直接然给你鄙视了,看来阁下是神级的人物了。菜鸟求问你是学什么什么我们没听过的技术的。
[解决办法]
不要吵了,代码都贴上去了。求大神解决啊!
[解决办法]
大神在哪里啊!
[解决办法]
来个人帮顶一下啊!

热点排行