private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { if (CreateMaPoint == true) { mahs.Add(new MaPoint(e.X - 700, e.Y - 400)); pictureBox1.Invalidate(); CreateMaPoint = false; } for (int i = 0; i < mahs.Count(); i++) { mahs[i] = new MaPoint(mahs[i].x, mahs[i].y, false); } }
private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { for (int i = 0; i < mahs.Count(); i++) { if (mahs[i].isIClicked == true) { mahs[i] = new MaPoint(e.X - dX, e.Y - dY, true); pictureBox1.Invalidate(); break; } } }
private void button4_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData == Keys.W) { for (int j = 0; j < B.GetLength(1); j++) { for (int i = 0; i < B.GetLength(0); i++) { B[j, i] = new MaPoint(B[j, i].x, B[j, i].y * (float)Math.Cos(0.0872665) + B[j, i].z * (float)Math.Sin(-0.0872665), -B[j, i].y * (float)Math.Sin(-0.0872665) + B[j, i].z * (float)Math.Cos(0.0872665)); } } pictureBox1.Invalidate(); } if (e.KeyData == Keys.S) { for (int j = 0; j < B.GetLength(1); j++) { for (int i = 0; i < B.GetLength(0); i++) { B[j, i] = new MaPoint(B[j, i].x, B[j, i].y * (float)Math.Cos(0.0872665) + B[j, i].z * (float)Math.Sin(0.0872665), -B[j, i].y * (float)Math.Sin(0.0872665) + B[j, i].z * (float)Math.Cos(0.0872665)); } } pictureBox1.Invalidate(); } if (e.KeyData == Keys.D) { for (int j = 0; j < B.GetLength(1); j++) { for (int i = 0; i < B.GetLength(0); i++) { B[j, i] = new MaPoint(B[j, i].x * (float)Math.Cos(0.0872665) + B[j, i].z * (float)Math.Sin(0.0872665), B[j, i].y, -B[j, i].x * (float)Math.Sin(0.0872665) + B[j, i].z * (float)Math.Cos(0.0872665)); } } pictureBox1.Invalidate(); } if (e.KeyData == Keys.A) { for (int j = 0; j < B.GetLength(1); j++) { for (int i = 0; i < B.GetLength(0); i++) { B[j, i] = new MaPoint(B[j, i].x * (float)Math.Cos(-0.0872665) + B[j, i].z * (float)Math.Sin(-0.0872665), B[j, i].y, -B[j, i].x * (float)Math.Sin(-0.0872665) + B[j, i].z * (float)Math.Cos(-0.0872665)); } } pictureBox1.Invalidate(); } }
static MaPoint[,] Mult(MaPoint[,] a, float[,] b) { if (a.GetLength(1) != b.GetLength(0)) { throw new Exception("Матрицы нельзя перемножить"); } MaPoint[,] r = new MaPoint[a.GetLength(0), b.GetLength(1)]; for (int i = 0; i < a.GetLength(0); i++) { for (int j = 0; j < b.GetLength(1); j++) { for (int k = 0; k < b.GetLength(0); k++) { r[i, j] += a[i, k] * b[k, j]; } } } return(r); }
private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { bool tmp = true; for (int i = 0; i < mahs.Count(); i++) { if (Math.Pow((e.X - 700 - mahs[i].x), 2) + Math.Pow((e.Y - 400 - mahs[i].y), 2) <= Math.Pow(7, 2)) { mahs[i] = new MaPoint(mahs[i].x, mahs[i].y, true); dX = e.X - mahs[i].x; dY = e.Y - mahs[i].y; tmp = false; break; } } if (tmp == true) { CreateMaPoint = true; } }
private void button4_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData == Keys.W) { for (int i = 0; i < mahs.Count(); i++) { mahs[i] = new MaPoint(mahs[i].x, mahs[i].y * (float)Math.Cos(0.0872665) + mahs[i].z * (float)Math.Sin(-0.0872665), -mahs[i].y * (float)Math.Sin(-0.0872665) + mahs[i].z * (float)Math.Cos(0.0872665)); } pictureBox1.Invalidate(); } if (e.KeyData == Keys.S) { for (int i = 0; i < mahs.Count(); i++) { mahs[i] = new MaPoint(mahs[i].x, mahs[i].y * (float)Math.Cos(0.0872665) + mahs[i].z * (float)Math.Sin(0.0872665), -mahs[i].y * (float)Math.Sin(0.0872665) + mahs[i].z * (float)Math.Cos(0.0872665)); } pictureBox1.Invalidate(); } if (e.KeyData == Keys.D) { for (int i = 0; i < mahs.Count(); i++) { mahs[i] = new MaPoint(mahs[i].x * (float)Math.Cos(0.0872665) + mahs[i].z * (float)Math.Sin(0.0872665), mahs[i].y, -mahs[i].x * (float)Math.Sin(0.0872665) + mahs[i].z * (float)Math.Cos(0.0872665)); } pictureBox1.Invalidate(); } if (e.KeyData == Keys.A) { for (int i = 0; i < mahs.Count(); i++) { mahs[i] = new MaPoint(mahs[i].x * (float)Math.Cos(-0.0872665) + mahs[i].z * (float)Math.Sin(-0.0872665), mahs[i].y, -mahs[i].x * (float)Math.Sin(-0.0872665) + mahs[i].z * (float)Math.Cos(-0.0872665)); } pictureBox1.Invalidate(); } }
public static MaPoint operator *(float s, MaPoint a) { MaPoint c = new MaPoint(a.x * s, a.y * s, a.z * s); return(c); }
public static MaPoint operator -(MaPoint a, MaPoint b) { MaPoint c = new MaPoint(a.x - b.x, a.y - b.y, a.z - b.z); return(c); }
public static MaPoint operator +(MaPoint a, MaPoint b) { MaPoint c = new MaPoint(a.x + b.x, a.y + b.y, a.z + b.z); return(c); }
public static MaPoint operator *(MaPoint a, MaPoint b) { MaPoint c = new MaPoint(a.x * b.x, a.y * b.y, a.z * b.z); return(c); }