<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Hi David,<br>
<br>
no, Update() does not change the result. I came across this issue
because I found the vtkTDxInteractorStyleCamera to be utterly
useless. The reason is that this snippet from
vtkTDxInteractorStyleCamera does nothing:<br>
<br>
<span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">//</span><span
style=" color:#c0c0c0;"> </span><span style=" color:#008000;">Get</span><span
style=" color:#c0c0c0;"> </span><span style=" color:#008000;">the</span><span
style=" color:#c0c0c0;"> </span><span style=" color:#008000;">rotation</span><span
style=" color:#c0c0c0;"> </span><span style=" color:#008000;">axis</span><span
style=" color:#c0c0c0;"> </span><span style=" color:#008000;">in</span><span
style=" color:#c0c0c0;"> </span><span style=" color:#008000;">world</span><span
style=" color:#c0c0c0;"> </span><span style=" color:#008000;">coordinates.</span>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#c0c0c0;"> </span><span style=" color:#808000;">this</span><span style=" color:#000000;">-></span><span style=" color:#800000;">Transform</span><span style=" color:#000000;">-></span><span style=" color:#000000;">Identity</span><span style=" color:#000000;">();</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#c0c0c0;"> </span><span style=" color:#808000;">this</span><span style=" color:#000000;">-></span><span style=" color:#800000;">Transform</span><span style=" color:#000000;">-></span><span style=" color:#000000;">Concatenate</span><span style=" color:#000000;">(</span><span style=" color:#000000;">eyeToWorld</span><span style=" color:#000000;">);</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#c0c0c0;"> </span><span style=" color:#808000;">this</span><span style=" color:#000000;">-></span><span style=" color:#800000;">Transform</span><span style=" color:#000000;">-></span><span style=" font-style:italic; color:#000000;">Inverse</span><span style=" color:#000000;">();</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#c0c0c0;"> </span><span style=" color:#808000;">this</span><span style=" color:#000000;">-></span><span style=" color:#800000;">Transform</span><span style=" color:#000000;">-></span><span style=" color:#000000;">TransformVector</span><span style=" color:#000000;">(</span><span style=" color:#000000;">axisEye</span><span style=" color:#000000;">,</span><span style=" color:#000000;">axisWorld</span><span style=" color:#000000;">);</span></pre>
<pre style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">
axisEye is identical to axisWorld. The vtkTDxInteractorStyleGeo has something similar.
There is either a bug in vtkTransform or in the InteractorStyles. I could make a bug report for either.
Cheers,
Torsten
</pre>
<br>
<div class="moz-cite-prefix">Am 21.01.2016 um 18:04 schrieb David
Gobbi:<br>
</div>
<blockquote
cite="mid:CANwS1=ELM_sYzeS6petAdgWvt0ofqo2viF=FKw-esGjjWHSxmg@mail.gmail.com"
type="cite">
<div dir="ltr">Hi Torsten,
<div><br>
</div>
<div>I suspect that it will work if you do this:</div>
<div><br>
</div>
<div>
<div> this->Transform->Identity();</div>
<div>
this->Transform->Concatenate(eyeToWorld->GetMatrix());</div>
<div> this->Transform->Inverse();</div>
<div><br>
</div>
<div>The "Concatenate" method has two signatures with
different behavior:</div>
<div> Concatenate(vtkMatrix4x4 *)</div>
<div> Concatenate(vtkTransform *)</div>
<div><br>
</div>
<div>The second one establishes a connection between the two
transforms,</div>
<div>so if you do
"this->Transform->Concatenate(eyeToWorld)" then any</div>
<div>future changes to "eyeToWorld" will also cause
"this->Transform" to</div>
<div>change.</div>
<div><br>
</div>
<div>If you call "this->Transform->Update()" before
PrintSelf, is the correct</div>
<div>matrix printed? The TransformVector() method implicitly
calls Update().</div>
<div><br>
</div>
<div> - David </div>
<div><br>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Thu, Jan 21, 2016 at 9:28 AM,
Torsten Sadowski <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:torsten.sadowski@windnovation.com"
target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:torsten.sadowski@windnovation.com">torsten.sadowski@windnovation.com</a></a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Hello,<br>
<br>
I am trying to design my own vtkTDxInteractorStyle.
When I looked into vtkTDxInteractorStyleCamera as an
example I found something puzzling which might be a
bug in either vtkTransform or
vtkTDxInteractorStyleCamera.<br>
<br>
This snippet from <span style="color:rgb(128,128,0)">void</span><span
style="color:rgb(192,192,192)"> </span><span
style="color:rgb(128,0,128)">vtkTDxInteractorStyleCamera</span><span
style="color:rgb(0,0,0)">::</span><span
style="font-style:italic;color:rgb(0,0,0)">OnMotionEvent<br>
<br>
</span><span style="color:rgb(192,192,192)"> </span><span
style="color:rgb(0,128,0)">//</span><span
style="color:rgb(192,192,192)"> </span><span
style="color:rgb(0,128,0)">Get</span><span
style="color:rgb(192,192,192)"> </span><span
style="color:rgb(0,128,0)">the</span><span
style="color:rgb(192,192,192)"> </span><span
style="color:rgb(0,128,0)">rotation</span><span
style="color:rgb(192,192,192)"> </span><span
style="color:rgb(0,128,0)">axis</span><span
style="color:rgb(192,192,192)"> </span><span
style="color:rgb(0,128,0)">in</span><span
style="color:rgb(192,192,192)"> </span><span
style="color:rgb(0,128,0)">world</span><span
style="color:rgb(192,192,192)"> </span><span
style="color:rgb(0,128,0)">coordinates.</span>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(128,128,0)">this</span><span style="color:rgb(0,0,0)">-></span><span style="color:rgb(128,0,0)">Transform</span><span style="color:rgb(0,0,0)">-></span><span style="color:rgb(0,0,0)">Identity</span><span style="color:rgb(0,0,0)">();</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(128,128,0)">this</span><span style="color:rgb(0,0,0)">-></span><span style="color:rgb(128,0,0)">Transform</span><span style="color:rgb(0,0,0)">-></span><span style="color:rgb(0,0,0)">Concatenate</span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,0,0)">eyeToWorld</span><span style="color:rgb(0,0,0)">);</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(128,128,0)">this</span><span style="color:rgb(0,0,0)">-></span><span style="color:rgb(128,0,0)">Transform</span><span style="color:rgb(0,0,0)">-></span><span style="font-style:italic;color:rgb(0,0,0)">Inverse</span><span style="color:rgb(0,0,0)">();</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(128,128,0)">this</span><span style="color:rgb(0,0,0)">-></span><span style="color:rgb(128,0,0)">Transform</span><span style="color:rgb(0,0,0)">-></span><span style="color:rgb(0,0,0)">TransformVector</span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,0,0)">axisEye</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(0,0,0)">axisWorld</span><span style="color:rgb(0,0,0)">);</span></pre>
<pre style="margin:0px;text-indent:0px">does nothing useful because the Transform returns the identity after Inverse (checked with PrintSelf).
This on the other hand works:
<span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,128,0)">//</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,128,0)">Get</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,128,0)">the</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,128,0)">rotation</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,128,0)">axis</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,128,0)">in</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,128,0)">world</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,128,0)">coordinates.</span>
<span style="color:rgb(192,192,192)"> </span><span style="color:rgb(128,128,0)">this</span><span style="color:rgb(0,0,0)">-></span><span style="color:rgb(128,0,0)">Transform</span><span style="color:rgb(0,0,0)">-></span><span style="color:rgb(0,0,0)">SetMatrix</span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,0,0)">eyeToWorld</span><span style="color:rgb(0,0,0)">-></span><span style="color:rgb(0,0,0)">GetMatrix</span><span style="color:rgb(0,0,0)">());</span>
<span style="color:rgb(192,192,192)"> </span><span style="color:rgb(128,128,0)">this</span><span style="color:rgb(0,0,0)">-></span><span style="color:rgb(128,0,0)">Transform</span><span style="color:rgb(0,0,0)">-></span><span style="font-style:italic;color:rgb(0,0,0)">Inverse</span><span style="color:rgb(0,0,0)">();</span>
<span style="color:rgb(192,192,192)"> </span><span style="color:rgb(128,128,0)">this</span><span style="color:rgb(0,0,0)">-></span><span style="color:rgb(128,0,0)">Transform</span><span style="color:rgb(0,0,0)">-></span><span style="color:rgb(0,0,0)">TransformVector</span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,0,0)">axisEye</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(0,0,0)">axisWorld</span><span style="color:rgb(0,0,0)">);</span>
I'm baffled.
Best Regards,
Torsten Sadowski
</pre>
<br>
<div>-- <br>
<img alt=""
src="cid:part2.05050104.02020401@windnovation.com"
height="64" width="186"><br>
<small><br>
</small>
<div>Dr.-Ing. Torsten Sadowski<br>
Turbine Design/System Integration<br>
<br>
<small> WINDnovation Engineering Solutions GmbH<br>
Stralauer Platz 33-34<br>
10243 Berlin<br>
Germany<br>
Phone: <a moz-do-not-send="true"
href="tel:%2B49%2030%20547195%2034"
value="+493054719534" target="_blank">+49 30
547195 34</a><br>
Fax: <a moz-do-not-send="true"
href="tel:%2B49%2030%20547195%2039"
value="+493054719539" target="_blank">+49 30
547195 39</a><br>
Managing directors: <br>
Dr.-Ing. Roland Stoer, Dipl.-Ing. Albrecht
Kantelberg<br>
Registered at Amtsgericht Charlottenburg, HRB
110081 B<br>
<small><br>
</small> <a moz-do-not-send="true"
href="http://www.windnovation.com"
target="_blank">www.windnovation.com</a><br>
<small><br>
</small> Certified according to ISO 9001:2008</small></div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</blockquote>
<br>
</body>
</html>