1,原理:在上篇文章中我们可以判断点是否在三角形内。这张判断两三角形是否相交,只需要判断三角形A的三个顶点不在三角形B内,三角形B的三个顶点不在三角形A则满足两三角形相离,并且判断三角形A的三条边与三角形B 都不想交
代码如下:
// test project main.go
package main
import (
"fmt"
)
//坐标
type victor struct {
X float32
Y float32
}
func main() {
//测试点
pA1 := &victor{0, 0}
pA2 := &victor{2, 0}
pA3 := &victor{2, 2}
pB1 := &victor{1.5, -1}
pB2 := &victor{0, 1}
pB3 := &victor{1.5, 2}
IsCorssTriangle(pA1, pA2, pA3, pB1, pB2, pB3)
}
//判线段是否在三角形内
func IsCorssTriangle(pA1 *victor, pA2 *victor, pA3 *victor, pB1 *victor, pB2 *victor, pB3 *victor) bool {
//比例系数(p1.X - p2.X) / (p1.Y - p2.Y)
//C p1.Y-((p1.X - p2.X) / (p1.Y - p2.Y))*p1.X
//IsTriangle判断是否是三角形
if !IsTriangle(pA1, pA2, pA3) {
fmt.Println("该三点不能组成三角形")
return false
}
//IsTriangle判断是否是三角形
if !IsTriangle(pB1, pB2, pB3) {
fmt.Println("该三点不能组成三角形")
retur