gpt4 book ai didi

c++ - 改变边界时平移轴

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:49:21 24 4
gpt4 key购买 nike

所以我理解翻译:

x = x' + x0     or     x' = x - x0
y = y' + y0 or y' = y - y0

其中 (x,y) 是相对于 xy 系统的旧坐标,(x',y') 是相对于 x'y' 系统的新坐标,(x0,y0) 是相对于旧 xy 系统的坐标。

我希望在改变边界的同时翻译一个系统。我想在固定窗口内“放大”图形的特定部分,这会改变原点和边界。

作为引用,我问了一个类似的问题here ,但我认为这有点令人困惑。

最佳答案

希望这能回答您的问题:

假设您正在绘制的窗口(以像素坐标表示)左下角是(p_ll, q_ll),右上角是(p_ur , q_ur).

然而,在您的笛卡尔坐标中,相同的位置是 (x_ll, y_ll)(x_ur, y_ur)。那么这些就是您需要的转换:

p(x) = p_ll + (p_ur - p_ll) * (x - x_ll) / (x_ur - x_ll)
q(y) = q_ll + (q_ur - q_ll) * (y - y_ll) / (y_ur - y_ll)

因此,例如,如果窗口是 x 从 0 到 600,y 从 0 到 600,绘图边界是 x 从 -2 到 2,y 从-1 到 1 那么坐标为 (0.0, 0.0) 的点将位于 (p(0), q(0))

p(0.0) = 0 + (600 - 0) * (0 -(-2)) / (2 - (-2)) = 300
q(0.0) = 600 + (0 - 600) * (0 - (-1)) / (1 - (-1)) = 300

其他点也一样。您可以尝试方程式,您应该发现 p(-2) = 0p(2) = 600q(-1) = 600,和 q(1) = 0

请注意,我在这里假设像素 y 坐标指向下方(几乎所有显示器坐标都是如此),而笛卡尔坐标 y 指向上方。

如果你想从屏幕坐标转到绘图坐标(例如,如果你想将鼠标点击的位置转换为其对应的笛卡尔坐标),请使用这些逆变换:

x(p) = x_ll + (x_ur - x_ll) * (p - p_ll) / (p_ur - p_ll)
y(q) = y_ll + (y_ur - y_ll) * (q - q_ll) / (q_ur - q_ll)

关于c++ - 改变边界时平移轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31972897/

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