if(U are a SUPERMAN){ Please Enter; }

edward0716 2005-04-22 10:45:04
小弟请教一个问题:
Q:如何实现坐标轴的缩放与旋转?
D:我已经生成一二维坐标系(x,y),如下:
Y
|
|
| (图表区)
|
|
|—————————X
(二维坐标系(x,y))
在坐标系中生成了一些图表,例如柱状图,折线图,曲线图,分布图,区域图等等,
我在图表区上利用鼠标事件来实现坐标的缩放与旋转,能给我些实现算法吗?
万分感谢!
[注:如果解决的话,你要多少分你开,呵呵 Come on everybody 在线等 Quickly]
...全文
105 点赞 收藏 12
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
edward0716 2005-04-25
使用过jfreechart没?
和它里面的鼠标事件差不多.
只不过jfreechart里面只做了缩放,没有旋转.
研究jfreechart源码,觉得代码好乱,没心情看下去,故来此求高人相助啊。
现在还有三个功能要实现:缩放,旋转,还原,旋转最有难度哦。
回复
edward0716 2005-04-25
to:jFresH_MaN
能详细点么,请教!
回复
enrico 2005-04-24
楼主看看java.awt.geom.AffineTransform这个类,可以满足你的要求
回复
OnlyFor_love 2005-04-24
多看看swing和swt,有很多例子!
回复
jFresH_MaN 2005-04-24
不知道我上面说的那个为什么不符合楼主要求了!

如果坐标轴也要动的话,没问题啊
你可以假想固定坐标轴,真实的坐标轴和其他点一样根据规则计算相对坐标。
回复
edward0716 2005-04-24
如果用java.awt.geom.AffineTransform来实现旋转,缩放,剪切的话我早就可以已经实现了呀
你们可能还不太清楚我的需求
问题在于在做旋转缩放和剪切的时候要考虑到 ::[ 坐标轴的变化 ]::
并不是作为一张简单的图片来处理的
这才是难点哦
回复
edward0716 2005-04-23
o
回复
oyljerry 2005-04-23
参考计算机图形中的算法,这些都有
回复
edward0716 2005-04-23
Maybe 我的需求和你们所想的不一样吧 呵呵~
PS:缩放还好实现,但旋转的话却有些难度,它们两者最重要的一点就是在缩放或者旋转的时候,坐标轴也应该相应发生变化,如果图表区里面的图表缩小,则坐标轴应该增大,如果图表放大,则相应坐标轴应该缩小,这个意思还好理解吧:);旋转的话应该是这样的,如果图表区的图表要实现旋转,坐标还是90度,没有变,旋转后变化的是图表和坐标轴,而不是坐标系的角度,这样说应该清楚一点,如果是对图表旋转X度,则变化的应该是(X,Y)数据点。
回复
MARS.nEIL 2005-04-22
这些在图形学里都有的..
回复
jFresH_MaN 2005-04-22
缩放可以实现,而且不难
因为(0,0)这点的坐标固定的,坐标轴里面的任何图表都是由点组成的,使用相对坐标就能画出所有点。比如说缩小,只要把所有点的x,y值缩小n倍就可以了。

旋转有点复杂,但是思路还是比较清楚的。
还是用相对坐标来计算坐标轴里面所有点的位置,但是不是那么简单的了,要加一个角度参数。
如果是正常表现形式,你可以定义为90度,即y轴和水平线的角度。
旋转之后使用相对坐标加一个角度的计算就能得到所有点的位置了!

我说的是思路,具体细节和代码楼主自己考虑一下!
回复
edward0716 2005-04-22
汗~~~~~
没有一个人进?!
回复
发动态
发帖子
Java SE
创建于2007-09-28

6.1w+

社区成员

Java 2 Standard Edition
申请成为版主
社区公告
暂无公告