gpt4 book ai didi

javascript - 求两个六边形之间的距离

转载 作者:行者123 更新时间:2023-11-28 01:43:00 26 4
gpt4 key购买 nike

我有两个六边形,当边缘达到一定的公差时,我试图将它们咬合在一起。

如何找到最接近的边缘?

Hexagon 1, Side 1 is closest to Hexagon 3, Side 4

Hexagon 1, Side 2 is closest to Hexagon 3, Side 5

这是返回两个最接近的六边形的代码:

Canvas.getClosestPiece = function(){
var current = {};
current.x = selection.MidPoint.X;
current.y = selection.MidPoint.Y;
smallestDistance = null;
closestHex = null;

hexagons.forEach(function(hexagon){
if(hexagon !== selection){
testPiece = {};
testPiece.x = hexagon.MidPoint.X;
testPiece.y = hexagon.MidPoint.Y;
if((lineDistance(current, testPiece) < smallestDistance) || smallestDistance === null){
smallestDistance = lineDistance(current, testPiece)
closestHex = hexagon
hexagons.forEach(function(hexagon){
hexagon.lineColor = 'grey'
})
hexagon.lineColor = 'red';
}
}
})
// console.log(smallestDistance)
return [selection, closestHex]
}

两个六边形中点之间的距离:

function lineDistance( point1, point2 ){
var xs = 0;
var ys = 0;

xs = point2.x - point1.x;
xs = xs * xs;

ys = point2.y - point1.y;
ys = ys * ys;

return Math.sqrt( xs + ys );
}

这是 getClosestPiece 返回的六边形之一的标准点数组:

Point {X: 658, Y: 284} 
Point {X: 704, Y: 304}
Point {X: 704, Y: 354}
Point {X: 658, Y: 375}
Point {X: 613, Y: 354}
Point {X: 613, Y: 304}

最佳答案

如果你有 2 个点,它们的坐标如 p1(x1, y1) 和 p2(x2, y2)。你可以这样做:

var disptance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));

关于javascript - 求两个六边形之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20650368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com