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