Exemple #1
0
 private void OnLoad(object sender, EventArgs e)
 {
     // maximize window
     WindowState = WindowState.Maximized;
     // load program
     _programOdd   = ProgramFactory.Create <GeodesicProgramOdd>();
     _programEqual = ProgramFactory.Create <GeodesicProgram>();
     _program      = _programOdd;
     // create icosahedron and set model matrix
     _modelMatrix = Matrix4.CreateScale(1);
     _icosahedron = new Icosahedron(5);
     _icosahedron.UpdateBuffers();
     // bind it to an vao
     _vao = new VertexArray();
     _vao.Bind();
     _vao.BindElementBuffer(_icosahedron.IndexBuffer);
     _vao.BindAttribute(_program.Position, _icosahedron.VertexBuffer);
     // set some reasonable default state
     GL.ClearColor(Color4.Black);
     GL.Enable(EnableCap.DepthTest);
     // backface culling is done in the tesselation control shader
     GL.Enable(EnableCap.CullFace);
     GL.CullFace(CullFaceMode.Back);
     GL.PatchParameter(PatchParameterInt.PatchVertices, 3);
     // lighting stuff
     _deferredRenderer = new DeferredRenderer();
     // enable controls
     _variableHandler.Enable(this);
 }
        public MeshPreviewSelector()
        {
            InitializeComponent();

            var previewRenderer = new PreviewRenderer(new Size(200, 200));

            previewRenderer.BackgroundColor = new Vector4(0.75f, 0.75f, 0.75f, 1f);

            var meshes = new List <Mesh>();

            meshes.Add(Icosahedron.Create(0.45f, 0));
            meshes.Add(Icosahedron.Create(0.45f, 1));
            meshes.Add(Tube.Create(0.3f, 0.35f, 0.7f, 20));
            meshes.Add(Cloud.Create(CloudShape.Sphere, 0.9f, 50000));
            meshes.Add(Cone.Create(0.3f, 0.8f));
            meshes.Add(TrefoilKnot.Create());

            var rotation = Quaternion.CreateFromYawPitchRoll(0, -0.25f, -0.2f);

            MeshesListBox.ItemsSource = meshes
                                        .Select(_ => new MeshPreviewViewModel(_, previewRenderer.RenderPreview(_, rotation)))
                                        .ToArray();

            previewRenderer.Dispose();
        }
Exemple #3
0
        private void AddReflectionTest()
        {
            var environmentMap = new TextureCubemap();
            var images         = new Bitmap[6] {
                (Bitmap)Bitmap.FromFile("Resources\\Textures\\Cubemap\\xneg.png"),
                (Bitmap)Bitmap.FromFile("Resources\\Textures\\Cubemap\\xpos.png"),
                (Bitmap)Bitmap.FromFile("Resources\\Textures\\Cubemap\\yneg.png"),
                (Bitmap)Bitmap.FromFile("Resources\\Textures\\Cubemap\\ypos.png"),
                (Bitmap)Bitmap.FromFile("Resources\\Textures\\Cubemap\\zneg.png"),
                (Bitmap)Bitmap.FromFile("Resources\\Textures\\Cubemap\\zpos.png"),
            };

            environmentMap.SetImages(images);

            var mesh = Icosahedron.Create(0.4f, 3);

            var material = new Material(MaterialType.RimReflectionDiffuseTextureColor, RenderQueue.Opaque);

            material.Color = Vector4.Zero;
            material.SetTexture("uniform_ReflectionTexture", environmentMap);

            var so       = new Node(_scene, "reflective");
            var renderer = so.AddComponent <MeshRenderable>();

            renderer.Material = material;
            renderer.Mesh     = mesh;
        }
Exemple #4
0
    // Use this for initialization
    void Start()
    {
        rend = gameObject.GetComponent<Renderer>();
        //mat = new Material(Shader.Find("Standard"));
        //rend = new Renderer();
        //rend.material = mat;
        gMO = GameObject.Find("GameManager");
        gM = gMO.GetComponent<GameManager>();
        tetrahedron  = gameObject.GetComponent<Tetrahedron>();
        octahedron   = gameObject.GetComponent<Octahedron>();
        dodecahedron = gameObject.GetComponent<Dodecahedron>();
        icosahedron  = gameObject.GetComponent<Icosahedron>();

        counter = (int)Random.Range(1f, 5f);
        if(counter == 5)
            counter = 4;

        if(counter == 1)
            tetrahedron.MakeMesh();
        if(counter == 2)
            octahedron.MakeMesh();
        if(counter == 3)
            dodecahedron.MakeMesh();
        if(counter == 4)
            icosahedron.MakeMesh();

        gM.ZombiePlus();
    }
Exemple #5
0
    void RenderHexes(Icosahedron icosahedron)
    {
        GameObject FaceParent = new GameObject("FaceParent");

        FaceParent.transform.SetParent(gameObject.transform);

        foreach (var hex in icosahedron.Hexagons)
        {
            GameObject hexGO = new GameObject("hex");
            hexGO.transform.SetParent(FaceParent.transform);
            var meshrenderer = hexGO.AddComponent <MeshRenderer>();
            var meshfilter   = hexGO.AddComponent <MeshFilter>();
            var mesh         = new Mesh();
            meshfilter.mesh = mesh;
            mesh.vertices   = hex.GetVertices();
            mesh.triangles  = new int[12] {
                0, 1, 2,
                2, 3, 4,
                4, 5, 0,
                1, 3, 5
            };

            mesh.RecalculateNormals();

            meshrenderer.material      = defaultMaterial;
            hexGO.transform.localScale = 0.95f * Vector3.one;
        }
    }
Exemple #6
0
    void RenderFaces(Icosahedron icos)
    {
        GameObject FaceParent = new GameObject("FaceParent");

        FaceParent.transform.SetParent(gameObject.transform);

        foreach (var xface in icos.global.faces)
        {
            if (xface.subdivided)
            {
                RenderSubFaces(icos);
                return;
            }

            GameObject face = new GameObject("face");
            face.transform.SetParent(FaceParent.transform);
            var meshrenderer = face.AddComponent <MeshRenderer>();
            var meshfilter   = face.AddComponent <MeshFilter>();
            var mesh         = new Mesh();
            meshfilter.mesh = mesh;
            mesh.vertices   = xface.getVertices();
            mesh.triangles  = new int[6] {
                0, 1, 2, 2, 1, 0
            };

            mesh.RecalculateNormals();

            meshrenderer.material     = defaultMaterial;
            face.transform.localScale = 0.95f * Vector3.one;
        }
    }
Exemple #7
0
        private void AddSpheres()
        {
            var mesh    = Icosahedron.Create(0.05f, 3);
            var spheres = new Node(Scene, "spheres");

            spheres.Transform.WorldPosition = new Vector3(0, 0.3f, 0);

            var material = new Material(MaterialType.DiffuseColor);


            var count = 5;

            for (int i = 0; i < count; i++)
            {
                for (int j = 0; j < count; j++)
                {
                    for (int k = 0; k < count; k++)
                    {
                        var so = new Node(Scene);
                        var r  = so.AddComponent <MeshRenderable>();
                        r.Mesh     = mesh;
                        r.Material = material;

                        so.Transform.LocalPosition = (new Vector3(i, k, j) - new Vector3(1, 0, 1) * (count * 0.5f)) * 0.2f;
                        so.Transform.Parent        = spheres.Transform;
                    }
                }
            }
        }
Exemple #8
0
    public Pentagon(Point center, Icosahedron icos, Point[] points = null)
    {
        this.points = new Point[5];
        CenterPoint = center;
        icosahedron = icos;

        Init(points);
        UnityEngine.Debug.Log(this.points.Length);
    }
Exemple #9
0
    public Hexagon(Point center, Icosahedron icos, List <Point> points = null)
    {
        this.points = new Point[6];
        CenterPoint = center;
        icosahedron = icos;

        Init(points);
        UnityEngine.Debug.Log(this.points.Length);
    }
Exemple #10
0
    void Start()
    {
        rotationSpeed = Random.Range(-5f, 5f);
        rend          = gameObject.GetComponent <Renderer>();

        tetrahedron  = gameObject.GetComponent <Tetrahedron>();
        octahedron   = gameObject.GetComponent <Octahedron>();
        dodecahedron = gameObject.GetComponent <Dodecahedron>();
        icosahedron  = gameObject.GetComponent <Icosahedron>();
    }
    void Start()
    {
        rotationSpeed = Random.Range(-5f, 5f);
        rend = gameObject.GetComponent<Renderer>();

        tetrahedron  = gameObject.GetComponent<Tetrahedron>();
        octahedron   = gameObject.GetComponent<Octahedron>();
        dodecahedron = gameObject.GetComponent<Dodecahedron>();
        icosahedron  = gameObject.GetComponent<Icosahedron>();
    }
Exemple #12
0
    void Start()
    {
        global = new Global();
        Icosahedron icosahedron = new Icosahedron(global, SubDivide, Spherize, Radius);

        foreach (var point in icosahedron.HexagonPoints)
        {
            VisualizePoint(point);
            UnityEngine.Debug.Log(point);
        }

        gameObject.transform.Translate(translator);
    }
    void OnGUI()
    {
        GUILayout.Label("Base Settings", EditorStyles.boldLabel);
        subdivisions = EditorGUILayout.IntSlider("Subdivisions", subdivisions, 0, 10);

        if (GUILayout.Button("Generate"))
        {
            var path = EditorUtility.SaveFilePanelInProject(
                "Save sphere mesh", "sphere.asset", "asset", "message??");

            if (path.Length > 0)
            {
                AssetDatabase.CreateAsset(Icosahedron.Generate(subdivisions), path);
            }
        }
    }
Exemple #14
0
        private void AddShakeLight()
        {
            var so    = new Node(Scene, "shaking light 1");
            var light = so.AddComponent <LightSource>();

            light.Type = LightType.Point;

            var r        = so.AddComponent <MeshRenderable>();
            var mesh     = Icosahedron.Create(0.05f, 3);
            var material = new Material(MaterialType.FlatColor);

            r.Mesh     = mesh;
            r.Material = material;

            so.AddComponent <Tweener>();
            //so.AddComponent<Shaker>();
        }
Exemple #15
0
    void RenderSegments(Icosahedron icos)
    {
        GameObject SegmentParent = new GameObject("SegmentParent");

        SegmentParent.transform.SetParent(gameObject.transform);
        foreach (var seg in icos.global.segments)
        {
            GameObject segment = new GameObject("edge");
            segment.transform.SetParent(SegmentParent.transform);
            var lr = segment.AddComponent <LineRenderer>();
            lr.SetPosition(0, new Vector3(seg.p1.X, seg.p1.Y, seg.p1.Z));
            lr.SetPosition(1, new Vector3(seg.p2.X, seg.p2.Y, seg.p2.Z));
            lr.SetWidth(0.04f, 0.04f);
            lr.useWorldSpace = false;
            lr.material      = sprite;
        }
    }
Exemple #16
0
        private void AddBroccoli()
        {
            var mesh     = Icosahedron.Create(0.7f, 4);
            var sphereSo = new Node(Scene, "big sphere");

            sphereSo.Transform.LocalPosition = new Vector3(0, -3, 0);
            var material = new Material(Shaders.Brokkoli_vert, Shaders.Brokkoli_frag, RenderQueue.Opaque);

            material.MainTexture      = new Texture2("Resources\\Textures\\green.png", false);
            material.MainTexture.Wrap = TextureWrapMode.ClampToEdge;
            material.Color            = new Vector4(1, 1, 1, 1);
            material.SetValue("uniform_Weight", 0.5f);

            var r = sphereSo.AddComponent <MeshRenderable>();

            r.Mesh     = mesh;
            r.Material = material;
        }
Exemple #17
0
        private void AddDemo()
        {
            var cameraSO = new Node(Scene, "main camera");              //scene object that will host Camera and CameraManipulator components

            cameraSO.AddComponent <Camera>();                           //adding Camera to scene
            cameraSO.AddComponent <CameraManipulator>();                //adding manipulator so you can control camera with (W, A, S, D and mouse Mid) around the scene.

            var sphereSO = new Node(Scene, "spheres");                  //scene object that will host sphere mesh renderer component

            sphereSO.Transform.WorldPosition = new Vector3(0, 0, -1);   //position object in world space
            var renderer = sphereSO.AddComponent <MeshRenderable>();    //adding component that can render 3D meshes
            var mesh     = Icosahedron.Create(0.05f, 3);                //generating Icosahedron mesh (sphere)

            renderer.Mesh = mesh;                                       //assigning mesh to renderer

            var lightSO = new Node(Scene, "light0");                    //scene object for light source component hosting

            lightSO.Transform.WorldPosition = new Vector3(0, 0, -0.5f); //setting its position
            lightSO.AddComponent <LightSource>();                       //adding lightsource component
        }
Exemple #18
0
        protected override void OnStart()
        {
            base.OnStart();

            _collider        = this.SceneObject.AddComponent <SphereCollider>();
            _collider.Radius = 0.1f;

            _pickerRenderer                = this.SceneObject.AddComponent <MeshRenderable>();
            _pickerRenderer.Mesh           = Icosahedron.Create(0.02f, 1);
            _pickerRenderer.IsEnabled      = false;
            _pickerRenderer.Material       = new Material(MaterialType.FlatColor);
            _pickerRenderer.Material.Color = new Vector4(1, 1, 0, 1);
            _pickerRenderer.IsRaytracable  = false;

            _selector = SceneObject.GetComponent <ObjectSelector>();
            if (_selector != null)
            {
                _selector.Selected += ObjectSelected;
            }
        }
Exemple #19
0
        public override void OnValidate()
        {
            base.OnValidate();

            var mb = IsSimple
                                ? Icosahedron.CreateSimple()
                                : Icosahedron.Create();

            for (int i = 0; i < Subdivisions; i++)
            {
                mb.Subdivide(Steps);
            }

            if (IsSphere)
            {
                mb.Sphere(0.5f);
            }

            meshFilter.sharedMesh = mb.ToMesh();
            meshFilter.sharedMesh.RecalculateNormals();
        }
Exemple #20
0
        private void AddDeferredTest()
        {
            var planeSo = new Node(_scene, "plane");

            planeSo.AddComponent <MeshRenderable>().Mesh = Plane.Create(10, 10);
            planeSo.Transform.LocalRotation = new Quaternion(Vector3.Left, MathF.PI / 2);

            var sphereMesh     = Icosahedron.Create(0.01f, 2);
            var sphereMaterial = new Material(MaterialType.FlatColor);

            sphereMaterial.Color = Vector4.One;

            var lightsParent = new Node(_scene, "lights");

            lightsParent.AddComponent <Rotator>().Rotation = new Vector3(0.7, 0, 0);
            var lightCount = 50;

            for (int i = 0; i < lightCount; i++)
            {
                var so = new Node(_scene);
                so.Transform.Parent = lightsParent.Transform;
                var light = so.AddComponent <LightSource>();
                var color = new Vector3(RandomF.Float(), RandomF.Float(), RandomF.Float());
                color            /= MathF.Max(color.X, color.Y, color.Z);
                light.Diffuse     = color;
                light.Attenuation = new Vector3(0, 4f, 0);

                var position = Vector3.Zero;
                while (position.LengthSquared < 0.05f)
                {
                    position = RandomF.InsideUnitSphere();
                }
                so.Transform.LocalPosition = position * 5;

                var meshRenderer = so.AddComponent <MeshRenderable>();
                meshRenderer.Mesh     = sphereMesh;
                meshRenderer.Material = sphereMaterial;
            }
        }
Exemple #21
0
    public override List <Vector3> Vertices()
    {
        if (_verticesCalculated)
        {
            return(_vertices);
        }

        _middlePointIndexCache = new Dictionary <long, int>();
        _vertices = new List <Vector3>();

        foreach (var vertex in Icosahedron.GetVertices())
        {
            AddVertex(vertex);
        }

        _triangles = Icosahedron.GetTriangles();

        RefineTriangles();

        _verticesCalculated = true;
        return(_vertices);
    }
Exemple #22
0
        public static Mesh Create(Seed s)
        {
            var mesh = new Mesh();

            switch (s)
            {
            case Seed.Dodecahedron:
                break;

            case Seed.Cube:
                mesh = new Cube();
                break;

            case Seed.Icosahedron:
                mesh = new Icosahedron();
                break;

            case Seed.Octahedron:
                mesh = new Octahedron();
                break;

            case Seed.Tetrahedron:
                mesh = new Tetrahedron();
                break;

            case Seed.SquareTiling:
                mesh = new Square();
                break;

            case Seed.TriangleTiling:
                break;

            case Seed.HexagonalTiling:
                break;
            }

            return(mesh);
        }
Exemple #23
0
    // Use this for initialization
    void Start()
    {
        rend = gameObject.GetComponent <Renderer>();
        //mat = new Material(Shader.Find("Standard"));
        //rend = new Renderer();
        //rend.material = mat;
        gMO          = GameObject.Find("GameManager");
        gM           = gMO.GetComponent <GameManager>();
        tetrahedron  = gameObject.GetComponent <Tetrahedron>();
        octahedron   = gameObject.GetComponent <Octahedron>();
        dodecahedron = gameObject.GetComponent <Dodecahedron>();
        icosahedron  = gameObject.GetComponent <Icosahedron>();

        counter = (int)Random.Range(1f, 5f);
        if (counter == 5)
        {
            counter = 4;
        }

        if (counter == 1)
        {
            tetrahedron.MakeMesh();
        }
        if (counter == 2)
        {
            octahedron.MakeMesh();
        }
        if (counter == 3)
        {
            dodecahedron.MakeMesh();
        }
        if (counter == 4)
        {
            icosahedron.MakeMesh();
        }

        gM.ZombiePlus();
    }
Exemple #24
0
        private void AddLights()
        {
            var material = new Material(MaterialType.FlatColor);

            material.Color = new Vector4(1, 1, 1, 1);
            var mesh = Icosahedron.Create(0.02f, 1);

            var light = new Node(Scene, "light0");

            light.Transform.LocalPosition = new Vector3(0, 1.5f, 0);
            light.AddComponent <LightSource>();
            var renderer = light.AddComponent <MeshRenderable>();

            renderer.Mesh     = mesh;
            renderer.Material = material;

            light = new Node(Scene, "light1");
            light.Transform.LocalPosition = new Vector3(0, -1.5f, 0);
            light.AddComponent <LightSource>();
            renderer          = light.AddComponent <MeshRenderable>();
            renderer.Mesh     = mesh;
            renderer.Material = material;
        }
Exemple #25
0
    void RenderSubFaces(Icosahedron icos)
    {
        GameObject FaceParent = new GameObject("SubFaceParent");

        FaceParent.transform.SetParent(gameObject.transform);

        for (int i = 0; i < 20; i++)
        {
            for (int j = 0; j < icos.subdividemp * icos.subdividemp; j++)
            {
                var verticies = icos.subFaces[i][j].getVertices();

                GameObject face = new GameObject("face");
                face.transform.SetParent(FaceParent.transform);
                faceGo.Add(icos.subFaces[i][j], face);

                var meshrenderer = face.AddComponent <MeshRenderer>();
                var meshfilter   = face.AddComponent <MeshFilter>();
                var mesh         = new Mesh();

                meshfilter.mesh = mesh;
                mesh.vertices   = verticies;
                mesh.RecalculateNormals();

                mesh.triangles = new int[3]
                {
                    0, 1, 2,
                };

                mesh.RecalculateNormals();

                meshrenderer.material = defaultMaterial;
                //face.transform.localScale = 0.95f * Vector3.one;
            }
        }
    }
Exemple #26
0
        protected override void OnStart()
        {
            _control = Scene.Control;

            _control.MouseDown += Control_MouseDown;

            var material = new Material(MaterialType.FlatColor);

            material.Color      = new Vector4(1, 1, 0, 1);
            _renderer           = SceneObject.AddComponent <MeshRenderable>();
            _renderer.Material  = material;
            _renderer.IsEnabled = false;

            var mesh    = new Mesh();
            var buffer3 = new Vector3Buffer(2);

            buffer3.Usage = BufferUsage.DynamicDraw;
            mesh.Vertices = buffer3;
            mesh.Type     = PrimitiveType.Lines;

            _renderer.Mesh = mesh;

            var hitPointSo = new Node(Scene);
            var sphere     = Icosahedron.Create(0.01f, 1);

            _hitPointRenderer                   = hitPointSo.AddComponent <MeshRenderable>();
            _hitPointRenderer.IsEnabled         = false;
            _hitPointRenderer.Mesh              = sphere;
            _hitPointRenderer.SceneObject.Layer = 2;
            _hitPointRenderer.Material          = material;

            _hitPointTransform = hitPointSo.Transform;

            _selectedMaterial       = new Material(MaterialType.DiffuseColor);
            _selectedMaterial.Color = new Vector4(1, 0, 0, 1);
        }
            private void Calculate_Click(object sender, System.EventArgs e)
            {
                Pach_GetModel_Command Model = new Pach_GetModel_Command();

                Source[] Source;


                if (PachydermAc_PlugIn.Instance.Source(out Source) && !object.ReferenceEquals(FileLocation.SelectedPath, ""))
                {
                    Rhino.RhinoApp.WriteLine("Model geometry not specified... Exiting calculation...");
                }
                ParticleRays[] RTParticles = new ParticleRays[Source.Length];

                Calculate.Enabled = false;
                PachydermAc_PlugIn plugin = PachydermAc_PlugIn.Instance;
                Scene Sc;

                if (PachydermAc_PlugIn.Instance.Geometry_Spec() == 0)
                {
                    Sc = PachTools.Get_NURBS_Scene(0, (double)Air_Temp.Value, 0, 0, false);
                }
                else
                {
                    Sc = PachTools.Get_Poly_Scene(0, (double)Air_Temp.Value, 0, 0, false);
                }

                for (int i = 0; i < Source.Length; i++)
                {
                    if (Source != null)
                    {
                        List <Point3d> L = new List <Point3d>();
                        List <Rhino.Geometry.Point3d> L_RC = new List <Rhino.Geometry.Point3d>();
                        for (int j = 0; j < Source.Length; j++)
                        {
                            L.Add(Source[j].Origin());
                            L_RC.Add(new Rhino.Geometry.Point3d(Source[j].Origin().X, Source[j].Origin().Y, Source[j].Origin().Z));
                        }

                        if (plugin.Geometry_Spec() == 0)
                        {
                            Sc.partition(L_RC, 15);
                            RTParticles[i] = new ParticleRays(Source[i], Sc, (int)RT_Count.Value, CutOffLength());
                        }
                        else if (plugin.Geometry_Spec() == 1)
                        {
                            Sc.partition(L, 15);
                            RTParticles[i] = new ParticleRays(Source[i], Sc, (int)RT_Count.Value, CutOffLength());
                        }
                        RTParticles[i].Begin();
                    }
                    else
                    {
                        Rhino.RhinoApp.WriteLine("Model geometry not specified... Exiting calculation...");
                    }

                    Pachyderm_Acoustic.Visualization.Phonon P;
                    if (ParticleChoice.SelectedIndex == 0)
                    {
                        P = new Tetrahedron();
                    }
                    else if (ParticleChoice.SelectedIndex == 1)
                    {
                        P = new Icosahedron();
                    }
                    else
                    {
                        P = new Geodesic_sphere();
                    }
                    RenderParticles(RTParticles, (double)(Frame_Rate.Value * Seconds.Value), P);
                    Rhino.RhinoDoc.ActiveDoc.Views.Redraw();
                }
                Calculate.Enabled = true;
            }
            private void Calculate_Click(object sender, System.EventArgs e)
            {
                Pach_GetModel_Command Model = new Pach_GetModel_Command();
                Source[] Source;


                if (PachydermAc_PlugIn.Instance.Source(out Source) && !object.ReferenceEquals(FileLocation.SelectedPath, "")) Rhino.RhinoApp.WriteLine("Model geometry not specified... Exiting calculation...");
                ParticleRays[] RTParticles = new ParticleRays[Source.Length];

                Calculate.Enabled = false;
                PachydermAc_PlugIn plugin = PachydermAc_PlugIn.Instance;
                Scene Sc;
                if (PachydermAc_PlugIn.Instance.Geometry_Spec() == 0) Sc = PachTools.Get_NURBS_Scene(0, (double)Air_Temp.Value, 0, 0, false);
                else Sc = PachTools.Get_Poly_Scene(0, (double)Air_Temp.Value, 0, 0, false);
                
                for (int i = 0; i < Source.Length; i++)
                {
                    if (Source != null)
                    {
                        List<Point3d> L = new List<Point3d>();
                        List<Rhino.Geometry.Point3d> L_RC = new List<Rhino.Geometry.Point3d>();
                        for (int j = 0; j < Source.Length; j++)
                        {
                            L.Add(Source[j].Origin());
                            L_RC.Add(new Rhino.Geometry.Point3d(Source[j].Origin().X, Source[j].Origin().Y, Source[j].Origin().Z));
                        }

                        if (plugin.Geometry_Spec() == 0)
                        {
                            Sc.partition(L_RC, 15);
                            RTParticles[i] = new ParticleRays(Source[i], Sc, (int)RT_Count.Value, CutOffLength());
                        }
                        else if (plugin.Geometry_Spec() == 1)
                        {
                            Sc.partition(L, 15);
                            RTParticles[i] = new ParticleRays(Source[i], Sc, (int)RT_Count.Value, CutOffLength());
                        }
                        RTParticles[i].Begin();
                    }
                    else
                    {
                        Rhino.RhinoApp.WriteLine("Model geometry not specified... Exiting calculation...");
                    }

                    Pachyderm_Acoustic.Visualization.Phonon P;
                    if (ParticleChoice.SelectedIndex == 0)
                    { P = new Tetrahedron(); }
                    else if (ParticleChoice.SelectedIndex == 1)
                    {
                        P = new Icosahedron();
                    }
                    else { P = new Geodesic_sphere(); }
                    RenderParticles(RTParticles, (double)(Frame_Rate.Value * Seconds.Value), P);
                    Rhino.RhinoDoc.ActiveDoc.Views.Redraw();
                }
                Calculate.Enabled = true;
            }
Exemple #29
0
        public async void RenderSolids()
        {
            double alpha = 0;

            try
            {
                while (renderFlag)
                {
                    BasePlatonicSolid solid = null;

                    switch ((string)solidComboBox.SelectedItem)
                    {
                    case "Tetrahedron":
                        solid = new Tetrahedron(0, 0, 0, 100);
                        break;

                    case "Hexahedron":
                        solid = new Hexahedron(0, 0, 0, 100);
                        break;

                    case "Octahedron":
                        solid = new Octahedron(0, 0, 0, 100);
                        break;

                    case "Icosahedron":
                        solid = new Icosahedron(0, 0, 0, 100);
                        break;

                    case "Dodecahedron":
                        solid = new Dodecahedron(0, 0, 0, 100);
                        break;

                    default:
                        MessageBox.Show("something wrong");
                        return;
                    }
                    switch ((string)AxisRotationComboBox.SelectedItem)
                    {
                    case "OZ":
                        solid.RotateByZ(alpha);
                        break;

                    case "OY":
                        solid.RotateByY(alpha);
                        break;

                    case "OX":
                        solid.RotateByX(alpha);
                        break;

                    case "OXY":
                        solid.RotateByX(alpha);
                        solid.RotateByY(alpha);
                        break;

                    case "OZY":
                        solid.RotateByY(alpha);
                        solid.RotateByZ(alpha);
                        break;

                    case "OZX":
                        solid.RotateByX(alpha);
                        solid.RotateByZ(alpha);
                        break;

                    case "OXYZ":
                        solid.RotateByY(alpha);
                        solid.RotateByX(alpha);
                        solid.RotateByZ(alpha);
                        break;

                    case "None":
                        break;

                    default:
                        MessageBox.Show("something wrong");
                        return;
                    }

                    if (!checkBox1.Checked)
                    {
                        solid.Scale(double.Parse(scaleBoxFx.Text), double.Parse(scaleBoxFy.Text), double.Parse(scaleBoxFz.Text));
                    }


                    solid.Shift(int.Parse(shiftXBox.Text), int.Parse(shiftYBox.Text), int.Parse(shiftZBox.Text));
                    graphics.Clear(pictureBox1.BackColor);
                    solid.DrawSolid(graphics, double.Parse(coeffBox.Text), double.Parse(angelBox.Text));
                    alpha += Math.PI / 60;
                    await Task.Delay(100);
                }
            }
            catch (Exception e)
            {
                MessageBox.Show("There were exception: " + e.Message);
            }
        }
Exemple #30
0
    void Start()
    {
        Icosahedron icosa = new Icosahedron(radius, norm, depth);

        icosa.InstantiateSurfaces(materials, inverse);
    }
Exemple #31
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            int  transFactor = 3;
            int  index       = 0;
            Mesh seed        = new Mesh();

            var rc = RhinoGet.GetInteger("Select seed value between 1 and 5", false, ref index, 1, 5);

            if (rc != Result.Success)
            {
                return(rc);
            }

            switch (index)
            {
            case 1:
                seed = new Octahedron();
                break;

            case 2:
                seed = new Icosahedron();
                break;

            case 3:
                seed = new Tetrahedron();
                break;

            case 4:
                seed = new Cube();
                break;

            case 5:
                RhinoApp.WriteLine($"{index} not implemented!");
                return(Result.Failure);
            }

            doc.Objects.AddMesh(seed);

            var dual = seed.Dual();

            dual.Translate(new Vector3d(transFactor, 0, 0));
            doc.Objects.AddMesh(dual);

            var kis = seed.Kis();

            kis.Translate(new Vector3d(transFactor * 2, 0, 0));
            doc.Objects.AddMesh(kis);

            var ambo = seed.Ambo();

            ambo.Translate(new Vector3d(transFactor * 3, 0, 0));
            doc.Objects.AddMesh(ambo);

            var zip = seed.Zip();

            zip.Translate(new Vector3d(transFactor * 0, transFactor * 1, 0));
            doc.Objects.AddMesh(zip);

            var join = seed.Join();

            join.Translate(new Vector3d(transFactor * 1, transFactor * 1, 0));
            doc.Objects.AddMesh(join);

            var needle = seed.Needle();

            needle.Translate(new Vector3d(transFactor * 2, transFactor * 1, 0));
            doc.Objects.AddMesh(needle);

            var truncate = seed.Truncate();

            truncate.Translate(new Vector3d(transFactor * 3, transFactor * 1, 0));
            doc.Objects.AddMesh(truncate);

            var ortho = seed.Ortho();

            ortho.Translate(new Vector3d(transFactor * 0, transFactor * 2, 0));
            doc.Objects.AddMesh(ortho);

            var expand = seed.Expand();

            expand.Translate(new Vector3d(transFactor * 1, transFactor * 2, 0));
            doc.Objects.AddMesh(expand);

            var meta = seed.Meta();

            meta.Translate(new Vector3d(transFactor * 2, transFactor * 2, 0));
            doc.Objects.AddMesh(meta);

            var bevel = seed.Bevel();

            bevel.Translate(new Vector3d(transFactor * 3, transFactor * 2, 0));
            doc.Objects.AddMesh(bevel);

            doc.Views.Redraw();

            return(Result.Success);
        }