如何检查 Adafruit TFT 屏幕上绘制的两个圆圈是否相互接触?
How to check if two circles drawn on an Adafruit TFT screen are touching eachother?
我正在 Adafruit TFT 1.8 屏幕上制作(或者更确切地说,试图制作,哈哈)贪吃蛇游戏。然后我当然需要蛇头知道它何时击中 "point",因此我需要知道两个大小相等的圆圈何时相互接触。但是,我的这个功能不起作用(换句话说打印 "NOT TOUCHING")。
我试图遵循这个公式:
(sqrt(dx2 + dy2))
两个圆的半径都是 3,我通过将圆的屏幕位置 x 和 y 相加得到公式的中心(我什至得到的中心正确吗?)。
void pointCondition() {
double centerPoint = pointPositionX + pointPositionY;
double centerSnakeHead = positionX + positionY;
int distanceBetweenCenter = (sqrt(centerPoint * 3 + centerSnakeHead * 3));
int weight = 3 / 2;
if (distanceBetweenCenter < weight) {
Serial.println("TOUCHING");
} else {
Serial.println("NOT TOUCHING");
}
}
你能看出我做错了什么吗?
你需要这样的东西:
double dx = pointPositionX - positionX,
dy = pointPositionY - positionY,
d = sqrt(dx * dx + dy * dy);
bool touching = d <= 3;
我正在 Adafruit TFT 1.8 屏幕上制作(或者更确切地说,试图制作,哈哈)贪吃蛇游戏。然后我当然需要蛇头知道它何时击中 "point",因此我需要知道两个大小相等的圆圈何时相互接触。但是,我的这个功能不起作用(换句话说打印 "NOT TOUCHING")。
我试图遵循这个公式: (sqrt(dx2 + dy2))
两个圆的半径都是 3,我通过将圆的屏幕位置 x 和 y 相加得到公式的中心(我什至得到的中心正确吗?)。
void pointCondition() {
double centerPoint = pointPositionX + pointPositionY;
double centerSnakeHead = positionX + positionY;
int distanceBetweenCenter = (sqrt(centerPoint * 3 + centerSnakeHead * 3));
int weight = 3 / 2;
if (distanceBetweenCenter < weight) {
Serial.println("TOUCHING");
} else {
Serial.println("NOT TOUCHING");
}
}
你能看出我做错了什么吗?
你需要这样的东西:
double dx = pointPositionX - positionX,
dy = pointPositionY - positionY,
d = sqrt(dx * dx + dy * dy);
bool touching = d <= 3;