[问题] 判断座标是否落于范围内

楼主: AutoTea (自动茶)   2017-11-06 23:09:58
  想请教各位前辈,小弟目前有一个问题:
(x1,y1)┌────────────┐(x2,y2)
   │            │
  │ .←(x,y) │
│ │
(x3,y3)└────────────┘(x4,y4)
目前判断(x,y)是否于上面四方型的方法是采用:GraphicsPath.IsVisible
x1 <-> x2 = width y1 <-> y2 =height
width, heihgt 的范围太大了(20000以上),往往判断一符图下来要10分钟以上
(跑width, heihgt loop),不知各位前辈有没有什么好方法,可以让速度再快一点?
感谢
作者: anumis (阿努米斯)   2017-11-07 00:48:00
2万的项目纯判断循环很快吧,应该不到1秒,你的程式码方便贴出来吗?
作者: stupid0319 (征女友)   2017-11-07 01:04:00
改成C语言应该可以快一倍
作者: Laluth (阳光)   2017-11-07 09:36:00
如果这是循环内全部的程式码的话if判断应该可以移到循环外
作者: hrih (hrih)   2017-11-07 14:38:00
用外积判断就好了,给你关键字,射线法
作者: Litfal (Litfal)   2017-11-07 20:12:00
因为GraphicsPath.IsVisible比你想像中复杂,如果都是矩形请用Rectangle.Contains然后根本不需要扫整个矩形范围检查,只要跑四个循环设定矩形范围外的就好
作者: bestman8556 (廷廷)   2017-11-22 12:19:00
碰过这种类似问题,射线法解决+1

Links booklink

Contact Us: admin [ a t ] ucptt.com