Gas Field Wrangle
Camera Cull
vector ndc = toNDC(chs("cam"),@P);if(ndc[0]<-chf("horizonL") || ndc[0]>1+chf("horizonR") || ndc[1]<-chf("verticalB") || ndc[1]>1+chf("verticalT") || ndc[2]>0){ removepoint(0,@ptnum);}Bend Function
////function f_rot////matrix3 f_rot(float r_val; vector axis){ matrix3 identMat3 = ident(); rotate(identMat3, r_val ,normalize(set(axis))); return identMat3;}////function f_trans////matrix f_trans(vector position){ matrix tMat = ident(); translate(tMat, position); return tMat;}/////function f_bend//////matrix f_bend(vector P, pivot, dir, axis; float dist, angle){ matrix bendM = ident(); float bPi = 3.1415926535; bendM *= invert( f_trans( pivot )); float dot = dot(normalize(dir),P*bendM); matrix horizonDir = bendM * invert( f_trans( normalize(dir) * dot)); float bendArea = fit(dot,0,dist,0,1); if(bendArea < 1){ bendM = horizonDir; }else{ bendM *= invert( f_trans(normalize(dir) * dist)); } float angAmount = angle * min(dot,dist)/dist; float axisOffset = (dist/bPi)/(angle/180); vector axisPos = normalize(cross(axis,dir)) * axisOffset; matrix3 rot = f_rot(angAmount/180 * bPi,normalize(axis) ); if(bendArea > 0 && angle != 0){ bendM = bendM * invert(f_trans(axisPos)) * matrix(rot) * f_trans(axisPos) * f_trans(pivot); }else{ bendM = ident(); } return bendM;}