public void change_color(int num, int n, float r, float g, float b) { pryzma_pr cur = (pryzma_pr)pryzmas[num]; cur.pryzma_colors[n, 0] = r; cur.pryzma_colors[n, 1] = g; cur.pryzma_colors[n, 2] = b; pryzmas[num] = cur; }
public void turn_by_z(int num, float alpha) { pryzma_pr cur = (pryzma_pr)pryzmas[num]; for (int i = 0; i < 5; i++) { float x = cur.u_points[i, 0]; float x_d = cur.d_points[i, 0]; float y = cur.u_points[i, 1]; float y_d = cur.d_points[i, 1]; cur.u_points[i, 0] = (float)((x - cur.x) * (Math.Cos(alpha)) - (y - cur.y) * (Math.Sin(alpha))) + cur.x; cur.d_points[i, 0] = (float)((x_d - cur.x) * (Math.Cos(alpha)) - (y_d - cur.y) * (Math.Sin(alpha))) + cur.x; cur.u_points[i, 1] = (float)((x - cur.x) * (Math.Sin(alpha)) + (y - cur.y) * (Math.Cos(alpha))) + cur.y; cur.d_points[i, 1] = (float)((x_d - cur.x) * (Math.Sin(alpha)) + (y_d - cur.y) * (Math.Cos(alpha))) + cur.y; } cur.z_alpha += alpha; pryzmas[num] = cur; }
public void turn_by_x(int num, float alpha) { pryzma_pr cur = (pryzma_pr)pryzmas[num]; for (int i = 0; i < 5; i++) { float y = (float)cur.u_points[i, 1]; float y_d = (float)cur.d_points[i, 1]; cur.u_points[i, 1] = (float)((y - cur.y) * (Math.Cos(alpha)) + (cur.u_points[i, 2] - cur.z) * (Math.Sin(alpha))) + cur.y; cur.d_points[i, 1] = (float)((y_d - cur.y) * (Math.Cos(alpha)) + (cur.d_points[i, 2] - cur.z) * (Math.Sin(alpha))) + cur.y; float z = cur.u_points[i, 2]; float z_d = cur.d_points[i, 2]; cur.u_points[i, 2] = (float)(-(y - cur.y) * (Math.Sin(alpha)) + (z - cur.z) * (Math.Cos(alpha))) + cur.z; cur.d_points[i, 2] = (float)(-(y_d - cur.y) * (Math.Sin(alpha)) + (z_d - cur.z) * (Math.Cos(alpha))) + cur.z; } cur.x_alpha += alpha; pryzmas[num] = cur; }
public void turn_by_y(int num, float alpha) { pryzma_pr cur = (pryzma_pr)pryzmas[num]; for (int i = 0; i < 5; i++) { float x = cur.u_points[i, 0]; float x_d = cur.d_points[i, 0]; float z = cur.u_points[i, 2]; float z_d = cur.d_points[i, 2]; cur.u_points[i, 0] = (float)((x - cur.x) * (Math.Cos(alpha)) + (z - cur.z) * (Math.Sin(alpha))) + cur.x; cur.d_points[i, 0] = (float)((x_d - cur.x) * (Math.Cos(alpha)) + (z_d - cur.z) * (Math.Sin(alpha))) + cur.x; cur.u_points[i, 2] = (float)(-(x - cur.x) * (Math.Sin(alpha)) + (z - cur.z) * (Math.Cos(alpha))) + cur.z; cur.d_points[i, 2] = (float)(-(x_d - cur.x) * (Math.Sin(alpha)) + (z_d - cur.z) * (Math.Cos(alpha))) + cur.z; } cur.y_alpha += alpha; pryzmas[num] = cur; }
public void pryzma_build(int num, float x, float y, float z, float l, float h, ref float[,] colors) { if (num == -1) { pryzma_pr cur = new pryzma_pr(); cur.d_points = new float[5, 3]; cur.u_points = new float[5, 3]; cur.pryzma_colors = new float[7, 3]; pryzmas.Add(cur); num = pryzmas.Count - 1; } pryzma_pr t = (pryzma_pr)pryzmas[num]; float alpha = 0; for (int i = 0; i < 5; i++) { t.u_points[i, 0] = x + l * ((float)Math.Cos(alpha)); t.u_points[i, 2] = z + l * ((float)Math.Sin(alpha)); t.u_points[i, 1] = y; t.d_points[i, 0] = x + l * ((float)Math.Cos(alpha)); t.d_points[i, 2] = z + l * ((float)Math.Sin(alpha)); t.d_points[i, 1] = y + h; alpha += (float)(0.4 * 3.14); } t.H = h; t.L = l; t.x = x; t.y = y + h / 2; t.z = z; t.pryzma_colors[0, 0] = colors[0, 0]; t.pryzma_colors[0, 1] = colors[0, 1]; t.pryzma_colors[0, 2] = colors[0, 2]; t.pryzma_colors[1, 0] = colors[1, 0]; t.pryzma_colors[1, 1] = colors[1, 1]; t.pryzma_colors[1, 2] = colors[1, 2]; t.pryzma_colors[2, 0] = colors[2, 0]; t.pryzma_colors[2, 1] = colors[2, 1]; t.pryzma_colors[2, 2] = colors[2, 2]; t.pryzma_colors[3, 0] = colors[3, 0]; t.pryzma_colors[3, 1] = colors[3, 1]; t.pryzma_colors[3, 2] = colors[3, 2]; t.pryzma_colors[4, 0] = colors[4, 0]; t.pryzma_colors[4, 1] = colors[4, 1]; t.pryzma_colors[4, 2] = colors[4, 2]; t.pryzma_colors[5, 0] = colors[5, 0]; t.pryzma_colors[5, 1] = colors[5, 1]; t.pryzma_colors[5, 2] = colors[5, 2]; t.pryzma_colors[6, 0] = colors[6, 0]; t.pryzma_colors[6, 1] = colors[6, 1]; t.pryzma_colors[6, 2] = colors[6, 2]; float ax = t.x_alpha; float ay = t.y_alpha; float az = t.z_alpha; t.x_alpha = 0.0f; t.y_alpha = 0.0f; t.z_alpha = 0.0f; pryzmas[num] = t; if (ax != 0.0) { turn_by_x(num, ax); } if (ay != 0.0) { turn_by_y(num, ay); } if (az != 0.0) { turn_by_z(num, az); } }