W3C home > Mailing lists > Public > public-fx@w3.org > January to March 2013

Re: quick comments on Matrix

From: Gregg Tavares <gman@google.com>
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>
Cc: Dirk Schulze <dschulze@adobe.com>
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.

*Why Point instead of Vector?*

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.

*How about add, subtract, scale, distance, normalize, length,
lengthSquared, dot, and cross on Point?*

Just asking. If all point is is x,y,z,w and no functionality them might as
well get rid of it and just pass Float32Array(4) everywhere.

*
*
*
*
Received on Saturday, 16 March 2013 05:58:15 GMT

This archive was generated by hypermail 2.3.1 : Saturday, 16 March 2013 05:58:15 GMT