Made a face struct and made face list use it

put normal into face
This commit is contained in:
Lars Brubaker 2019-01-14 17:48:57 -08:00
parent a460ddbbf7
commit 6e4bbf2306
4 changed files with 7 additions and 6 deletions

View file

@ -193,7 +193,7 @@ namespace MatterHackers.MatterControl.DesignTools
// make lists so we can add to them // make lists so we can add to them
var vL = v.ToVector3List(); var vL = v.ToVector3List();
vL.Transform(matrix); vL.Transform(matrix);
var fL = new FaceList(f); var fL = new FaceList(f, curvedMesh.Vertices);
Teselate.SplitEdges(vL, fL, maxXLength); Teselate.SplitEdges(vL, fL, maxXLength);
vL.Transform(matrixInv); vL.Transform(matrixInv);

View file

@ -68,6 +68,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
var newCenter = new Vector3(aabb.Center.X, aabb.Center.Y, aabb.MinXYZ.Z); var newCenter = new Vector3(aabb.Center.X, aabb.Center.Y, aabb.MinXYZ.Z);
item.Translate(-newCenter); item.Translate(-newCenter);
this.Translate(newCenter); this.Translate(newCenter);
this.ScaleAbout = newCenter;
} }
public override bool CanFlatten => true; public override bool CanFlatten => true;

View file

@ -170,7 +170,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
var matrix = item.WorldMatrix(scene); var matrix = item.WorldMatrix(scene);
for (int faceIndex = 0; faceIndex < item.Mesh.Faces.Count; faceIndex++) for (int faceIndex = 0; faceIndex < item.Mesh.Faces.Count; faceIndex++)
{ {
var face0Normal = item.Mesh.FaceNormals[faceIndex].TransformVector(matrix).GetNormal(); var face0Normal = item.Mesh.Faces[faceIndex].normal.TransformNormal(matrix).GetNormal();
var angle = MathHelper.RadiansToDegrees(Math.Acos(face0Normal.Dot(-Vector3Float.UnitZ))); var angle = MathHelper.RadiansToDegrees(Math.Acos(face0Normal.Dot(-Vector3Float.UnitZ)));
if (angle < MaxOverHangAngle) if (angle < MaxOverHangAngle)
@ -178,7 +178,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
var face = item.Mesh.Faces[faceIndex]; var face = item.Mesh.Faces[faceIndex];
var verts = new int[] { face.v0, face.v1, face.v2 }; var verts = new int[] { face.v0, face.v1, face.v2 };
var fc = downVerts.Count; var fc = downVerts.Count;
downFaces.Add((fc, fc+1, fc+2)); downFaces.Add(fc, fc+1, fc+2, downVerts);
downVerts.Add(item.Mesh.Vertices[face.v0].Transform(matrix)); downVerts.Add(item.Mesh.Vertices[face.v0].Transform(matrix));
downVerts.Add(item.Mesh.Vertices[face.v1].Transform(matrix)); downVerts.Add(item.Mesh.Vertices[face.v1].Transform(matrix));
downVerts.Add(item.Mesh.Vertices[face.v2].Transform(matrix)); downVerts.Add(item.Mesh.Vertices[face.v2].Transform(matrix));
@ -189,7 +189,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
var face = item.Mesh.Faces[faceIndex]; var face = item.Mesh.Faces[faceIndex];
var verts = new int[] { face.v0, face.v1, face.v2 }; var verts = new int[] { face.v0, face.v1, face.v2 };
var fc = upFaces.Count; var fc = upFaces.Count;
upFaces.Add((fc, fc + 1, fc + 2)); upFaces.Add(fc, fc + 1, fc + 2, upVerts);
upVerts.Add(item.Mesh.Vertices[face.v0].Transform(matrix)); upVerts.Add(item.Mesh.Vertices[face.v0].Transform(matrix));
upVerts.Add(item.Mesh.Vertices[face.v1].Transform(matrix)); upVerts.Add(item.Mesh.Vertices[face.v1].Transform(matrix));
upVerts.Add(item.Mesh.Vertices[face.v2].Transform(matrix)); upVerts.Add(item.Mesh.Vertices[face.v2].Transform(matrix));
@ -305,7 +305,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
} }
if (aboveBed) if (aboveBed)
{ {
var face0Normal = item.Mesh.FaceNormals[faceIndex].TransformVector(matrix).GetNormal(); var face0Normal = item.Mesh.Faces[faceIndex].normal.TransformNormal(matrix).GetNormal();
var angle = MathHelper.RadiansToDegrees(Math.Acos(face0Normal.Dot(-Vector3Float.UnitZ))); var angle = MathHelper.RadiansToDegrees(Math.Acos(face0Normal.Dot(-Vector3Float.UnitZ)));
if (angle < MaxOverHangAngle) if (angle < MaxOverHangAngle)

@ -1 +1 @@
Subproject commit 4c59390c9b15b5e9d49f034610cad69032fe3aa0 Subproject commit dcf16bdd93b45af47a37070f6a3452e1c7a2d646