我搜索了Google并且可以找到圆圈到圆圈的交叉点,但我没有找到任何方法来判断交叉点是从左边,右边,顶部还是底部。
请告诉我在C或C ++中是如何完成的?
我确实试过这个,但它输出的方面是错误的..
if ( ((dx*dx) + (dy*dy)) < radii * radii) {
if (Circle2Position.x < Circle1Position.x) {
// code |= LEFT;
} else if (Circle2Position.x > Circle1Position.x+Circle1.width) {
// code |= RIGHT;
}
if (Circle2Position.y < Circle1Position.y) {
// code |= BOTTOM;
} else if (Circle2Position.y > Circle1Position.y + Circle1.height) {
// code |= TOP;
}
}
答案 0 :(得分:1)
这是一个数学而不是C ++特定的问题。您可以使用向量v = c1 - c2
确定象限,该向量是两个圈子中心c1
和c2
之间的差异。然后,根据v
的X和Y坐标的符号,您可以说出圆与哪个方向相对。
在C ++中,根据几何相关代码的数量,使用现有的矢量类是有意义的。建议的内容取决于您的项目及其领域......