This is the first proof-of-concept implementation of dojo.gfx 3d support. Just
copy test3d.html to
launch any SVG-based browser, Mozilla Firefox is preferred, and you would found
a cube like this:
This is a quite quick-n-dirty implementation, the Path3d class is more or less a
dojo.gfx.path.Path, operations are copied from
here and there with modification to meet our needs. The main contribution of
this test is:
- Test case itself, we may use the same interface to manipulate the 3D objects
cameraTransform, the mapping of 3D space to 2D surface
We are probably inspired by this lousy implementation for its weakness:
- Separate the 3D and 2D domain — this is essential since we want to reuse the interface as much as possible, for example, 3D space’s path syntax is the same as 2D’s with different number of arguments.
- Move shared functions to infrastructure layer, then we can reuse it in both 2D and 3D domains
- Move the matrix operation to dojo.gfx.matrix.3d namespace
- Attach more meta data to the SVG DOM node, for example, original (x, y, z) path, transform, x, y, z axis’s rotation, scaling matrix for further transformation. CAUTION: this is quite computation extensive
- Attach — this could be a big problem. When attaching a dojo.gfx object to existed SVG node, we need to differentiate the domains by using the meta data mentioned above.
I think I need to consult with my mentor for more details about refactoring.