游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3009|回复: 7

关于一个2D旋转算法的问题。

[复制链接]

3

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2010-11-25 22:28:00 | 显示全部楼层 |阅读模式
已知:
   1、2D图形中存在2个动点:p0 和 p1,p0 从 p0old 移动到 p0now,p1 从 p1old 移动到 p1now;

   2、该图形的当前世界矩阵是M。

现在,求图形上的点移动后,该图形的世界矩阵(被缩放、旋转、平移了多少)。

好比桌子上放着一张柔性的纸,用2个手指头按住并开始移动,求移动后纸的位置、角度和缩放率。


跪求高手给个思路或者算法。我弄的,要么只有在特殊象限才正确,要么不知道转到哪里去了。

30

主题

89

帖子

91

积分

注册会员

Rank: 2

积分
91
发表于 2010-11-26 00:24:00 | 显示全部楼层

Re:关于一个2D旋转算法的问题。

有旋转公式呀.

3

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
 楼主| 发表于 2010-11-26 08:10:00 | 显示全部楼层

Re:关于一个2D旋转算法的问题。

晕。我知道有旋转公式。

关键不仅仅是旋转,还有缩放、平移。

3

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
 楼主| 发表于 2010-12-7 15:49:00 | 显示全部楼层

Re:关于一个2D旋转算法的问题。

唉。。。

30

主题

89

帖子

91

积分

注册会员

Rank: 2

积分
91
发表于 2010-12-10 23:10:00 | 显示全部楼层

Re:关于一个2D旋转算法的问题。

要么只有在特殊象限才正确,要么不知道转到哪里去了.
========================================================
怎么可能?
你想通过用新点坐标求出世界矩阵:

P_old * M_world =P_new;
想求这个M_world?
这个我不会求.干吗要求呢?矩阵是自己去设计的.

因为,你说的是2D的;
那,设:向量是以P_old(x,y,w=1)形式;
如果你想平移,那就设计矩阵M为:
1,    0,    0
0,    1,    0
x_dis,y_dis,1

P_old * M =P_new; P_new=(x + x_dis,y + y_dis,1);
这就实现了平移.向量多个w不难理解吧.就为了应对矩阵运算.

缩放:
手动操作 就是乘0.9是缩放.乘1.1是扩大.数可自己变.
矩阵:
0.9, 0 , 0
0  ,0.9, 0
0  , 0 , 1
旋转:
三角学的应用.可参看大师技巧一书.
2D绕Z轴旋转呗.
公式
矩阵M:
cos(a),sina(a),0
-sin(a),cos(a),0
0      , 0    ,1

大师技巧都有介绍...

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2010-12-10 23:11:00 | 显示全部楼层

Re:关于一个2D旋转算法的问题。

代数几何 和 几何 是不一样的。
一般,旋转矩阵,是旋转中心在原点的特殊情况
如果不在,那么你要做坐标变换,假设旋转中心为 (O1, O2).
那么,令 (O1,O2) 为新坐标的原点,于是对于老坐标 (x1,x2) 而言,它的新坐标是 (x1', x2') = (x1-O1, x2-O2)
然后,用这个 (x1', x2') 去乘旋转矩阵,得到旋转后的新坐标 (y1', y2')^T = M * (x1', x2')^T
最后,要把 (y1', y2') 还原成老坐标 (y1, y2) = (y1'+O1, y2'+O2).

上面说的是2D版本,其坐标变换只需要平移,但是,3D版本中我们要变换坐标:
- 如果采用绕x,y,z轴旋转的矩阵,显然我们需要做更复杂的坐标变换(类似于3D向量的基变换)
- 如果采用绕任意轴旋转的矩阵,则我们只需要做平移,和2D一样方便。

11

主题

190

帖子

255

积分

中级会员

Rank: 3Rank: 3

积分
255
发表于 2010-12-12 20:06:00 | 显示全部楼层

Re:关于一个2D旋转算法的问题。

应该是先乘一个平移矩阵,将原点移到其中一个控制点上,再乘一个放缩矩阵,放缩系数通过计算两个动点之间的距离变化可以求得,再乘一个旋转矩阵,角度通过计算两个动点组成的向量之间的点积和叉积可得,然后再乘以一个平移矩阵,将控制点移到最终位置。没仔细想,错了勿怪



-----------------
欢迎光临我的博客 http://www.thecodeway.com

2

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2010-12-17 13:06:00 | 显示全部楼层

Re:关于一个2D旋转算法的问题。

搜索 矩阵基本转换  2D 3D都可以
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-17 08:56

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表