如何找到曲线的最陡点或曲率的圆弧?

How can I find the steepest point of curve or the arc of the curvature?

鉴于曲线我只有曲线的(X,Y)坐标,我想找到这条曲线的最陡点或弧长(弧的起点和终点)

如果您有一组要在其间绘制直线的点,则它是一个多边形,而多边形的点没有斜率,因为点一侧的线的斜率通常是与点另一侧的线的斜率不同。您可以获得点之间的斜率,这就是下面的代码所做的。 (这是 javascript 因为您没有指定语言)

var pointsArray = [[0,0],[5,13],[10,19],[15,14],[20,-3]];

function findSlopes(points) {
    var result = [];
    for (i = 0; i < points.length - 1; i++) {
        var rise = points[i+1][1] - points[i][1];
        var run = points[i+1][0] - points[i][0];
        result.push(rise / run);
    }
    return result;
}

var slopesArray = findSlopes(pointsArray);

console.log("slopes " + slopesArray);

要找到最陡的坡度,逐步遍历坡度数组以找到最大的绝对值。

function steepestSlope(slopes) {
    var steepestValue = 0;
    var steepestIndex = -1;
    for (var i = 0; i < slopes.length; i++) {
        if (Math.abs(slopes[i]) > Math.abs(steepestValue)) {
            steepestValue = slopes[i];
            steepestIndex = i;
        }
    }
    return steepestIndex;
}

var steepest = steepestSlope(slopesArray);

console.log("steepest " + steepest);

下面的代码计算由点表示的多边形的总长度。

function findLength(points) {
    var result = 0;
    for (i = 0; i < points.length - 1; i++) {
        var dx = points[i+1][0] - points[i][0];
        var dy = points[i+1][1] - points[i][1];
        result += Math.sqrt(dx * dx + dy * dy);
    }
    return result;
}
var length = findLength(pointsArray);

console.log("length " + length);

如果您使用的不是直线来连接这些点,例如样条曲线,那么这些点确实有曲率并且数学会更复杂。