求图形交点

用一下午时间研究添加交点问题
1第一种思路,两个对象都(容器中最上层的两个对象)与MouseX,MouseY碰撞,这两个对象就有交点。思路是鼠标触发一个对象的mouseover事件,然后判断鼠标点所在位置是否还与其他对象相交,如果有则将两个对象记录下来并计算两个对象的交点位置,在交点位置建一个临时透明带边线点对象,在保持鼠标点与两个对象碰撞状态的情况下,如果这个临时透明的点的mouseover事件被触发。那么要添加的点的位置更新为透明点的位置,给人一种吸附的感觉。如果这时发生了mousedown事件,事件由它们的父容器来处理,将两个对象与点建立交点关系。
2第二个思路与第一种差不多,只是把碰撞改成是否鼠标点同时触发两个对象的MouseOver,容器中的所有元件都是兄弟关系。如果发生重叠的话,下面的元件不会触发MouseOver事件.这个办法让我钻进了牛角尖。想让两个对象能同时触发MouseOver,需要鼠标点同时触碰到两个对象的边缘,这个动作感觉很容易发生,但实际非常不容易发生,如果把两个图形元件考虑成两个面的话,只能寄希望于鼠标点碰到了两个面边框线相交的交点。所以这种想法是错的!
3用元件的实际像素来判断是否碰撞
4UIComponent的getObjectsUnderPoint()方法,思路和第一种方法一样。
上面的四种方法都是判断两个对象是否可能有交点,
交点的计算才是重点。比如说各种曲线之间的交点,画板以前找曲线之间交点的办法是非常影响性能的。它把每个函数都分成了很多个小线段去找交点,本身绘制一个函数图像就要循环很多次,如果函数之间还有交点那么循环的次数就更多了。但暂时还没有什么好办法,这将是要解决的一个重点问题!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值