python - 缩放 2D 坐标并保持它们的相对欧氏距离不变?

标签 python math coordinates scale

我有一组点,例如:pointA(3302.34,9392.32)、pointB(34322.32,11102.03) 等

我需要对它们进行缩放,以便每个 x 和 y 坐标都在 (0.0 - 1.0) 范围内。 我尝试通过首先找到数据集中的最大 x 值 (maximum_x_value) 和该集中最大的 y 值 (minimum_y_value) 来做到这一点。然后我做了以下事情:

pointA.x = (pointA.x - minimum_x_value) / (maximum_x_value - minimum_x_value)
pointA.y = (pointA.y - minimum_y_value) / (maximum_y_value - minimum_y_value)

这改变了相对距离(?),因此使数据对我的目的毫无用处。有没有一种方法可以缩放这些坐标,同时保持它们的相对距离不变?

最佳答案

您需要将 x 值和 y 值缩放相同的量!我建议按两个范围中较大的一个进行缩放(xy)。在伪代码中,你会有类似

scale = max(maximum_x_value - minimum_x_value,
            maximum_y_value - minimum_y_value)

然后点之间的所有距离都将按 scale 进行缩放,这就是我假设你要求的,所以如果点 p_1 是点的两倍p_2p_3 相比,在重新缩放之前,它在重新缩放之后也是原来的两倍。您应该能够使用勾股定理很容易地向自己证明这一点。

关于python - 缩放 2D 坐标并保持它们的相对欧氏距离不变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2450035/

相关文章:

java - 通过简单的数学计算始终获得 0 值

php - "Mapping"指向字符的箭头

iphone - 将原点设置为屏幕中心而不是屏幕左上角?(iPhone)

android - 在 ListView 项内的另一个 View 的特定坐标处动态放置一个 View

Python win32gui 滚动 Internet Explorer/Firefox/Web 浏览器窗口

python - 如何在运行时使用类型定义具有内部类的类?

python - 如何修改文件的最后一行?

python - 我想使用 praw 获取 subreddit 中所有时间的热门帖子列表

不同 cmath log() 和 exp() 实现中的 c 语言对称性?

c++ - 我如何决定在控制台的哪个位置写入文本? (即 : 97% 98% 99%. ...)