예제 #1
0
 void handleDragEnd(DragEndDetails details, bool?isClosing = null)
 {
     animationCurve = new _BottomSheetSuspendedCurve(
         widget.route.animation.value,
         curve: material_._modalBottomSheetCurve
         );
 }
        public override void Run(RenderControl renderer)
        {
            var ellipse = SketchBuilder.MakeEllipse(GP.Origin(), 10, 5, GP.DX(), GP.DZ());

            renderer.ShowShape(ellipse, Vector3.Blue);

            ParametricCurve pc = new ParametricCurve(ellipse);

            var paramsList = pc.SplitByUniformLength(1, 0.01);

            uint itemCount = (uint)paramsList.Count;
            var  points    = new ParticleSceneNode(itemCount, Vector3.Green, 5.0f);
            var  lines     = new SegmentsSceneNode(itemCount, Vector3.Red, 2);

            Random random = new Random();

            for (int ii = 0; ii < paramsList.Count; ++ii)
            {
                var value = pc.D1(paramsList[ii]);
                var pos   = value.GetPoint();
                var dir   = value.GetVectors()[0];
                var end   = new GPnt(pos.XYZ().Added(dir.XYZ()));

                lines.SetPositions((uint)ii, Vector3.From(pos), Vector3.From(end));
                lines.SetColors((uint)ii, Vector3.Red, Vector3.From(random.NextDouble(), random.NextDouble(), random.NextDouble()));

                points.SetPosition((uint)ii, Vector3.From(pos));
            }

            renderer.ShowSceneNode(points);
            renderer.ShowSceneNode(lines);
        }
예제 #3
0
        public override void SetParametricRecruitmentControls(ParametricRecruitment currentRecruit, Panel panelRecruitModelParameter)
        {
            ParametricCurve currentParametricCurveRecruit = (ParametricCurve)currentRecruit;

            DataBindTextBox(this.textBoxAlpha, currentParametricCurveRecruit, "alpha");
            DataBindTextBox(this.textBoxBeta, currentParametricCurveRecruit, "beta");
            DataBindTextBox(this.textBoxVariance, currentParametricCurveRecruit, "variance");

            this.textBoxAlpha.PrevValidValue    = currentParametricCurveRecruit.alpha.ToString();
            this.textBoxBeta.PrevValidValue     = currentParametricCurveRecruit.beta.ToString();
            this.textBoxVariance.PrevValidValue = currentParametricCurveRecruit.variance.ToString();

            if (currentParametricCurveRecruit.GetType() == typeof(ParametricShepherdCurve))
            {
                this.labelKparm.Visible   = true;
                this.textBoxKParm.Visible = true;
                DataBindTextBox(this.textBoxKParm, currentParametricCurveRecruit, "kParm");
                this.textBoxKParm.PrevValidValue = ((ParametricShepherdCurve)currentParametricCurveRecruit).kParm.ToString();
            }

            if (currentParametricCurveRecruit.autocorrelated)
            {
                this.labelPhi.Enabled            = true;
                this.labelLastResidual.Enabled   = true;
                this.textBoxPhi.Enabled          = true;
                this.textBoxLastResidual.Enabled = true;

                DataBindTextBox(this.textBoxPhi, currentParametricCurveRecruit, "phi");
                DataBindTextBox(this.textBoxLastResidual, currentParametricCurveRecruit, "lastResidual");
                this.textBoxPhi.PrevValidValue          = currentParametricCurveRecruit.phi.Value.ToString();
                this.textBoxLastResidual.PrevValidValue = currentParametricCurveRecruit.lastResidual.Value.ToString();
            }

            base.SetParametricRecruitmentControls(currentRecruit, panelRecruitModelParameter);
        }
예제 #4
0
        static void GenerateCurve()
        {
            Point           pt    = new Point(0, 0, 0);
            ParametricCurve curve = new ParametricCurve(0, 0, 0);

            curve.GeneratePoints(100);
            File.WriteAllText("GeneratedPoints.csv", curve.GeneratedPointsToCSV());
        }
        public override void Run(RenderControl renderer)
        {
            string fileName = GetResourcePath("Holes.stp");
            var    shape    = StepIO.Open(fileName);

            if (shape == null)
            {
                return;
            }


            var face    = shape.FindChild(EnumTopoShapeType.Topo_FACE, 148);
            var surface = new ParametricSurface(face);

            var wireExp = new WireExplor(face);
            var wires   = wireExp.GetInnerWires();

            foreach (var wire in wires)
            {
                // Show wire
                renderer.ShowShape(wire, Vector3.Red);

                var curve     = new ParametricCurve(wire);
                var paramList = curve.SplitByUniformLength(1, 0.01);

                var  lines = new SegmentsSceneNode((uint)paramList.Count, Vector3.Green, 2);
                uint idx   = 0;
                foreach (var p in paramList)
                {
                    var pt       = curve.Value(p);
                    var pointSur = new ExtremaPointSurface();
                    if (pointSur.Initialize(surface, pt, GP.Resolution(), GP.Resolution()))
                    {
                        var uv     = pointSur.GetParameter(0);
                        var normal = surface.GetNormal(uv.X(), uv.Y());

                        lines.SetPositions(idx++, Vector3.From(pt), Vector3.From(pt.XYZ().Added(normal.XYZ())));
                    }
                }
                lines.UpdateBoundingBox();
                renderer.ShowSceneNode(lines);
            }

            // Show face
            var faceMaterial = MeshStandardMaterial.Create("pbr.face");

            faceMaterial.SetColor(Vector3.LightGray);
            faceMaterial.SetFaceSide(EnumFaceSide.DoubleSide);
            var faceNode = BrepSceneNode.Create(face, faceMaterial, null);

            faceNode.SetDisplayFilter(EnumShapeFilter.Face);
            renderer.ShowSceneNode(faceNode);
        }
예제 #6
0
        public static double[][] Divide(ParametricCurve crv, int divNum)
        {
            List <double[]> rs   = new List <double[]>();
            double          unit = 1 / (double)divNum;

            for (int i = 0; i <= divNum; i++)
            {
                double t = unit * i;
                rs.Add(crv.ParameterAt(t));
            }

            return(rs.ToArray());
        }
예제 #7
0
        public static double[][] GenerateSegments(ParametricCurve crv, int divNum)
        {
            List <double[]> rs = new List <double[]>();

            double[][] pts = Divide(crv, divNum);

            for (int i = 0; i < divNum; i++)
            {
                double[] ln = pts[i].Concat(pts[i + 1]).ToArray();
                rs.Add(ln);
            }

            return(rs.ToArray());
        }
예제 #8
0
 private static double[] GetParametricType4(ParametricCurve curve)
 {
     double[] result = new double[CurveResolution];
     for (int i = 0; i < result.Length; i++)
     {
         double val = i / CurveResolutionD;
         if (val >= curve.d)
         {
             result[i] = Math.Pow(curve.a * val + curve.b, curve.g) + curve.c;
         }
         else
         {
             result[i] = curve.c * val + curve.f;
         }
     }
     return(result);
 }
예제 #9
0
        public static double[] FromParametricCurve(ParametricCurve curve)
        {
            switch (curve.type)
            {
            case 0: return(GetParametricType0(curve));

            case 1: return(GetParametricType1(curve));

            case 2: return(GetParametricType2(curve));

            case 3: return(GetParametricType3(curve));

            case 4: return(GetParametricType4(curve));

            //This should never happen:
            default: return(new double[] { 0.0 });
            }
        }
        public override void Run(RenderControl render)
        {
            GPntList points   = new GPntList();
            string   fileName = GetResourcePath("data/CableViewInfo.txt");

            using (StreamReader reader = File.OpenText(fileName))
            {
                while (!reader.EndOfStream)
                {
                    var line  = reader.ReadLine();
                    var items = line.Split(',');
                    if (items.Length < 3)
                    {
                        continue;
                    }

                    double x = double.Parse(items[0]);
                    double y = double.Parse(items[1]);
                    double z = double.Parse(items[2]);

                    points.Add(new GPnt(x, y, z));
                }
            }

            var path = SketchBuilder.MakeBSpline(points);

            render.ShowShape(path, ColorTable.Red);

            var curve = new ParametricCurve(path);
            var rt    = curve.D1(curve.FirstParameter());

            var position = rt.GetPoint();
            var dir      = new GDir(rt.GetVectors()[0]);
            var sketch   = SketchBuilder.MakeCircle(position, 1, dir);
            var pipe     = FeatureTool.Sweep(sketch, path, EnumGeomFillTrihedron.ConstantNormal);

            if (pipe != null)
            {
                render.ShowShape(pipe, new Vector3(0.8f));
            }
        }
        public override void Run(RenderControl render)
        {
            var fileName = GetResourcePath("models/YONGSHENGDA_9998.igs");
            var shape    = ShapeIO.Open(fileName);

            if (shape == null)
            {
                return;
            }

            var face  = shape.FindChild(EnumTopoShapeType.Topo_FACE, 12);
            var edges = face.GetChildren(EnumTopoShapeType.Topo_EDGE);

            var wire = SketchBuilder.MakeWire(edges);

            if (wire == null)
            {
                return;
            }



            var curve = new ParametricCurve();

            curve.Initialize(wire);
            var ulist = curve.SplitByUniformLength(1, 0.2);


            var node = new ParticleSceneNode((uint)ulist.Count, ColorTable.Red, 2);

            for (int ii = 0; ii < ulist.Count; ++ii)
            {
                node.SetPosition((uint)ii, Vector3.From(curve.Value(ulist[ii])));
            }
            node.UpdateBoundingBox();

            render.ShowShape(wire, ColorTable.GoldEnrod);
            render.ShowSceneNode(node);
        }
        //TODO:REFACTOR
        private void LoadRecruitModelParameterControls(RecruitmentModel currentRecruitSelection)
        {
            if (currentRecruitSelection is EmpiricalRecruitment)
            {
                if (((EmpiricalRecruitment)currentRecruitSelection).subType == EmpiricalType.Empirical)
                {
                    EmpiricalRecruitment currentEmpiricalRecruitSelection = (EmpiricalRecruitment)currentRecruitSelection;

                    ControlRecruitmentEmpirical empiricalParameterControls = new ControlRecruitmentEmpirical();

                    empiricalParameterControls.SetEmpiricalRecruitmentControls(currentEmpiricalRecruitSelection, panelRecruitModelParameter);
                    empiricalParameterControls.collectionAgeproRecruitmentModels = this.collectionAgeproRecruitmentModels;
                    empiricalParameterControls.collectionSelectedIndex           = this.comboBoxRecruitSelection.SelectedIndex;
                }
                else if (((EmpiricalRecruitment)currentRecruitSelection).subType == EmpiricalType.TwoStage)
                {
                    TwoStageEmpiricalRecruitment currentTwoStageEmpiricalRecruitSelection =
                        (TwoStageEmpiricalRecruitment)currentRecruitSelection;

                    //Load TwoStage Controls
                    ControlRecruitmentEmpiricalTwoStage twoStageControls = new ControlRecruitmentEmpiricalTwoStage();
                    twoStageControls.SetTwoStageEmpiricalRecruitmentControls(currentTwoStageEmpiricalRecruitSelection,
                                                                             panelRecruitModelParameter);
                    twoStageControls.collectionAgeproRecruitmentModels = this.collectionAgeproRecruitmentModels;
                    twoStageControls.collectionSelectedIndex           = this.comboBoxRecruitSelection.SelectedIndex;
                }
                else if (((EmpiricalRecruitment)currentRecruitSelection).subType == EmpiricalType.CDFZero)
                {
                    EmpiricalCDFZero currentEmpiricalCDFZeroRecruitmentSelection = (EmpiricalCDFZero)currentRecruitSelection;

                    ControlRecruitmentEmpirical empiricalCDFZeroControls = new ControlRecruitmentEmpirical();

                    empiricalCDFZeroControls.SetEmpiricalCDFZeroRecruitmentControls(
                        currentEmpiricalCDFZeroRecruitmentSelection, panelRecruitModelParameter);
                    empiricalCDFZeroControls.collectionAgeproRecruitmentModels = this.collectionAgeproRecruitmentModels;
                    empiricalCDFZeroControls.collectionSelectedIndex           = this.comboBoxRecruitSelection.SelectedIndex;
                }
                else if (((EmpiricalRecruitment)currentRecruitSelection).subType == EmpiricalType.Fixed)
                {
                    FixedEmpiricalRecruitment currentFixedRecruitmentSelection = (FixedEmpiricalRecruitment)currentRecruitSelection;

                    ControlRecruitmentFixed fixedRecruitmentControls = new ControlRecruitmentFixed();
                    fixedRecruitmentControls.seqYears = this.seqRecruitYears;
                    fixedRecruitmentControls.SetFixedRecruitmentControls(currentFixedRecruitmentSelection, panelRecruitModelParameter);
                    fixedRecruitmentControls.collectionAgeproRecruitmentModels = this.collectionAgeproRecruitmentModels;
                    fixedRecruitmentControls.collectionSelectedIndex           = this.comboBoxRecruitSelection.SelectedIndex;
                }
            }
            else if (currentRecruitSelection is ParametricRecruitment)
            {
                if (((ParametricRecruitment)currentRecruitSelection).subtype == ParametricType.Curve)
                {
                    ParametricCurve currentParametricCurveRecruit = (ParametricCurve)currentRecruitSelection;

                    ControlRecruitmentParametricCurve parametricCurveControls = new ControlRecruitmentParametricCurve();

                    parametricCurveControls.collectionAgeproRecruitmentModels = this.collectionAgeproRecruitmentModels;
                    parametricCurveControls.collectionSelectedIndex           = this.comboBoxRecruitSelection.SelectedIndex;
                    parametricCurveControls.SetParametricRecruitmentControls(currentParametricCurveRecruit, panelRecruitModelParameter);
                }
                else if (((ParametricRecruitment)currentRecruitSelection).subtype == ParametricType.Lognormal)
                {
                    ParametricLognormal currentParametricLognormalRecruit = (ParametricLognormal)currentRecruitSelection;

                    ControlRecruitmentParametricLognormal lognormalControls = new ControlRecruitmentParametricLognormal();

                    lognormalControls.SetParametricRecruitmentControls(currentParametricLognormalRecruit, panelRecruitModelParameter);
                    lognormalControls.collectionAgeproRecruitmentModels = this.collectionAgeproRecruitmentModels;
                    lognormalControls.collectionSelectedIndex           = this.comboBoxRecruitSelection.SelectedIndex;
                }
            }
            else if (currentRecruitSelection is PredictorRecruitment)
            {
                PredictorRecruitment currentPredictorRecruitSelection = (PredictorRecruitment)currentRecruitSelection;

                ControlRecruitmentPredictor predictorParameterControls = new ControlRecruitmentPredictor();

                predictorParameterControls.seqYears = this.seqRecruitYears;
                predictorParameterControls.collectionSelectedIndex           = this.comboBoxRecruitSelection.SelectedIndex;
                predictorParameterControls.collectionAgeproRecruitmentModels = this.collectionAgeproRecruitmentModels;
                predictorParameterControls.SetPredictorRecruitmentcontrols(currentPredictorRecruitSelection, panelRecruitModelParameter);
            }
            else if (currentRecruitSelection is MarkovMatrixRecruitment)
            {
                MarkovMatrixRecruitment currentRecruit = (MarkovMatrixRecruitment)currentRecruitSelection;

                ControlRecruitmentMarkovMatrix markovControls = new ControlRecruitmentMarkovMatrix();

                markovControls.SetRecruitmentControls(currentRecruit, panelRecruitModelParameter);
                markovControls.collectionAgeproRecruitModels = this.collectionAgeproRecruitmentModels;
                markovControls.collectionSelectedIndex       = this.comboBoxRecruitSelection.SelectedIndex;
            }
            else
            {
                panelRecruitModelParameter.Controls.Clear();
            }
        }
예제 #13
0
 private static double[] GetParametricType0(ParametricCurve curve)
 {
     return(FromGamma(curve.g));
 }
        public override void Run(RenderControl render)
        {
            double dS           = 19.0;      //弹簧螺距mm
            double dR           = 11.25;     //1/2弹簧中径mm
            double dr1          = 0.9;       //内层钢丝半径mm
            double dr2          = 0.9;       //外层钢丝半径mm
            double dr           = dr1 + dr2; //钢丝轴心分布半径mm
            double da1          = 0.29;      //弹簧螺旋角rad
            double dw0          = 1;         //卷簧轴转速rad/s
            double dw1          = 5;         //拧索轴转速rad/s
            int    nOutterCount = 5;         //外层钢丝股数

            {
                // create the intter path
                GPntList pts = new GPntList();

                for (double t = 0; t < 10; t += 0.1)
                {
                    pts.Add(getIntterMultiSpingCoord(t, dS, dR, dw0));
                }
                var path = SketchBuilder.MakeBSpline(pts);

                // Get the sketch position and direction
                var curve = new ParametricCurve(path);
                var rt    = curve.D1(curve.FirstParameter());

                var position = rt.GetPoint();
                var dir      = new GDir(rt.GetVectors()[0]);
                var sketch   = SketchBuilder.MakeCircle(position, dr1, dir);

                // Create pipe
                var pipe = FeatureTool.Sweep(sketch, path, EnumGeomFillTrihedron.CorrectedFrenet);

                render.ShowShape(pipe, new Vector3(0.8f));
            }


            Vector3[] colors = new Vector3[] { new Vector3(1.0f, 0, 0),
                                               new Vector3(1, 1, 0),
                                               new Vector3(0.5f, 1, 0),
                                               new Vector3(0, 1, 64 / 255.0f),
                                               new Vector3(0, 1, 1) };


            // create the outter path
            for (int i = 0; i < nOutterCount; i++)
            {
                GPntList pts = new GPntList();
                for (double t = 0; t < 10; t += 0.1)
                {
                    pts.Add(getOutterMultiSpingCoord(t, dS, dR, dr, da1, dw0, dw1, i * 2 * Math.PI / nOutterCount));
                }
                var path = SketchBuilder.MakeBSpline(pts);

                // Get the sketch position and direction
                var curve = new ParametricCurve(path);
                var rt    = curve.D1(curve.FirstParameter());

                var position = rt.GetPoint();
                var dir      = new GDir(rt.GetVectors()[0]);

                var sketch = SketchBuilder.MakeCircle(position, dr2, dir);

                // Create pipe
                var pipe = FeatureTool.Sweep(sketch, path, EnumGeomFillTrihedron.CorrectedFrenet);

                render.ShowShape(pipe, colors[i]);
            }
        }
예제 #15
0
 void handleDragStart(DragStartDetails details)
 {
     animationCurve = Curves.linear;
 }
 //internal int end;
 public override void GetTagData(byte[] iccData, int index, ICCHeader header)
 {
     FunctionType = HighEndianReader.GetUInt16(iccData, index, IsLittleEndian);
     //2 bytes reserved
     Curve = new ParametricCurve(FunctionType, iccData, index, IsLittleEndian);
 }
예제 #17
0
 public void Awake()
 {
     parametricCurve = (ParametricCurve)target as ParametricCurve;
 }