Affine transforms - matrix algebra

Pedro Duque Vieira pedro.duquevieira at gmail.com
Mon Aug 13 12:33:00 PDT 2012


On Mon, Aug 13, 2012 at 7:13 PM, Pavel Safrata <pavel.safrata at oracle.com>wrote:

>  On 13.8.2012 19:52, Pedro Duque Vieira wrote:
>
> Hi Pedro,
>> looks like we are condemned to stick to our existing precedents..
>
>
>  pity :(
>
> On 13.8.2012 18:26, Pedro Duque Vieira wrote:
>>          // Creates a point with distances from origin added (adds two
>> vectors)
>>      public Point3D subtract(Point3D point)
>>          // Creates a point with the given point's distances from origin
>> subtracted
>>          // (subtracts two vectors)
>>      public Point3D normalize()
>>          // Gets a point in the same direction from the origin with
>> distance from the origin equal to one
>>          // (normalizes a vector)
>>    ? should the above three methods be named getSomething to stress that
>> the operation doesn't modify the object?
>> Yes, I think it's better to call them getSomething.
>> As I wrote in my other email, we already have distance(Point3D), so to be
>> consistent we should rather strip the 'get' everywhere..
>>
>>
>>          // Gets distance from the origin (lenght of a vector)
>>
>> I'd prefer getMagnitude(), this way it's obvious your getting the lenght
>> of a vector
>> I'm not sure, magnitude of a point is similar nonsense to length of a
>> point and I guess users would search for the word "length" first. Does
>> anyone else have an opinion on this?
>
>
>  You're already doing things that make no sense for a Point3D, like
> adding two points, so it's pretty obvious that this is being used to
> represent Points and Vectors so this shouldn't be hidden from the user to
> prevent further confusion.
> I think this should really also be stated on the javadoc of Point3D.
>
>
> Yes, it will be stated. I'm just not sure why 'magnitude' is better then
> 'length'..
>
Personally I think it's better because magnitude is mostly applied to
vectors so one would immediately infer that he's getting the lenght of a
vector. Lenght would also be fine by me though.



>
>
>
>  Hi Pavel,
>>
>>>      public Point3D add(Point3D point)
>>>
>>     public double getLength()
>>
>
>
>
> Your missing:
> - getAngle()
> // gets the angle of the vector
> Angle from what?
>
> A Vector has an angle (or direction) it's normally from the the right side
> of the horizontal axis (the vertical axis splits the horizontal axis into
> right and left side).
>
>
> We are in 3D - we have X, Y and Z axes. Which one is "the horizontal"? I
> don't think this is a clear API, you can use point.angle(X_AXIS) if you
> want..
>
> You're absolutely right, sorry! I wasn't thinking clearly.


>
>
>> - getType
>> // returns whether this represents a vector or a point
>> If we wanted to distinguish vector from point, we would introduce
>> Vector3D class. But we have the Rotate class that is already used with
>> Point3D representing a vector and it has no such flag..
>
> Again, you are using Point as a vector although without separating them
> into distinct classes and you should distinguish the two. It makes no sense
> to add two points, make the cross product, etc.
>
>
> We are using one class for them just because we cannot distinguish them.
> If we added such flag, what would be the default value? The existing
> applications use Point3D both as point and as vector, so some of the usages
> would always become invalid. So again, because of the backward
> compatibility we need to represent point and vector by the same thing.
>

Ok, fair.


>
> Thanks,
> Pavel
>
>
>
>
>  Your missing on matrix or affine:
>> - transpose()
>> // transposes the matrix
>> I don't think we can add this because the resulting transform would
>> generally not be affine.
>
>  Yes your right, it does come in handy for some computer graphics
> operations though.
>
> Thanks again,
>
>  --
> Pedro Duque Vieira
>
>
>
>
I wonder, would it be possible to deprecate the methods that use Point3D as
a vector? This way we could still add a Vector class and retain backwards
compatibility.

-- 
Pedro Duque Vieira


More information about the openjfx-dev mailing list