编辑我正在寻找实际的一两个班轮,做了很多upvote建议的答案.
我在一个非常真实的软件中解决了一些问题,我正在寻找一种简单的方法来解决它.
我在屏幕上有两个固定点(它们是固定的,但我事先不知道它们的位置),它们不在同一个位置.这两个固定点形成一条虚线.现在我有第三个点就是那条线的"一边"(它不能在线上).用户可以抓住该点(用户实际抓取我通过其中心跟踪的对象,这是我感兴趣的点)并拖动它.但它无法"穿越"虚线.检测用户是否越过虚线的最简单方法是什么?
积分可能是:
a[] = new int { 30, 50};
b[] = new int { 0, 100 };
c[] = new int { 20, 22 };
Run Code Online (Sandbox Code Playgroud)
示例(不对应上述几点):
/
a
c /
/
/ (c cannot be dragged here)
b
/
要么:
c
---b--------------c--- -- -- -- - -
(c cannot be dragged here)
那么,如果c停留在线的正确"侧",那么容易检测到什么(我在这里画段,但它真的可以被认为是一条线)?
检测这种情况的一种方法是获取目标点d并查看段(c,d)是否与线(a,b)相交,但是不是更简单的方法吗?我不能在这里做一些2D点产品魔术并且基本上有一两个线程解决我的问题吗?