View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001364 | FreeCAD | Bug | public | 2014-01-23 20:22 | 2014-01-24 12:58 |
Reporter | pkoning2 | Assigned To | wmayer | ||
Priority | normal | Severity | major | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Platform | Mac | OS | Mac OS X | OS Version | 10.9 |
Product Version | trunk | ||||
Summary | 0001364: Issue 1256 is not actually fixed | ||||
Description | I tried to reopen 1256 but it doesn't seem that I can do that. I'm running FreeCAD 0.14, the Mac test build announced a few days ago: OS: Mac OS X Platform: 64-bit Version: 0.14.3052 (Git) Branch: master Hash: 88ff8076cdbcca2a52c13f40d1cb14df220b3c55 Python version: 2.7.5 Qt version: 4.8.6 Coin version: 3.1.3 SoQt version: 1.5.0 OCC version: 6.6.0 I changed my scripts to remove the workaround for issue 1256. That produced a different model than before, but not the right one. What's going on now is that move then rotate and rotate then move produce the SAME matrix (the one I should get for move then rotate). Very strange. | ||||
Steps To Reproduce | >>> from FreeCAD import Base >>> M=Base.Matrix >>> m1=M() >>> m2=M() >>> m1.move(10,0,0) >>> m1.rotateY(.2) >>> m2.rotateY(.2) >>> m2.move(10,0,0) >>> m1 Matrix ((0.980067,0,0.198669,9.80067),(0,1,0,0),(-0.198669,0,0.980067,-1.98669),(0,0,0,1)) >>> m2 Matrix ((0.980067,0,0.198669,9.80067),(0,1,0,0),(-0.198669,0,0.980067,-1.98669),(0,0,0,1)) >>> m1==m2 True >>> m3=M() >>> m4=M() >>> m3.move(10,0,0) >>> m4.rotateY(.2) >>> m1==m3*m4 False >>> m1==m4*m3 True >>> | ||||
Tags | No tags attached. | ||||
FreeCAD Information | |||||
|
So does 0.13 have the correct behavior? |
|
No, 0.13 has different wrong behavior, the one documented in issue 1256. The thing about 0.13 is that I can work around the bug easily -- just put the successive matrix operations in reverse order. It consistently does all the matrix operations in reverse. I discovered the issue when I tried the new 0.14 based Mac build. The script with workarounds produced bad output, as expected. So I took them all out, and *still* got bad (but different) output. |
|
from FreeCAD import Base M=Base.Matrix V=Base.Vector m1=M() m1.move(10,5,-3) m1.rotateY(.2) m2=M() m2.rotateY(.2) m2.move(10,5,-3) m3=M() m3.move(10,5,-3) m4=M() m4.rotateY(.2) assert(not m1==m3*m4) assert(m1==m4*m3) assert(m2==m3*m4) assert(not m2==m4*m3) |
Date Modified | Username | Field | Change |
---|---|---|---|
2014-01-23 20:22 | pkoning2 | New Issue | |
2014-01-23 22:33 | peterl94 | Note Added: 0004118 | |
2014-01-24 00:56 | pkoning2 | Note Added: 0004120 | |
2014-01-24 12:54 | wmayer | Note Added: 0004122 | |
2014-01-24 12:58 | wmayer | Changeset attached | => FreeCAD Master master 0da6de62 |
2014-01-24 12:58 | wmayer | Assigned To | => wmayer |
2014-01-24 12:58 | wmayer | Status | new => closed |
2014-01-24 12:58 | wmayer | Resolution | open => fixed |