欢迎有兴趣的亲们解决!
如图,为什么WPF绘制的圆柱有缝隙?
[解决办法]
大神在哪里?
[解决办法]
该回复于2012-05-22 09:36:41被版主删除
[解决办法]
该回复于2012-05-22 09:36:54被版主删除
[解决办法]
wpf就是一垃圾。blend就是垃圾中的垃圾。干嘛用这个东东。
[解决办法]
需求需求啊!会的来哦!不会的帮顶下!XX
[解决办法]
为什么这么说?
[解决办法]
帮忙解决问题啊!尽说些么用的,唉、
[解决办法]
没有代码怎么知道。也许人家就是希望有个缝呢。
[解决办法]
废话不说,上代码!
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;
}
[解决办法]
也想知道答案
[解决办法]
看来你很NB了,微软那么多人搞一门技术出来,直接然给你鄙视了,看来阁下是神级的人物了。菜鸟求问你是学什么什么我们没听过的技术的。
[解决办法]
不要吵了,代码都贴上去了。求大神解决啊!
[解决办法]
大神在哪里啊!
[解决办法]
来个人帮顶一下啊!