Говорят, что расстояние равно следующей формуле:
distance = sqrt( (x2 - x1)**2 + (y2 - y1)**2 )
Я делаю эту точную формулу в функции ниже. Однако проблема, с которой я сталкиваюсь, заключается в том, что когда x2
меньше x1
, например, я получаю сообщение об ошибке, потому что uint256 не может быть отрицательным.
Кто-нибудь знает, как я могу учесть это в твердости при расчете расстояния?
function getDistance(uint256 x1, uint256 x2, uint256 y1, uint256 y1, ) private view returns(uint256) {
return sqrt(((x2 - x1)**2) + ((y2 - y1)**2));
}
function sqrt(uint x) private pure returns (uint y) {
uint z = (x + 1) / 2;
y = x;
while (z < y) {
y = z;
z = (x / z + z) / 2;
}
}
Вместо использования uint256 используйте int256, чтобы вы могли принять отрицательное число