我正在尝试从数据库中选择所有点,只要我的角度在另外两个角度之间...我在 PHP 中有这段代码,效果很好:
public static function angle_between($value, $ang_a, $ang_b)
{
$n = (360 + ($value % 360)) % 360;
$a = (3600000 + $ang_a) % 360;
$b = (3600000 + $ang_b) % 360;
return ($a < $b) ? ($a <= $n && $n <= $b) : ($a <= $n || $n <= $b);
}
但是我如何在 SQL 中执行此操作?我当然在尝试这个
SELECT ... WHERE angle BETWEEN X AND Y
但是我使用的是“角度公差”,这个例子在这种情况下当然不起作用:
angle = 355;
x = (angle - 10)
y = (angle + 10);
SELECT * FROM ... WHERE angle BETWEEN 345 AND 5
// 5° cause 355°+10° = 365° = 5°
当然不是介于两者之间,而是...
顺便说一句:angle_between(355, 345, 5);//真
最佳答案
您必须将范围分成两个范围,然后检查:
SELECT * FROM ... WHERE angle BETWEEN 345 AND 360
OR angle BETWEEN 0 AND 5;
关于php - MYSQL - 计算一个角度是否在两个角度之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41412269/