注:定义符合ISO/CD 10303-42:1992
此函数返回输入向量的标量倍数。它接受一个标量和一个向量作为输入,这个向量可以是一个方向,也可以是一个向量。输出是与输入向量相同单位的向量,如果输入方向,则为无单位向量。如果任一输入参数未定义,则返回的向量也未定义。
注:函数改编自ISO 10303-42中定义的标量乘向量。
IFC1.5中的新函数
EXPRESS Specification
FUNCTION IfcScalarTimesVector (Scalar : REAL; Vec : IfcVectorOrDirection) : IfcVector; LOCAL V : IfcDirection; Mag : REAL; Result : IfcVector; END_LOCAL; IF NOT EXISTS (Scalar) OR NOT EXISTS (Vec) THEN RETURN (?) ; ELSE IF ‘IFCGEOMETRYRESOURCE.IFCVECTOR‘ IN TYPEOF (Vec) THEN V := Vec\IfcVector.Orientation; Mag := Scalar * Vec\IfcVector.Magnitude; ELSE V := Vec; Mag := Scalar; END_IF; IF (Mag < 0.0 ) THEN REPEAT i := 1 TO SIZEOF(V.DirectionRatios); V.DirectionRatios[i] := -V.DirectionRatios[i]; END_REPEAT; Mag := -Mag; END_IF; Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector(IfcNormalise(V), Mag); END_IF; RETURN (Result); END_FUNCTION;
原文:https://www.cnblogs.com/herd/p/14459862.html