Google Classroom
GeoGebraGeoGebra Classroom

Advanced example 3: Colored vector field 3D

Script Setup

#A = (0.5, 0.5, 0) #B = (0.5, 0.5, 0) #C = (0.1, 0.5, 0) #D = (0, 0.5, 0) #A = (0.5, 0.5, 0) #B = (0.5, 0.5, 0) #C = (0.5, 0.5, 0) #D = (0.5, 0, 0) #A = (0.5, 0, 0.5) #B = (0.5, 0, 0.5) #C = (0.5, 0, 0.5) #D = (0, 0, 0.5) A = (1, 0.5, 0.5) B = (0.5, 0.5, 0.5) C = (0.75, 1, 0.666) D = (0.8, 1, 0.333) functionRed(x) = x(A) + x(B) * cos(2pi(x(C) * x + x(D))) functionGreen(x) = y(A) + y(B) * cos(2pi(y(C) * x + y(D))) functionBlue(x) = z(A) + z(B) * cos(2pi(z(C) * x + z(D))) map(v, x, y, z, w) = z + (v - x) * (w- z) / (y - x) Fx(x, y, z) = (x-2.5)/((x-2.5)^2 + (y)^2+ (z)^2) - (x+2.5)/((x+2.5)^2 + (y)^2+ (z)^2) Fy(x, y, z) = (y-0)/((x-2.5)^2 + (y)^2+ (z)^2)- (y+0)/((x+2.5)^2 + (y)^2+ (z)^2) Fz(x, y, z) = (z-0)/((x-2.5)^2 + (y)^2+ (z)^2)- (z+0)/((x+2.5)^2 + (y)^2+ (z)^2) L = Sequence(-4 + 8k / 7, k, 0, 7) #Sequence(k, k, -4, 4, 2) LP = Flatten( Zip( Zip( Zip( (a, b, c), a, L ), b, L ), c, L ) ) s = 1 VF0 = Zip(Translate(s*(Fx(P), Fy(P), Fz(P)), P), P, LP) VL = Zip(abs(V), V, VF0) VA = Zip(map(val, 0, 1*Max(VL), 1, 0), val, VL) VF = Zip(Translate(UnitVector(s*(Fx(P), Fy(P), Fz(P))), P), P, LP) m = Length(VF) Execute(Zip("Q"+k+" = Element(VF, "+k+")", k, 1..m)) Execute(Zip("SetDynamicColor(Q"+i+",Min(1, Max(0, functionRed(Element(VA, "+i+")))),Min(1, Max(0, functionGreen(Element(VA, "+i+")))), Min(1, Max(0, functionBlue(Element(VA, "+i+")))),1)",i,1..m))