[**fabric-texture**](../../../../README.md)

***

# Function: isTriangleContainsPoint()

> **isTriangleContainsPoint**(`p`, `a`, `b`, `c`, `tolerate`): `boolean`

使用面积法判断点是否在三角形内部或边上

通过比较面积来判断点是否在三角形内部：
1. 计算原始三角形 ABC 的面积
2. 计算点 P 与三角形三个顶点形成的三个小三角形面积之和
3. 如果点在三角形内部，两个面积应该相等（考虑误差）

数学原理：
- 如果点在三角形内部，则点与三角形顶点构成的三个小三角形面积之和等于原三角形面积
- 如果点在三角形外部，则三个小三角形面积之和大于原三角形面积
- 如果点在三角形边上，则三个小三角形面积之和等于原三角形面积

## Parameters

### p

`Coord`

待判断的点坐标

### a

`Coord`

三角形顶点A坐标

### b

`Coord`

三角形顶点B坐标

### c

`Coord`

三角形顶点C坐标

### tolerate

`number` = `0.1`

容差值
  - 默认值：0.1
  - 用于处理浮点数计算的精度误差
  - 增大此值会使判断更宽松

## Returns

`boolean`

点是否在三角形内部或边上

## Example

```typescript
// 判断点是否在等边三角形内
const a = { x: 0, y: 0 };
const b = { x: 1, y: 0 };
const c = { x: 0.5, y: 0.866 };

// 检查中心点
const center = { x: 0.5, y: 0.289 };
console.log(isTriangleContainsPoint(center, a, b, c)); // true

// 检查外部点
const outside = { x: 2, y: 2 };
console.log(isTriangleContainsPoint(outside, a, b, c)); // false

// 检查边上的点
const onEdge = { x: 0.5, y: 0 };
console.log(isTriangleContainsPoint(onEdge, a, b, c)); // true
```

## Remarks

- 使用行列式计算三角形面积
- 考虑了浮点数精度问题
- 边界点也被视为在三角形内
- 三角形顶点的顺序不影响结果
