The catmull-clark surface subdivision algorithm is an issue I have
been neglecting for a few years:

avg=: +/ % #
havePoints=: e."1/~ i.@#

catmullclark=:3 :0
  'mesh points'=. y
  face_point=. avg"2 mesh{points
  point_face=. |: mesh havePoints points
  avg_face_points=. point_face avg@#"1 2 face_point
  edges=. ~.,/ meshEdges=. mesh /:~@,"+1|."1 mesh
  edge_face=. *./"2 edges e."0 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 edge_center
  n=. +/"1 point_edge
  'm3 m2 m1'=. (2,1,:n-3)%"1 n
  new_coords=. (m1 * points) + (m2 * avg_face_points) + (m3 * avg_mid_edges)
  pts=. face_point,edge_point,new_coords
  c0=. (#edge_point)+ e0=. #face_point
  msh=. (,c0+mesh),.(,e0+edges i.
meshEdges),.((#i.)~/$mesh),.,e0+_1|."1 edges i. meshEdges
  msh;pts
)

Example use: subdividing a cube:

   points=: _1+2*#:i.8
   mesh=: 1 A."1 I.(,1-|.)8&$@#&0 1">4 2 1

   catmullclark mesh;points

This all is straight out of the rosettacode implementation
https://rosettacode.org/wiki/Catmull–Clark_subdivision_surface#J

Now..., reading Ed Catmull's papers (which used to be easy to find
downloadable copies of - catmull had a few websites which are probably
still up, but no longer seem to be findable using search. Now I am
getting 404 results from some of the more plausible seeming leads that
I can find using search, other than
http://dl.acm.org/citation.cfm?id=907242), the underlying concept has
to do with a useful analogy between eigenvectors, b-splines and
geometric normals. Sadly, though, I was never able to reproduce his
results following that line of thought - which probably means I lack
some relevant math background.

So, my question here, is: what kinds of classes am I likely to need to
take, to reproduce Catmull's thesis work?

I understand that this is an ill-formed question, so maybe a fallback
question would be: where would I find out about math / computer
science topics at University of Utah professors and curriculum in the
early '70s? Who would I talk to, I suppose might ask?

Thanks,

-- 
Raul
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to