static public double[,] FormOrtoghraphicsMatr(OrtMode m) { double[,] matr = new double[4, 4] { { 1, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 1, 0 }, { 0, 0, 0, 1 } }; switch (m) { case OrtMode.XY: matr[2, 2] = 0; break; case OrtMode.XZ: matr[1, 1] = 0; break; case OrtMode.YZ: matr[0, 0] = 0; break; } return(matr); }
private PointF ToOrtographics(Point3D p, OrtMode om) { var vector_p = PointToVector(p); var new_vector_p = MatrixMultiplication(vector_p, ortographics_matr); return(VectorToPoint(new_vector_p)); }
static public List <Edge> GetAxis(Point3D center, Mode m, OrtMode om, int c) { List <Edge> res = new List <Edge>(); Edge3D x = new Edge3D(center, new Point3D(center.X + 200, center.Y, center.Z)); Edge3D y = new Edge3D(center, new Point3D(center.X, center.Y - 200, center.Z)); Edge3D z = new Edge3D(center, new Point3D(center.X, center.Y, center.Z + 200)); switch (m) { case Mode.Orthographic: res.Add(EdgeToProjection(x, Mode.Orthographic, om)); res.Add(EdgeToProjection(y, Mode.Orthographic, om)); res.Add(EdgeToProjection(z, Mode.Orthographic, om)); break; case Mode.Isometric: res.Add(EdgeToProjection(x, Mode.Isometric)); res.Add(EdgeToProjection(y, Mode.Isometric)); res.Add(EdgeToProjection(z, Mode.Isometric)); break; case Mode.Perspective: res.Add(EdgeToProjection(x, Mode.Perspective, OrtMode.XY, 1600)); res.Add(EdgeToProjection(y, Mode.Perspective, OrtMode.XY, 1600)); res.Add(EdgeToProjection(z, Mode.Perspective, OrtMode.XY, 1600)); break; } return(res); }
public Projector(int c, OrtMode om = OrtMode.XY) { z_length = c; ort_mode = om; FormOrtoghraphicsMatr(ort_mode); FormIsometricMatr(); FormPerspectiveMatr(z_length); }
static public List <Edge> ToOrtographics(Polyhedron ph, OrtMode plain) { List <Edge> edges = new List <Edge>(); var edges_3d = ph.PreparePrint(); var ort_matr = FormOrtoghraphicsMatr(plain); foreach (var edge in edges_3d) { var new_start = MatrixMultiplication(PointToVector(edge.start), ort_matr); var new_end = MatrixMultiplication(PointToVector(edge.end), ort_matr); edges.Add(new Edge(VectorToPoint(new_start), VectorToPoint(new_end))); } return(edges); }
private void Ortyz_CheckedChanged(object sender, EventArgs e) { if (Ortyz.Checked) { Ortxz.Checked = false; Ortxy.Checked = false; cur_ort_mode = OrtMode.YZ; ort_button.Enabled = true; Draw(); } else { OrtButtonAvailability(); } }
static public Edge EdgeToProjection(Edge3D e, Mode m, OrtMode om = OrtMode.XY, int c = 0) { double[,] matr = new double[4, 4]; switch (m) { case Mode.Orthographic: matr = FormOrtoghraphicsMatr(om); break; case Mode.Isometric: matr = FormIsometricMatr(); break; case Mode.Perspective: matr = FormPerspectiveMatr(c); break; } var new_start = VectorToPoint(MatrixMultiplication(PointToVector(e.start), matr)); var new_end = VectorToPoint(MatrixMultiplication(PointToVector(e.end), matr)); return(new Edge(new_start, new_end)); }
private void FormOrtoghraphicsMatr(OrtMode m) { ortographics_matr = new double[4, 4] { { 1, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 1, 0 }, { 0, 0, 0, 1 } }; switch (m) { case OrtMode.XY: ortographics_matr[2, 2] = 0; break; case OrtMode.XZ: ortographics_matr[1, 1] = 0; break; case OrtMode.YZ: ortographics_matr[0, 0] = 0; break; } }
public void Update(OrtMode om) { ort_mode = om; }