Catmull–Clark subdivision surface: Difference between revisions
Content added Content deleted
m (J: use temporary variables for intermediate results) |
m (→{{header|J}}) |
||
Line 148: | Line 148: | ||
point_face=. |: mesh havePoints points |
point_face=. |: mesh havePoints points |
||
avg_face_points=. point_face avg@#"1 2 face_point |
avg_face_points=. point_face avg@#"1 2 face_point |
||
edges=. ~.,/meshEdges= |
edges=. ~.,/ meshEdges=. mesh /:~@,"+1|."1 mesh |
||
edge_face=. *./"2 edges e."0 1/ mesh |
edge_face=. *./"2 edges e."0 1/ mesh |
||
edge_center=. avg"2 edges{points |
edge_center=. avg"2 edges{points |
||
Line 158: | Line 158: | ||
new_coords=. (m1 * points) + (m2 * avg_face_points) + (m3 * avg_mid_edges) |
new_coords=. (m1 * points) + (m2 * avg_face_points) + (m3 * avg_mid_edges) |
||
pts=. face_point,edge_point,new_coords |
pts=. face_point,edge_point,new_coords |
||
c0=. (#edge_point)+e0= |
c0=. (#edge_point)+ e0=. #face_point |
||
msh=. (,c0+mesh),.(,e0+edge i. meshEdges),.((#i.)~/$mesh),.,e0+_1|."1 edge i. meshEdges |
msh=. (,c0+mesh),.(,e0+edge i. meshEdges),.((#i.)~/$mesh),.,e0+_1|."1 edge i. meshEdges |
||
msh;pts |
msh;pts |
||
Line 167: | Line 167: | ||
<lang j>NB.cube |
<lang j>NB.cube |
||
points=: _1+2*#:i.8 |
points=: _1+2*#:i.8 |
||
mesh=:1 A."1 I.(,1-|.)8&$@#&0 1">4 2 1 |
mesh=: 1 A."1 I.(,1-|.)8&$@#&0 1">4 2 1 |
||
catmullclark mesh;points |
catmullclark mesh;points |