[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.transformation
matrix manually. Or am I missing something? -
@thomthom said:
Create a local transformation and apply with with
.transform!( tramsformation )
instead of setting the.transformation
matrix 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.transformation
matrix 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
Advertisement