Eug*_*ota 5 graphics ellipse bounding-box eigenvector
给定用户绘制的“形状”,我想对其进行“标准化”,以便它们都具有相似的大小和方向。我们拥有的是一组点。我可以使用边界框或圆来近似大小,但方向有点棘手。
我认为,正确的方法是计算其边界椭圆的长轴。要做到这一点,你需要计算特征向量的的协方差矩阵。这样做可能对我的需要来说太复杂了,因为我正在寻找一些足够好的估计。选择最小、最大和 20 个随机点可能是一个开始。有没有一种简单的方法来近似这个?
您将计算 2x2 矩阵的特征向量,这可以通过一些简单的公式来完成,因此并不那么复杂。在伪代码中:
// sums are over all points
b = -(sum(x * x) - sum(y * y)) / (2 * sum(x * y))
evec1_x = b + sqrt(b ** 2 + 1)
evec1_y = 1
evec2_x = b - sqrt(b ** 2 + 1)
evec2_y = 1
Run Code Online (Sandbox Code Playgroud)
如果您希望所选的点子集能够代表整个点集,您甚至可以通过仅对某些点求和来获得估计值。
编辑:我认为 x 和 y 必须转换为零均值,即首先从所有 x、y 中减去均值(eed3si9n)。