我有兩個六邊形,我試圖在邊緣達到一定的公差時將它們拼合在一起。查找兩條線之間的距離
我怎樣才能找到最接近的邊緣?
這裏是返回最接近的兩個六邊形代碼:
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);
}
這裏是一個標準點陣列爲他的一個xagons是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}
這聽起來更像是一個數學問題,而不是編程問題。無論如何,你到目前爲止做了什麼?您需要顯示代碼才能獲得幫助。 –
這是一個數學問題,我有一堆代碼不涉及處理拖動和兩點之間的距離問題。你想看見什麼? – Ashbury
如果不需要100%精確的結果,則可以計算六邊形中心之間的距離,從而將它們近似爲圓形。只要(x1-x2)^ 2 +(y1-y2)^ 2低於一個閾值,讓它們對齊。 –