我有一套积分.我想把它们分成两组.为此,我选择两个点(a和b)并在它们之间绘制一条虚线.现在我想让一行中从这一行留下的所有点和另一组中从该行开始的那些点.
如何判断任何给定点z是左侧还是右侧?我试图计算azb之间的角度- 小于180的角度在右侧,大于180在左侧 - 但由于ArcCos的定义,计算的角度总是小于180°.是否有公式计算大于180°的角度(或选择右侧或左侧的任何其他公式)?
我需要一个快速算法来检查两条非无限线是否正在交叉.必须快速,因为它会在手机上运行很多.
该算法只需要返回yes或no,它不必确切地找出线交叉的位置!
我看过这里:你如何检测两个线段相交的位置? 但是这个线程是一个丛林,人们一直在说"这就是答案"但是其他两个人说这是错误的,因为这个和那个错误.
请帮我找到一个好的和有效的算法.
为了清楚起见:我需要一个你给出的函数
lineApointAx
lineApointAy
lineApointBx
lineApointBy
lineBpointAx
lineBpointAy
lineBpointBx
lineBpointBy
......并且返回true或false,具体取决于两条线是否交叉.
如果你回答(伪)代码,而不是公式,我将不胜感激.
如果中心为cx和cy
质心圆的半径,我如何绘制等边三角形?
如何找到一个点是否在三角形内?

PS:我正在构建这个android,但这个问题与语言无关.
我需要计算3点之间的角度.为此,我执行以下操作:
Math.acos对于没有超过180度角度的形状,这似乎工作正常,但是如果形状有这样的角,则计算短边.这是一个说明我的意思(红色值是错误的):

这是进行计算的代码:
// Pythagoras for calculating distance between two points (2D)
pointDistance = function (p1x, p1y, p2x, p2y) {
return Math.sqrt((p1x - p2x)*(p1x - p2x) + (p1y - p2y)*(p1y - p2y));
};
// Get the distance between the previous, current and next points
// vprev, vcur and vnext are objects that look like this:
// { x:float, y:float, z:float }
lcn = pointDistance(vcur.x, vcur.z, vnext.x, vnext.z);
lnp = pointDistance(vnext.x, vnext.z, vprev.x, vprev.z);
lpc = pointDistance(vprev.x, …Run Code Online (Sandbox Code Playgroud) 我需要弄清楚如何计算一条线的哪一侧.我正在寻找一种非常快速和简单的碰撞算法,因为我只需要知道对象在哪一侧定义碰撞状态.
就像:
if(x > line.x)
return EnumSide.LEFT;
Run Code Online (Sandbox Code Playgroud)
但该线需要对角线.有任何想法吗?
math ×3
algorithm ×1
angle ×1
c# ×1
collision ×1
convex-hull ×1
drawing ×1
geometry ×1
intersection ×1
java ×1
javascript ×1
line ×1
shape ×1