gpt4 book ai didi

c++ - 将 vector 限制在最小值和最大值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:25:51 29 4
gpt4 key购买 nike

我遇到了这个:t = 钳位(t/d, 0, 1) 但我不确定如何对 vector 执行此操作。如果编写自己的 vector 实现,钳制 vector 的步骤是什么?

谢谢

clamp 将 vector 钳制到最小值和最大值

例如:

pc = # the point you are coloring now
p0 = # start point
p1 = # end point
v = p1 - p0
d = Length(v)
v = Normalize(v) # or Scale(v, 1/d)

v0 = pc - p0

t = Dot(v0, v)
t = Clamp(t/d, 0, 1)

color = (start_color * t) + (end_color * (1 - t))

最佳答案

我认为一旦你清楚地表达了你的意思,你会发现大部分工作都为你完成了......

我猜您想将 vector (而不是 vector 数据结构)的长度限制在指定范围内而不改变其方向,不是吗?

所以:

if (v.length > max)
v.setlength(max)
else if (v.length < min)
v. setlength(min)

length()setlength() 的实现取决于您存储 vector 的方式。


如果您的 vector 以(角度,幅度)形式存储,这几乎是微不足道的。如果以笛卡尔形式存储(即 (x,y,z) ),您可以从毕达哥拉斯定理得到 length 并且 setlength 应该将每个组件缩放 desired_length/current_length.

关于c++ - 将 vector 限制在最小值和最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3009268/

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