[Bf-committers] python mathutils api update proposal

Tom Edwards contact at steamreview.org
Thu Feb 3 20:30:52 CET 2011


I'm importing/exporting a format that uses eulers exclusively, so I 
can't avoid them. They are also the default rotation method within Blender.

(And sorry for the confusion, but the actual signs I used were just 
examples. All I've ever needed to do is add and multiply by a matrix.)

On 03/02/2011 6:08, Martin Poirier wrote:
> Those mathematical operations aren't defined on eulers triplets.
>
> Unless you really really know what you are doing, use quats or matrices to manipulate rotations.
>
> 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, 8:04 AM
>> 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
>


More information about the Bf-committers mailing list