# Re: quick comments on Matrix

Date: Fri, 15 Mar 2013 22:57:45 -0700
Message-ID: <CAKZ+BNqLLBXdUUy3o-U21ASrq3FnJTQXLVCPndj23viS01424w@mail.gmail.com>
To: "public-fx@w3.org" <public-fx@w3.org>
```Sorry if I'm late to the party. If there's already a huge discussion of
this just point me to it.

But, some questions

*Why m11,m12,m13,m14  etc instead of m00, m01, m02, m03?*

If I'm doing arrays in JavaScript they start at 0. It would be nice to be
able to do this

for (var i = 0; i < 4; ++i) {
for (var j = 0; j < 4; ++j) {
someMatrix['m'+i+j] = someArray[i][j];
}
}

If they start at m11 that becomes much less pleasant. Yes I know there are
constructors etc that take various types of arrays. My only point is it
seems more consistent if the indices or implied indices match.

*Why combine 2x3 and 4x4 Matrixes?*

It seems like it makes the implementation slower (have to check if I should
be doing 2x3 or 4x4 math) and while behind the scenes you could have 2
different classes that begs the question, why not just expose them
separately?

*How about lookAt, perspective, ortho and frustum?*

Those are used in nearly every 3D app.

*How about on top of transformPoint also transformDirection,
transformVector?*
*
*
All of those are useful and commonly needed.

transformPoint =  (m * p) / p.w
transformVector = (m * p)
transformDirection = (m * p) but ignores the last row of m

transformPoint and transformVector is needed as they're common for doing
mouse to 3D calculations.

I don't want to bikeshed here but in my limited circle a Point doesn't have
a W. A Point represents a place in 2D or 3D space. Mathematically you can't
add 2 points but you can add 2 vectors. Subtracting 2 points gives you a
vector. Adding a vector to a point transforms a point. Adding 2 vectors
gives another vector. That might just be my experience and not connected to
any reality but I've seen the distinction in libraries I've used. It's also
related the suggestion for transformPoint vs transformVector.