gpt4 book ai didi

iphone - 如何绘制移动的激光束?

转载 作者:行者123 更新时间:2023-12-03 20:58:13 25 4
gpt4 key购买 nike

我想要画一束可以在盒子周围反弹的激光束。基本上,激光束的长度是可变的,当它从表面反射时,它会以碰撞的角度反射。

我可以自己处理碰撞问题(可能还没有尝试过),但我对实际绘图在这里如何工作感到困惑。这不像我画一条直线,我有时需要复制这条线,这样就会有两条线彼此成一定角度,但是当激光束停止时,游戏需要计算出光束的末端在哪里,所以在整个光束从表面弹回后,它可以停止绘制第一条线。

抱歉,我的解释很糟糕。

最佳答案

我的数学和三角学有点生疏,但这是我的尝试。

光束的正确位置和长度取决于四个变量,

  • v,光束的速度,因为这可能不是真正的激光束,因此它的速度比 c 慢得多。为了方便起见,我们可以将 v 存储为每单位时间从光束角度向前移动的距离。
  • theta,入射角,即光束撞击墙壁或障碍物的角度。
  • l,梁的长度。
  • t,事件发生的时间(让T为当前时间)。

基本上,以速度v行进的光束以theta角度撞击墙壁。碰撞会发生多久? (从发生碰撞到光束完全通过入射点需要多长时间?)

首先,由于光束相对于正交坐标集以一定角度行进,因此我们应该获得速度和长度的 x 和 y 分量。

v.x = cos(theta) * v
v.y = sin(theta) * v
l.x = cos(theta) * l
l.y = sin(theta) * l

如果光束可以反射的墙壁本身有角度,则必须使用墙壁的角度作为引用框架(使用两个角度之间的差值)来投影到它们上。

现在光束从左侧射出并离开右侧所需的时间由下式给出:

d = l.x/v.x

假设事件开始于时间t,当前时间为T。那么,在入射点左右两侧绘制的光束所占的比例为,

r = (T - t)/d
= l * r
= l * (1 - r)

此示例经过简化,仅显示如何计算光束从左向右照射时的位置。我认为将这些原理应用于从顶部或底部撞击垂直障碍物的光束应该是一个相当简单的过程。另外,请考虑梁头撞击第二个障碍物但仍与第一个障碍物发生碰撞的情况。

在这种情况下,我们需要另一个变量来代替 l 来表示不是梁的整个长度,而是梁可用于碰撞的部分的长度(两者之间的欧几里得距离)事件地点)。

关于iphone - 如何绘制移动的激光束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3392743/

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