射线到线段最短距离, 以及最近点的计算方式 #16
tiye
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
在 Soluble 当中经常遇到, 虽然是类似 SDF 计算每个点的着色, 但是 Soluble 简化了图案, 比较简单.
这样, 就很容易遇到了一个计算射线距离线段最短的距离, 比如这个图案当中,
https://webgpu.art/soluble/?tab=parallel-mirror
为了计算光晕的强度, 就需要知道射线到线段的距离, 有两种可能,
实际当中取的是直线间最短, 还是端点到直线最短, 是比较麻烦的, 这个情况就需要计算最近点是不是在线段内,
或者说, 最近的点, 到两个端点的向量, 是不是反向的?
这个也就涉及到了两直线距离最近点的具体位置了. 此外, 也可以推算直线射线到最短点, 经过了多长距离.
我这里没有完全准确得计算方案, 大致有思路, 基于 Gemini 的提示再处理成方程算了一下.
大致得到一个结果, 效果看开头给的图像... 这里记录一下大致步骤.
仔细看的话, 这里计算 k 的过程, 第一步的平移就有问题, 平移的方向是不确定的, 所以正负号不知道.
所以这个计算步骤, 只是实际使用当中没有直接撞上问题, 但并不准确.
由于实现这个之前, 网上到处找公式比较费劲, 所以把已知的计算步骤记录一下. 方便查阅.
也希望有人能整理更清楚的计算过程, 还有补充图示.
万一以后某天我真的很有时间了, 那是还没有人补的话, 那也只能我自己补一个了.
Beta Was this translation helpful? Give feedback.
All reactions