Catmull–Clark subdivision surface: Difference between revisions
Content deleted Content added
J: partial bugfix |
|||
Line 45:
=={{header|J}}==
FIXME: result points do not correspond to sample data on talk page (I have factors of 3/4 where sample has 2/3).
<lang j>havePoints=: e."1/~ i.@#
Line 54:
avg_face_points=: point_face avg@#"1 2 face_point
edges=: ~.,/meshEdges=:mesh /:~@,"+1|."1 mesh
edge_center=: avg"2 edges{points
edge_point=: (0.5*edge_center) + 0.25 * edge_face +/ .* face_point
point_edge=: |: edges havePoints points
avg_mid_edges=: point_edge avg@#"1 2
n=: +/"1 point_edge
'm3 m2 m1'=:(2,1,:n-3)%"1 n
Line 80 ⟶ 82:
│20 10 1 12│ 0 _1 0│
│21 11 1 10│ _1 0 0│
│25 8 1 11│ 0.75
│24 12 1 8│
│19 13 2 14│ 0.75
│21 11 2 13│
│25 7 2 11│ _0.75
│23 14 2 7│ 0 0.75
│18 15 3 16│ 0 0.75
│20 12 3 15│
│24 9 3 12│ 0 _0.75
│22 16 3 9│
│18 17 4 16│ 0 _0.75
│19 14 4 17│ _0.75
│23 6 4 14│_0.555556 _0.555556 _0.555556│
│22 16 4 6│_0.555556 _0.555556 0.555556│
|