点积与叉积
计算几何
说明
点积衡量投影,二维叉积的符号判断转向;均为常数时间。
分析
点积 a·b 与向量夹角和投影有关,常用于判断朝向与计算长度。二维叉积 a×b 的符号区分从 a 转向 b 是左转、右转还是共线。
图解推演
a=(1,2)、b=(3,4),点积为 1×3+2×4=11,叉积为 1×4−2×3=−2。在通常 x 向右、y 向上的坐标系中,负叉积表示 a 转向 b 为顺时针。屏幕 y 向下时视觉方向相反;零叉积只说明共线,不能区分同向与反向。
查看图表代码
适用前提与边界
坐标值很大时,乘法可能超出 int 范围,需要更宽的数值类型。
示例输入与调用
go
a, b := Point{1, 2}, Point{3, 4}
fmt.Println(Dot(a, b), Cross(a, b))运行输出
text
11 -2完整 Go 示例
go
package main
import "fmt"
type Point struct{ X, Y int }
func Dot(a, b Point) int {
return a.X*b.X + a.Y*b.Y
}
func Cross(a, b Point) int {
return a.X*b.Y - a.Y*b.X
}
func main() {
a, b := Point{1, 2}, Point{3, 4}
fmt.Println(Dot(a, b), Cross(a, b))
}继续阅读
- 算法推演
- 算法推演
- 算法推演