图形旋转的问题,很急,救救我! (100分)

G

gsh2000

Unregistered / Unconfirmed
GUEST, unregistred user!
在处理图元旋转时遇到问题:单个图元旋转好办,现在想对绘制的整个图形进行旋转。
所有的图元都以轴线为基准,即附在轴线上,要求图形旋转后,各图元的的系列操作,
如选取,移动,删除等仍以旋转后的轴线为基准。举个例子:轴线上有图元1,现在对整
个图形旋转后,再在轴线上绘制图元2(注意:我采取的绘制方式不是通过先按下鼠标
再拖拽来实现,而是单击后自动完成图元绘制),要求图元1仍以原来轴线为基准;或者想
在旋转后的图形中对图元1进行移动操作,要求图元1移动路线仍然以旋转后的轴线作参
照;或者增绘一条轴线,单击后绘出的轴线也是倾斜的,跟旋转后图形保持一致……等等
一系列相关操作。
我现在有两个想法:1,针对旋转操作专门编一个通用函数或过程,整个图形旋转后再
编辑时的所有操作都必须调用这个过程,即实时调用。显然,这种方法我认为是不科学的,
因为cad制图实时操作太多,在无法预知的情况很容易出错;而且这个通用函数的编法也是
个问题,因为各种图元的特征各不相同,而cad中的旋转跟图象的旋转是两码事,不能通过
逐行或逐列扫描各像素来实现,而应通过捕获特征点旋转后再重绘来实现。
2,我认为合理的方法:通过旋转逻辑坐标系来解决。设备坐标系不动,用户绘图
是在逻辑坐标系中完成,无论怎么旋转,图元在逻辑坐标系中的坐标保持不变。这样,
在用户进行旋转操作后,只需对逻辑坐标系旋转相应角度就可以了,上面的种种问题通通
解决。
我查了api,有设置映射模式等方面的函数,但没有发现对逻辑坐标系进行旋转操作的。
这种方法通常用什么方法解决啊?看在敲这么多字的份上说两句吧:)100分,不够再加!
 
这个自己解决不容易,方便办法是使用DELPHIX(到处都可下载),不愿意的
话可以学习它的原代码,里面的tImagespriteex有个属性ANGLE(角度),设置
这个角度可以使该图形旋转,很好的。
 
我对图形只会设置映射而已,还没有用过,你问问斑竹,他的实力好好呀
 
呵呵,偶也不知道具体怎么解决,因为没用过cad,不过既然你是要旋转,建议你使用
极坐标,这样解决起来会很容易的
 
谢谢楼上几位!
传…卷……起……千……堆……雪……!
 
卷MM去哪了~~~~~~~~
 
用过这个控件没有,听说功能很强大,我没有用过,也对图形图像不在行,希望这个控件对你有帮助:

[发布日期 ]2003-4-29
ImageEn.v2.0.7
[内容]
在2002年度Delphi Informant 杂志评出的读者选择奖项中,
来自HiComponents 公司的ImageEn 以12%的票数获得了第三名。
比较小巧好用。大家可以参考本站的文章。

http://202.117.210.31/delphi/soft?type=图形图像
 
to—小刚:
你说的很对,ImageEn确实是一个功能很强大的图象处理控件,可是不见得适合做cad。我
现在用了cadodraw这个控件,它不支持我上面说的功能,所以我想自己做。
 
我对图形不是很在行,我觉得可以通过重画象素的方法来实现
 
雖然不懂,但你所認為的用邏輯坐標系來實現圖形的旋轉,我表示懷疑!
通用坐標系是支持位圖的旋轉,裁剪,扭豊等效果的(Win95是不支持的).
具體怎麼實現我不清楚!
 
我想这应该是矩阵变换的问题而不是映射模式问题。问问 DarwinZhang 或是 卷起千堆雪tyn 才行。
 
不在行,爱莫能助 :(
向卷起千堆雪tyn 版主求助。
 
哈哈,卷起千堆雪版主是MM?一直就听说了,但一直也不信。看来这是真的啊?

好强的MM啊,哈哈~~~
 
Sorry ! 帮不上忙。
 
帮不上忙帮提前吧吧
好象不能说u p了啊,刚才里面还有一个'u p',竟然说我灌水,晕
 
再次感谢各位关注!
在第一种思路的基础上:由于每种图元都是一个对象,继承各种图元的类,
添加相应的旋转方法,实时调用——图元对象的实例太多了,依然麻烦!
等于没说:)看来这雪还真得等斑竹来卷???他要是隔几天不上网,我岂不丢饭碗了?
晕!!!
 
glscene可以实现这种功能,即坐标系随意旋转,谁知道他们是怎么做的啊?
 
对不起!我对这个不是很在行!
 
对不起,图形方面的我不熟,很不熟!
 
不懂帮忙顶一下。
 
顶部