Skip to content
← 返回算法列表
问题与数据结构

点积与叉积 ​

计算几何

说明 ​

点积衡量投影,二维叉积的符号判断转向;均为常数时间。

分析 ​

点积 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))
}

继续阅读