[数学] 证明线条闭合
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-12
[全屏欣赏] 参与闪吧论坛相关讨论 拿支笔在纸上画啊画的....怎么判断线条闭合,除了用眼睛以外我没想过其他办法,可是程序没有眼睛,怎么办?! 话说回来,就算眼睛看到闭合了,你为什么说它就是闭合了??? 上面的问题,我没做这个例子之前从来没想过...做了以后才发现,很多显而易见的东西,道理其实不是什么人都懂的,我终于明白了,偶们的陈景润干吗要去证明1+1了 >o< ok....数学啊数学...偶的痛(偶好像浑身是痛..寒) 废话不再说了 首先要知道点斜式,不知道的往下看,偶现在把你当之前的我在教(我复习了好久啊..苦闷555) y = k*x + b; k = (y2-y1) / (x2-x1); 分母不为0 以上k为斜率...算法为任取一条直线上两个不同点,得到坐标(x1,y1)(x2,y2)... b为截距, 也就是直线在y轴的交点坐标...别说没交点,直线能无限衍生哦(要我复习直线的概念?晕) ok...公式知道了,偶们就可以干点事情了...比如我们有两条直线,任意在上面各抓两不同点,设为 (px1,py1),(px2,py2) -- 线段p (qx1,qy1),(qx2,qy2) -- 线段q 我们可以得到 pk = (py2-py1)/(px2-px1); pb = py1 - px1*pk;(这里用py2,px2代入也是一样的) 同理 qk,qb 然后捏...假设p和q相交...交点为i,坐标为(xi,yi); 那么i也在p上,i也在q上...这句似乎是废话~~~ 列出二元一次方程(大哥表走...方程不用你解的啦-_-!) yi = xi*pk + pb; yi = xi*qk + qb; .......!%$@##$#@#@@%!$^@%!...... 头大的计算中... xi = (qb - pb)/(pk - qk); yi = xi*pk + pb;(这里用qk,qb也是一样的) 乌拉拉乌拉拉...交点坐标算出拉......偶们的任务完成1/2了.... 废话不多,继续啊~~^<>^ 我们已经判断线条的闭合,但是要填充它,又一个问题... 因为之前判断都是直线的...也就是说直线只要不平行,总有交点,而我们画线时,随机拿出来的两条是线段,很有可能交点是在线段的衍生线上的.... 接下去我们要做的是判断这个交点是否在线段内...否则交了也白交,你也看不到 还是(xi,yi)...这里要用到一个叫什么等比比例公式的,不好意思忘掉了,不过可以肯定是初中学的,上面的点斜式是高中学的....什么你小学就学了?!大哥这里不是你来的...去,去国家科学院去 >口< 那个比例公式大致就是给你一条直线,任取3点(为了方便就取x轴了,y坐标就免了) x1,x2,x3 公式 n = (x2-x1) / (x3-x1) 如果 0<=n<=1 x2在线段x3x1内,否则不是出头就是出尾 好了好了...这样子...结合上面的,我们就可以作出判断了....(我知道你忘了-w-,自己回上去看) t = (xi - px1)/(px2 - px1) s = (xi - qx1)/(qx2 - qx2) 0<=t<=1并且0<=s<=1 那么交点在线段内,你能看到这个交点所在(x的比了,y就不用比了,什么为什么,没有为什么>o<) 终于完事了....下面贴个as代码,大家看一下吧...做了简单注释....至于线条填充部分的判断.....其实就是把鼠标各点保存数组,然后逐个判断....以后有空再讲吧...累了..睡了..zzzZZZZZ (不好意思,没有贴图...自行想象一下吧^^")
|
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: flash手机游戏按键事件下一篇: 根据时间对应显示文字或其他
关于[数学] 证明线条闭合的所有评论