DEF IsRealVect2 = IsSeqOf:IsReal; IsRealVect2:<1.2,1.0,3.0,0.0>; IsRealVect2:<<1,2>,1.0>; DEF IsFunVect2 = IsSeqOf:IsFun; DEF IsVect2 = OR ~ [IsRealVect,IsFunVect]; DEF v1=<1.0,0.0,2.0>; DEF v2=<2.0,1.0,0.0>; v1; v2; ; TRANS:; AA:+:(TRANS:); DEF vectSum2 = AA:+ ~ TRANS; vectSum2:; DEF VectNeg2 = AA:-; VectNeg2:v1; DEF vectDiff2 = AA:- ~ TRANS; vectDiff2:; DEF Sqr = ID * ID; DEF VectNorm = SQRT ~ + ~ AA:Sqr; SQRT:(+:(AA:Sqr:v1)); DEF scalVectProd = AA:* ~ DISTL; v1; DISTL:<2,v1>; AA:*:(DISTL:<2,v1>); DEF InnerProd = + ~ AA:* ~ TRANS; v1; v2; TRANS:; +:(AA:*:(TRANS:)); DEF UnitVect (v::IsVect) = ScalVectProd:<1 / VectNorm:v, v>; DEF VectProd (u,v::IsVect) = WHERE w1 = (u2 * v3) - (u3 * v2), w2 = (u3 * v1) - (u1 * v3), w3 = (u1 * v2) - (u2 * v1), u1 = s1:u, u2 = s2:u, u3 = s3:u, v1 = s1:v, v2 = s2:v, v3 = s3:v END; <1,2,3> vectSum <10,20,30>; <1,2,3> vectDiff <10,20,30>; <1,0,0> VectProd <1,1,0>; 2 scalVectProd <11,22,33>; UnitVect:<10,20,30>; (VectNorm ~ UnitVect):<10,20,30>; DEF u = mkvector:<0,0.5,0>:<0.5,0,0> DEF v = mkvector:<0.5,0,0>:<1,1,0> DEF w = mkvector:<1,1,0>:<1,1.5,0.5> DEF somma = mkvector:<0,0.5,0>:< out=STRUCT:< u,v,w,somma, mkframe > % 3 vettori e la somma ultimi 2 % def v0=<0,0.5,0>; def v1=<0.5,-0.5,0>; def v2=< 0.5 , 1 , 0 >; def vsomma=VectSum:; ; % dei punti ottenuti come azione affine dell'origine e vetttori % % (0,v0)->p0 % def p0=VectSum:<<0,0,0>,v0>; % (p0,v1)->p1 % def p1=VectSum:; % (p1,v2)->p2 % def p2=VectSum:; % (p0,v2)->p1b % def p1b=VectSum:; % (p1b,v1)->p2b % def p2b=VectSum:; % (p0,vsomma)-> psomma % def psomma=VectSum:; ; % disegno % DEF p0p1 = mkvector:p0:p1 color cyan; DEF p1p2 = mkvector:p1:p2 color magenta; DEF p0p1b = mkvector:p0:p1b color cyan; DEF p1bp2b = mkvector:p1b:p2b color magenta; DEF p0psomma = mkvector:p0:psomma color yellow; DEF OUT=STRUCT:< mkframe, p0p1,p1p2,p0p1b,p1bp2b,p0psomma >; OUT;