本文整理汇总了C#中UV.Normalize方法的典型用法代码示例。如果您正苦于以下问题:C# UV.Normalize方法的具体用法?C# UV.Normalize怎么用?C# UV.Normalize使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UV
的用法示例。
在下文中一共展示了UV.Normalize方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Stream
private void Stream(ArrayList data, UV UV)
{
data.Add(new Snoop.Data.ClassSeparator(typeof(UV)));
data.Add(new Snoop.Data.Uv("Basis U", UV.BasisU));
data.Add(new Snoop.Data.Uv("Basis V", UV.BasisV));
//data.Add(new Snoop.Data.Bool("Is normalized", UV.IsNormalized));
//data.Add(new Snoop.Data.Bool("Is zero", UV.IsZero));
//data.Add(new Snoop.Data.Double("Length", UV.));
data.Add(new Snoop.Data.Uv("Normalized", UV.Normalize()));
data.Add(new Snoop.Data.Double("U", UV.U));
data.Add(new Snoop.Data.Double("V", UV.V));
data.Add(new Snoop.Data.Uv("Zero", UV.Zero));
}
示例2: CreateIShapeProfileDefIfPossible
/// <summary>
/// Determines if a curveloop can be exported as an I-Shape profile.
/// </summary>
/// <param name="exporterIFC">The exporter.</param>
/// <param name="profileName">The name of the profile.</param>
/// <param name="curveLoop">The curve loop.</param>
/// <param name="origPlane">The plane of the loop.</param>
/// <param name="projDir">The projection direction.</param>
/// <returns>The IfcIShapeProfileDef, or null if not possible.</returns>
/// <remarks>This routine works with I-shaped curveloops projected onto origPlane, in either orientation;
/// it does not work with H-shaped curveloops.</remarks>
private static IFCAnyHandle CreateIShapeProfileDefIfPossible(ExporterIFC exporterIFC, string profileName, CurveLoop curveLoop, Plane origPlane,
XYZ projDir)
{
IFCFile file = exporterIFC.GetFile();
if (curveLoop.IsOpen())
return null;
if (curveLoop.Count() != 12 && curveLoop.Count() != 16)
return null;
// All curves must be lines, except for 4 optional fillets; get direction vectors and start points.
XYZ xDir = origPlane.XVec;
XYZ yDir = origPlane.YVec;
// The list of vertices, in order. startVertex below is the upper-right hand vertex, in UV-space.
IList<UV> vertices = new List<UV>();
// The directions in UV of the line segments. directions[ii] is the direction of the line segment starting with vertex[ii].
IList<UV> directions = new List<UV>();
// The lengths in UV of the line segments. lengths[ii] is the length of the line segment starting with vertex[ii].
IList<double> lengths = new List<double>();
// turnsCCW[ii] is true if directions[ii+1] is clockwise relative to directions[ii] in UV-space.
IList<bool> turnsCCW = new List<bool>();
IList<Arc> fillets = new List<Arc>();
IList<int> filletPositions = new List<int>();
int idx = 0;
int startVertex = -1;
int startFillet = -1;
UV upperRight = null;
double lowerBoundU = 1e+30;
double upperBoundU = -1e+30;
foreach (Curve curve in curveLoop)
{
if (!(curve is Line))
{
if (!(curve is Arc))
return null;
fillets.Add(curve as Arc);
filletPositions.Add(idx); // share the index of the next line segment.
continue;
}
Line line = curve as Line;
XYZ point = line.GetEndPoint(0);
UV pointProjUV = GeometryUtil.ProjectPointToPlane(origPlane, projDir, point);
if (pointProjUV == null)
return null;
pointProjUV = UnitUtil.ScaleLength(pointProjUV);
if ((upperRight == null) || ((pointProjUV.U > upperRight.U - MathUtil.Eps()) && (pointProjUV.V > upperRight.V - MathUtil.Eps())))
{
upperRight = pointProjUV;
startVertex = idx;
startFillet = filletPositions.Count;
}
if (pointProjUV.U < lowerBoundU)
lowerBoundU = pointProjUV.U;
if (pointProjUV.U > upperBoundU)
upperBoundU = pointProjUV.U;
vertices.Add(pointProjUV);
XYZ direction3d = line.Direction;
UV direction = new UV(direction3d.DotProduct(xDir), direction3d.DotProduct(yDir));
lengths.Add(UnitUtil.ScaleLength(line.Length));
bool zeroU = MathUtil.IsAlmostZero(direction.U);
bool zeroV = MathUtil.IsAlmostZero(direction.V);
if (zeroU && zeroV)
return null;
// Accept only non-rotated I-Shapes.
if (!zeroU && !zeroV)
return null;
direction.Normalize();
if (idx > 0)
{
if (!MathUtil.IsAlmostZero(directions[idx - 1].DotProduct(direction)))
return null;
turnsCCW.Add(directions[idx - 1].CrossProduct(direction) > 0);
}
directions.Add(direction);
//.........这里部分代码省略.........