[Bf-committers] python mathutils api update proposal

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


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
>



-- 
- Campbell


More information about the Bf-committers mailing list