#hw24.txt Ross Berkowitz #Posting Permission Granted Help:=proc(): print(""): end: ###################### 1 #################### #InsP(P,x,y) inputs a polygon P as a list of vertices (listed counterclockwise) #and outputs conditions for a point to be inside InsP:=proc(P,x,y) local line,i,p,n,center, conditions; n:=nops(P): center:=add(p, p in P)/n: conditions:=true: for i from 1 to n do line:=(P[i+1 mod n+1][1]-P[i mod n+1][1])*(y-P[i mod n+1][2])-(P[i+1 mod n+1][2]-P[i mod n+1][2])*(x-P[i mod n+1][1]): conditions:=conditions and (line*subs({x=center[1],y=center[2]},line))>0: od: conditions: end: ########################## 2 ##################### TgT:=proc(N) local i,x,y,Triangles: Triangles:={}: for y from 0 to evalf((N-1)/N*sqrt(3)/2) by evalf(sqrt(3)/(2*N)) do for x from y to 1-y-2/N by 1/N do Triangles:=Triangles union {[[x,y],[x+1/N,y],[x+1/(2*N),y+sqrt(3)/(2*N)]], [[x+1/N,y],[x+3/(2*N),y+sqrt(3)/(2*N)],[x+1/(2*N),y+sqrt(3)/(2*N)]]}: od: Triangles:=Triangles union{[[1-1/N,y],[1,y],[1-1/(2*N),y+evalf(sqrt(3)/(2*N))]]}: od: Triangles: end: ########################## 3 ###################### TgC1:=proc(N) local Triangles, x,y,i: Triangles:={}: for y from -1 to 1-1/N do for x from -evalf(sqrt(1-y^2)) to evalf(sqrt(1-y^2))-1/N by 1/N do Triangles:=Triangles union { [[x,y],[x+1/N,y],[x+1/N,y+1/N]],[[x,y+1/N],[x+1/N,y],[x+1/N,y+1/N]]}: od: od: end: TgC:=proc(N) local Triangles, T,x,y,i: Triangles:={}: for y from 0 to 1-1/N do x:=0: while x<=evalf(sqrt(1-y^2))-2/N do Triangles:=Triangles union { [[x,y],[x+1/N,y],[x+1/N,y+1/N]],[[x,y+1/N],[x+1/N,y],[x+1/N,y+1/N]]}: x:=x+1/N: od: Triangles:=Triangles union {[[x,y],[x+1/N,y],[x,y+1/N]]}: od: {seq(TRef([-1,1],T), T in Triangles), seq(TRef([1,-1],T), T in Triangles), seq(TRef([-1,-1],T), T in Triangles), op(Triangles)}: end: TRef:=proc(u,T) local i: [seq([seq(t[i]*u[i],i=1..2)],t in T)]: end: