首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dojo.gfx矩阵变换

dojo.gfx矩阵变换
EN

Stack Overflow用户
提问于 2010-01-11 04:32:30
回答 2查看 1.7K关注 0票数 2

矩阵变换让我头晕目眩。我有一个dojox.gfx.group,我希望它可以用Mover拖动,然后能够在表面上的某个点上旋转它。我的基本代码如下所示:

代码语言:javascript
复制
this.m = dojox.gfx.matrix,
.
.
.

updateMatrix: function(){
  var mtx = this.group._getRealMatrix();
  var trans_m = this.m.translate(mtx.dx, mtx.dy);
  this.group.setTransform([this.m.rotateAt(this.rotation, 0, 0), trans_m]); 
}

旋转点在(0,0)处只是为了简单起见。我似乎不明白这个组是如何轮换的。

任何关于矩阵变换的简单化教程的参考也会有所帮助。我检查过的ones并没有提供太多帮助。

EN

回答 2

Stack Overflow用户

发布于 2010-01-11 11:22:07

试试official dojox.gfx matrix tutorial吧。看看official documentation是否有帮助。

票数 0
EN

Stack Overflow用户

发布于 2010-01-12 19:24:07

官方文档是我开始思考的地方。我盯着它看了很长一段时间,因为我不知道如何将新的坐标输入到即将到来的矩阵变换中。

不过,我终于想出了问题所在。这是一个将监听程序连接到Mover何时触发onMoveStop的问题:

代码语言:javascript
复制
dojo.connect(movable, "onMoveStop", map, "reposition");

然后我得到新的移动距离,并将它们输入到我的图形类中的任何旋转或缩放矩阵平移中:

代码语言:javascript
复制
updateMatrix: function(){
    //So far it is the group which is being rotated

    if (this.group) {

        if(!this.curr_matrix){
            this.curr_matrix = this.initial_matrix;
        }
        this.group.setTransform([
            this.m.rotateAt(this.rotation, this.stage_w_2, this.stage_h_2),
            this.m.scaleAt(this.scaling, this.stage_w_2, this.stage_h_2),
            this.curr_matrix
        ]);

        //this.group.setTransform([
        //  this.m.rotateAt(this.rotation, mid_x, mid_y),
        //  this.m.scaleAt(this.scaling, mid_x, mid_y),
        //  this.initial_matrix]);
    }
},
reposition: function(){
    mtx = this.group._getRealMatrix();
    this.curr_matrix = this.m.translate(mtx.dx, mtx.dy);
},

生活又变得花哨了。感谢Eugene的建议。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2038504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档