[Bf-committers] python mathutils api update proposal

Campbell Barton ideasman42 at gmail.com
Thu Feb 3 23:51:50 CET 2011


At the moment you can only do:
Vector() * Matrix() --> Vector()
So it makes sense that Euler() * Matrix() --> Euler(), matching the
order of the original euler, but if nobody else is doing this it might
be better to have this as a convenience method.

Something like: eul = euler.rotate(matrix/quat/euler).

On Thu, Feb 3, 2011 at 10:47 PM, Martin Poirier <theeth at yahoo.com> wrote:
> How would it decide if the return value is euler or matrix? The order of argument (that seems dangerous since multiplication is not commutative).
>
> Martin
>
> --- On Thu, 2/3/11, Tom Edwards <contact at steamreview.org> wrote:
>
>> From: Tom Edwards <contact at steamreview.org>
>> Subject: Re: [Bf-committers] python mathutils api update proposal
>> To: "bf-blender developers" <bf-committers at blender.org>
>> Received: Thursday, February 3, 2011, 5:31 PM
>> That is more or less what I do. There
>> is no reason I can see why it
>> shouldn't happen implicitly.
>>
>> On 03/02/2011 10:19, Campbell Barton wrote:
>> > Euler() * 0.5, makes sense to halve rotation, but from
>> reading down
>> > you're mainly interested in: Euler() * Matrix().
>> >
>> > This could be supported, internally doing...
>> >    eul = Euler()
>> >    (eul.to_matrix() *
>> Matrix()).to_euler(eul.order)
>> >
>> > I'd be interested to know if there are many other math
>> libs which do
>> > Euler * Matrix since there are enough de-facto
>> standard with
>> > C++/python libs like mathutils I rather not define new
>> ones.
>> >
>> > On Thu, Feb 3, 2011 at 1:04 PM, Tom Edwards<contact at steamreview.org>
>> wrote:
>> >> Could we please have maths operator (i.e. * / +)
>> support for eulers? You
>> >> can't do anything with them currently, you have to
>> cast to vector then
>> >> back again!
>> >>
>> >> On 03/02/2011 11:08, Campbell Barton wrote:
>> >>> Here are some proposed changes to the
>> mathutils API I'd like to make
>> >>> to avoid some confusing aspects of the api
>> since its now used for all
>> >>> RNA math types and GameEngine I think it would
>> be good to make
>> >>> improvements in this area.
>> >>>
>> >>> Proposal:
>> >>>     http://wiki.blender.org/index.php/Dev:2.5/Source/Python/Mathutils
>> >>>
>> >>> If this is acceptable I can make these changes
>> and update scripts.
>> >>>
>> >>> I'm keeping a log of all mathutils changes
>> since 2.4x in mathutils.c
>> >>>
>> >>> To get up to speed on changes so far:
>> >>>
>> >>> /* Note: Changes to Mathutils since 2.4x
>> >>>    * use radians rather then
>> degrees
>> >>>    * -
>> Mathutils.Vector/Euler/Quaternion(), now only take single
>> >>> sequence arguments.
>> >>>    * - Mathutils.MidpointVecs
>> -->    vector.lerp(other, fac)
>> >>>    * - Mathutils.AngleBetweenVecs
>> -->    vector.angle(other)
>> >>>    * - Mathutils.ProjectVecs
>> -->    vector.project(other)
>> >>>    * - Mathutils.DifferenceQuats
>> -->    quat.difference(other)
>> >>>    * - Mathutils.Slerp -->
>>   quat.slerp(other, fac)
>> >>>    * - Mathutils.Rand: removed, use
>> pythons random module
>> >>>    * -
>> Mathutils.RotationMatrix(angle, size, axis_flag, axis)
>> -->
>> >>> Mathutils.RotationMatrix(angle, size, axis);
>> merge axis&    axis_flag
>> >>> args
>> >>>    * - Matrix.scalePart -->
>>   Matrix.scale_part
>> >>>    * - Matrix.translationPart
>> -->    Matrix.translation_part
>> >>>    * - Matrix.rotationPart
>> -->    Matrix.rotation_part
>> >>>    * - mathutils.Matrix.Shear(plane,
>> fac, size), now takes a pair of
>> >>> floats for 3x3 or 4x4 shear factor.
>> >>>    * - toMatrix -->
>> to_matrix
>> >>>    * - toEuler -->
>> to_euler
>> >>>    * - toQuat -->
>> to_quat
>> >>>    * - Vector.toTrackQuat
>> -->    Vector.to_track_quat
>> >>>    * - Quaternion * Quaternion
>> -->    cross product (not dot product)
>> >>>    * - Euler.rotate(angle, axis)
>> -->    Euler.rotate_axis(axis, angle)
>> >>>    * - Euler.unique() *removed*, not
>> a standard function only toggled
>> >>> different rotations.
>> >>>    *
>> >>>    * moved into class functions.
>> >>>    * - Mathutils.RotationMatrix
>> ->    mathutils.Matrix.Rotation
>> >>>    * - Mathutils.ScaleMatrix
>> ->    mathutils.Matrix.Scale
>> >>>    * - Mathutils.ShearMatrix
>> ->    mathutils.Matrix.Shear
>> >>>    * - Mathutils.TranslationMatrix
>> ->    mathutils.Matrix.Translation
>> >>>    * -
>> Mathutils.OrthoProjectionMatrix ->
>> mathutils.Matrix.OrthoProjection
>> >>>    *
>> >>>    * Moved to Geometry module:
>> Intersect, TriangleArea, TriangleNormal,
>> >>> QuadNormal, LineIntersect
>> >>>    * - geometry.Intersect
>> ->    intersect_ray_tri
>> >>>    * - geometry.ClosestPointOnLine
>> ->    intersect_point_line
>> >>>    * - geometry.PointInTriangle2D
>> ->    intersect_point_tri_2d
>> >>>    * - geometry.PointInQuad2D
>> ->    intersect_point_quad_2d
>> >>>    * - geometry.LineIntersect
>> ->    intersect_line_line
>> >>>    * - geometry.LineIntersect2D
>> ->    intersect_line_line_2d
>> >>>    * - geometry.BezierInterp
>> ->    interpolate_bezier
>> >>>    * - geometry.TriangleArea
>> ->    area_tri
>> >>>    * - geometry.QuadNormal,
>> TriangleNormal ->    normal
>> >>>    * - geometry.PolyFill ->
>>   tesselate_polygon
>> >>>    * - geometry.BoxPack2D
>> ->    box_pack_2d
>> >>>    * - geometry.BarycentricTransform
>> ->    barycentric_transform
>> >>>    */
>> >>>
>> >> _______________________________________________
>> >> Bf-committers mailing list
>> >> Bf-committers at blender.org
>> >> http://lists.blender.org/mailman/listinfo/bf-committers
>> >>
>> >
>> >
>> _______________________________________________
>> Bf-committers mailing list
>> Bf-committers at blender.org
>> http://lists.blender.org/mailman/listinfo/bf-committers
>>
>
>
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers
>



-- 
- Campbell


More information about the Bf-committers mailing list