glsl - 对于两个向量 a、b,给定它们之间的 45 度角,此着色器代码返回什么?
问题描述
什么是返回值:
dot(normalize(a), normalize(b))
假设向量 a 和 b 之间的角度为 45°。
- 0
- 1
- 平方(2)
- 1 / sqrt(2)
解决方案
一般来说,两个向量的点积等于两个向量之间的夹角的余弦乘以两个向量的大小(长度)。
dot( A, B ) == | A | * | B | * cos( angle_A_B )
因此,2 个单位向量的点积等于 2 个向量之间夹角的余弦,因为单位向量的长度为 1。
uA = normalize( A )
uB = normalize( B )
cos( angle_A_B ) == dot( uA, uB )
这意味着,如果向量a
和之间的角度b
为 45 度,则:
dot(normalize(a), normalize(b)) = cos(45°) = 1 / sqrt(2)
请注意,边长为1的正方形中对角线的长度是sqrt(2)。如果对角线的长度为1,则一侧的长度为1 / sqrt(2)。
推荐阅读
- ffmpeg - ffprobe/ffmpeg 报告通过标准输入提供文件时的不同视频持续时间
- java - 如何为开源服务器端(java)文件开发服务器端(jsp)代码?
- python - 如何获取正在使用的 ipython 笔记本的文件路径?(相当于 __file__)
- xcode - 如何让我的 SwiftUI UIViewRepresentable 在预览中尊重intrinsicContentSize?
- android - java.lang.IncompatibleClassChangeError:类 'org.apache.http.message.BasicHeader' 未实现接口 'org.apache.http.NameValuePair'
- algorithm - 如何找到对数组进行排序所需的最小交换次数?
- javascript - 如何解决检索数据时由于操作顺序不同导致javascript+firebase函数返回值不正确的问题?
- r - 使用 ggplot 绘制多色垂直线,以将每种类型的平均时间显示为构面。每种类型都有不同的垂直线
- javascript - 如何通过图像查找元素
- ios - 如何从 Azure Pipeline 在 Bitbucket 中更新构建状态?