private void GtnGen_Click(object sender, EventArgs e) { List <Point> points = new List <Point>(); float RadiusC = (float)(System.Convert.ToDouble(textBoxRadiusC.Text)); float ZFromC = (float)(System.Convert.ToDouble(textBoxZFromC.Text)); float ZToC = (float)(System.Convert.ToDouble(textBoxZToC.Text)); float ThetaFromC = (float)(System.Convert.ToDouble(textBoxThetaFromC.Text)); float ThetaToC = (float)(System.Convert.ToDouble(textBoxThetaToC.Text)); float RadiusS = (float)(System.Convert.ToDouble(textBoxRadiusS.Text)); float ZStartS = (float)(System.Convert.ToDouble(textBoxZStartS.Text)); float ThetaFromS = (float)(System.Convert.ToDouble(textBoxThetaFromS.Text)); float ThetaToS = (float)(System.Convert.ToDouble(textBoxThetaToS.Text)); float LambsaFromS = (float)(System.Convert.ToDouble(textBoxLambdaFromS.Text)); float LambdaToS = (float)(System.Convert.ToDouble(textBoxLambdaToS.Text)); for (float z = ZFromC; z < ZToC; z++) { for (float t = ThetaFromC; t < ThetaToC; t++) { points.Add(ConvertCoordinate.CylindricalToCartesian(t, RadiusC, z, 0)); } } for (float l = LambsaFromS; l < LambdaToS; l++) { for (float t = ThetaFromS; t < ThetaToS; t = t + 1) { points.Add(ConvertCoordinate.SphericalToCartesian(RadiusS, l, t, ZStartS)); } } Write.PCDFile(ref points); points.Clear(); }
private void GtnGen_Click(object sender, EventArgs e) { #region Generate points List <PointEx> pointsEx = new List <PointEx>(); Random random = new Random(); float theta_steps = (float)(System.Convert.ToDouble(textBoxThetaStepSize.Text)); float lambda_steps = (float)(System.Convert.ToDouble(textBoxLambdaStepSizeS.Text)); float z_steps_c = (float)(System.Convert.ToDouble(textBoxZStepSizeC.Text)); float z_from_c = (float)System.Convert.ToDouble(textBoxZfromC.Text); float z_to_c = (float)System.Convert.ToDouble(textBoxZToC.Text); float radius = (float)System.Convert.ToDouble(textBoxRadius.Text); ModelVolume.updated = true; ModelVolume.volumeS = (2 * Math.PI * radius * radius * radius) / 3; ModelVolume.volumeC = Math.PI * radius * radius * (z_to_c - z_from_c); if (checkBoxNoise.Checked)//generate points with noise { int percentage = comboBoxPercentage.SelectedIndex; for (float z = z_from_c; z <= z_to_c; z = z + z_steps_c) { for (float t = 0; t < 360; t = t + theta_steps) { pointsEx.Add(ConvertCoordinate.CylindricalToCartesianEx(t, radius + RandGen(random, (int)radius, percentage), z, 0)); } } for (float l = lambda_steps; l < 90; l = l + lambda_steps) { for (float t = 0; t < 360; t = t + theta_steps) { pointsEx.Add(ConvertCoordinate.SphericalToCartesianEx(radius + RandGen(random, (int)radius, percentage), l, t, z_to_c)); } } pointsEx.Add(ConvertCoordinate.SphericalToCartesianEx(radius + RandGen(random, (int)radius, percentage), 90, 0, z_to_c)); // Bottom point } else//whiout noise { for (float z = z_from_c; z <= z_to_c; z = z + z_steps_c) { for (float t = 0; t < 360; t = t + theta_steps) { pointsEx.Add(ConvertCoordinate.CylindricalToCartesianEx(t, radius, z, 0)); } } for (float l = lambda_steps; l < 90; l = l + lambda_steps) { for (float t = 0; t < 360; t = t + theta_steps) { pointsEx.Add(ConvertCoordinate.SphericalToCartesianEx(radius, l, t, z_to_c)); } } pointsEx.Add(ConvertCoordinate.SphericalToCartesianEx(radius, 90, 0, z_to_c)); // Bottom point } #endregion #region Generate faces for points List <Fase> faces = new List <Fase>(); int N = (int)(360 / theta_steps); int pointCount = pointsEx.Count; Calculate.GetFaces(ref faces, ref pointsEx, N, Model.Complete_Model); #endregion Write.PCDFileEx(ref pointsEx); Write.OBJFileEx(ref pointsEx, ref faces, "Points"); Write.ModelFileEx(ref pointsEx, "PointsEx"); pointsEx.Clear(); faces.Clear(); }