判断两三角形是否相交

本文介绍如何判断两个三角形是否相交。基于点在三角形内的判断,如果三角形A的每个顶点都不在三角形B内,且三角形B的每个顶点也不在三角形A内,并且三角形A的每条边都不与三角形B相交,那么这两个三角形是相离的。提供相关代码实现。

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("该三点不能组成三角形")
		return false
	}
	//A三角形三点如果全部在B的外面   并且B的三点全部在A的外面  满足这个条件三角形必定不相交 true 是相交 false 不相交
	if IsInTr
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值