/// <summary> /// return theta for a given z value /// </summary> /// <param name="z"></param> /// <returns></returns> double ThetaRadAtForNonConstant(double z) { var tw0 = new GeometryLib.PointCyl(); var tw1 = new GeometryLib.PointCyl(); double theta = 0; bool zFound = false; for (int i = 0; i < _twist.Count - 1; i++) { if ((z >= _twist[i].Z) && (z <= _twist[i + 1].Z)) { tw0 = _twist[i]; tw1 = _twist[i + 1]; zFound = true; } if (zFound) { break; } } if (zFound) { if ((tw1.Z - tw0.Z) < float.Epsilon) { theta = tw1.ThetaRad; } else { theta = (z - tw0.Z) * (tw1.ThetaRad - tw0.ThetaRad) / (tw1.Z - tw0.Z) + tw0.ThetaRad; } } return(theta); }
CylData Init() { var cd = new CylData(); var vlist = new List <IGeometryLib.IPointCyl>(); var v1 = new GeometryLib.PointCyl(0, 0, 1); vlist.Add(v1); vlist.Add(v1); cd.AddRange(vlist); return(cd); }
void OpenTXT(string fileName) { List <string> file = FileIO.ReadDataTextFile(fileName); _twist = new List <GeometryLib.PointCyl>(); if (file.Count >= 2) { string[] splitter = FileIO.Splitter; if (file[0].Trim() == TwistProfile.Name) { TwistType tempEnum = TwistType.Progressive; if (Enum.TryParse <TwistType>(file[1], true, out tempEnum)) { _type = tempEnum; } else { _type = TwistType.Progressive; } for (int i = 4; i < file.Count; i++) { string[] splitLine = file[i].Split(splitter, StringSplitOptions.RemoveEmptyEntries); var twist = new GeometryLib.PointCyl(); if (splitLine.Length > 1) { double result = 0; if (double.TryParse(splitLine[0].Trim(), out result)) { twist.Z = result; } result = 0; if (double.TryParse(splitLine[1].Trim(), out result)) { twist.ThetaRad = result; } _twist.Add(twist); } } } } }