[Code] Print the transformation matrix
-
Here's my simple brute force method:
def trans_matrix_text( gt ) return "Not a trnasformation object!" unless gt.is_a?(Geom;;Transformation) a = gt.to_a w = 3 # width a.each{|n| s = n.to_s.size; w = s if s>w } l = (w*4)+3 # create a line output format string; fmt = " | %#{w}s %#{w}s %#{w}s %#{w}s |\n" text = "\n" text << (32.chr*2)<<151.chr<<151.chr<<(32.chr*l)<<151.chr<<151.chr<<"\n" text << fmt % [ a[0].to_s, a[1].to_s, a[2].to_s, a[3].to_s ] text << fmt % [ a[4].to_s, a[5].to_s, a[6].to_s, a[7].to_s ] text << fmt % [ a[8].to_s, a[9].to_s, a[10].to_s, a[11].to_s ] text << fmt % [ a[12].to_s, a[13].to_s, a[14].to_s, a[15].to_s ] text << (32.chr*2)<<151.chr<<151.chr<<(32.chr*l)<<151.chr<<151.chr<<"\n" return text end # def pt = Geom;;Point3d.new( 11,22,33 ) text = trans_matrix_text( Geom;;Transformation.new(pt) ) UI.messagebox( text, MB_MULTILINE, "Tranformation Matrix" )I have tweaked my system by copying Consolas font to the font used by dialogs, so I have monospaced text output. (It was easier than tweaking the resources in the executable after each update.)



-
Thanks for responding, I have helped a lot.

me a question arises about the transformations. if I need to apply a transformation to an object but not in the principal coordinate axes, but the coordinate axes of a group (rotated) what should I use?
(sorry for my bad English)
-
You mean, transform an object around its own axis and not world axis?
-
-
Create a local transformation and apply with with
.transform!( tramsformation )instead of setting the.transformationmatrix manually. Or am I missing something? -
@thomthom said:
Create a local transformation and apply with with
.transform!( tramsformation )instead of setting the.transformationmatrix manually. Or am I missing something?How to create a local transformation? I would like to see some sample piece of code to guide me
-
I wonder if there is any way to know the orientation of a group with respect to the axis of the world
-
You have the model's axes from X_AXIS etc and ORIGIN.
Then you have group.transformation.axes or group.transformation.xaxis etc... and group.transformation.origin too...
So you can find the relative locations [which are points3ds] and angles between axes [which are vector3ds] - see the methods for those types... -
@dacastror said:
@thomthom said:
Create a local transformation and apply with with
.transform!( tramsformation )instead of setting the.transformationmatrix manually. Or am I missing something?How to create a local transformation? I would like to see some sample piece of code to guide me
<span class="syntaxdefault"><br />point </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> instance</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">transformation</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">origin<br />vector </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> instance</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">transformation</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">yaxis<br />rotation </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Geom</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Transformation</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">rotation</span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> point</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> vector</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> 30</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">degrees </span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">instance</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">transform</span><span class="syntaxkeyword">!(</span><span class="syntaxdefault"> rotation </span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span> -
thank you very much Thomas and Tig that prompt reply!

I will try to implement your suggestions right now
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better đ
Register LoginAdvertisement