Ejemplo n.º 1
0
        private void buttonGenerate_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;
            string param = textParam.Text;

            scene.Reset();
            Construction cn = new Construction();

            // 1st instance:
            int faces = cn.AddMesh(scene, Matrix4.Identity, param);

            diameter = scene.GetDiameter(out center);
            int faces1    = scene.Triangles;
            int vertices1 = scene.Vertices;

            // 2nd instance:
            faces += cn.AddMesh(scene, Matrix4.CreateTranslation(diameter, 0.0f, 0.0f), param);

            // finishing:
            scene.BuildCornerTable();
            int errors = scene.CheckCornerTable(null);

            scene.GenerateColors(12);
            diameter = scene.GetDiameter(out center);

            Cursor.Current = Cursors.Default;

            labelFaces.Text = string.Format("{0}f (reported {1}), {2}v, 1st instance: {3}f, {4}v, {5} errors",
                                            scene.Triangles, faces, scene.Vertices, faces1, vertices1, errors);
            PrepareDataBuffers();
            glControl1.Invalidate();
        }
Ejemplo n.º 2
0
        private void buttonGenerate_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;

            scene.Reset();
            Construction cn = new Construction();

            int faces = cn.AddMesh(scene, Matrix4.Identity, textParam.Text);

            diameter = scene.GetDiameter(out center);

            if (checkMulti.Checked)
            {
                Matrix4 translation, rotation;

                Matrix4.CreateTranslation(diameter, 0.0f, 0.0f, out translation);
                Matrix4.CreateRotationX(90.0f, out rotation);
                faces += cn.AddMesh(scene, translation * rotation, textParam.Text);

                Matrix4.CreateTranslation(0.0f, diameter, 0.0f, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(diameter, diameter, 0.0f, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(0.0f, 0.0f, diameter, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(diameter, 0.0f, diameter, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(0.0f, diameter, diameter, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(diameter, diameter, diameter, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                diameter = scene.GetDiameter(out center);
            }

            scene.BuildCornerTable();
            int errors = scene.CheckCornerTable(null);

            scene.GenerateColors(12);
            ResetCamera();

            labelFile.Text = string.Format("{0} faces, {1} errors", faces, errors);
            PrepareDataBuffers();
            glControl1.Invalidate();

            Cursor.Current = Cursors.Default;
        }
Ejemplo n.º 3
0
        private void buttonGenerate_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;

            scene.Reset();
            Construction cn = new Construction();

            int faces = cn.AddMesh(scene, Matrix4.Identity, textParam.Text);

            Vector3 center;
            float   diameter = scene.GetDiameter(out center);

            if (checkMulti.Checked)
            {
                Matrix4 translation, rotation;

                Matrix4.CreateTranslation(diameter, 0.0f, 0.0f, out translation);
                Matrix4.CreateRotationX(90.0f, out rotation);
                faces += cn.AddMesh(scene, translation * rotation, textParam.Text);

                Matrix4.CreateTranslation(0.0f, diameter, 0.0f, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(diameter, diameter, 0.0f, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(0.0f, 0.0f, diameter, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(diameter, 0.0f, diameter, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(0.0f, diameter, diameter, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(diameter, diameter, diameter, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                diameter = scene.GetDiameter(out center);
            }

            scene.BuildCornerTable();

            int errors = scene.CheckCornerTable(null);

            Cursor.Current = Cursors.Default;

            labelFaces.Text = string.Format("{0} faces, {1} errors", faces, errors);
            redraw();
        }
Ejemplo n.º 4
0
        private void buttonGenerate_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;
            float variant = (float)numericVariant.Value;

            scene.Reset();
            Construction cn    = new Construction();
            int          faces = cn.AddMesh(scene, Matrix4.Identity, variant);

            scene.BuildCornerTable();
            int errors = scene.CheckCornerTable(null);

            Cursor.Current = Cursors.Default;

            labelFaces.Text = string.Format("{0} faces, {1} errors", faces, errors);
            redraw();
        }
Ejemplo n.º 5
0
        private void buttonGenerate_Click(object sender, EventArgs e)
        {
            bool doCheck = checkCorner.Checked;

            scene.Reset();

            Stopwatch sw = new Stopwatch();

            sw.Start();

            Construction cn = new Construction();

            int faces = cn.AddMesh(scene, Matrix4.Identity, textParam.Text);

            diameter = scene.GetDiameter(out center);

            if (checkMulti.Checked)
            {
                Matrix4 translation, rotation;

                Matrix4.CreateTranslation(diameter, 0.0f, 0.0f, out translation);
                Matrix4.CreateRotationX(90.0f, out rotation);
                faces += cn.AddMesh(scene, translation * rotation, textParam.Text);

                Matrix4.CreateTranslation(0.0f, diameter, 0.0f, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(diameter, diameter, 0.0f, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(0.0f, 0.0f, diameter, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(diameter, 0.0f, diameter, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(0.0f, diameter, diameter, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                Matrix4.CreateTranslation(diameter, diameter, diameter, out translation);
                faces += cn.AddMesh(scene, translation, textParam.Text);

                diameter = scene.GetDiameter(out center);
            }

            sw.Stop();
            long elapsed = sw.ElapsedMilliseconds;

            // Scene postprocessing.
            scene.BuildCornerTable();
            int errors = doCheck ? scene.CheckCornerTable(null) : 0;

            scene.GenerateColors(12);

            // Viewport update.
            UpdateParams(textParam.Text);
            tb.Center   = center;
            tb.Diameter = diameter;
            tb.Reset();

            camera.Center   = center;
            camera.Diameter = diameter;
            camera.Reset();

            SetupViewport();
            SetLight(diameter, ref light);

            modelStatus    = $"{scene.Triangles + scene.Lines}f ({faces}rep), {scene.Vertices}v, {errors}err, {elapsed}ms";
            labelFile.Text = modelStatus;

            // Prepare rendering system.
            PrepareDataBuffers();
            glControl1.Invalidate();
        }