C语言实现二维几何运算函数库

3星 · 超过75%的资源 需积分: 33 27 下载量 8 浏览量 更新于2024-09-21 收藏 9KB TXT 举报
本文介绍了一个C语言实现的二维解析几何函数集,包含了多个关键的几何计算功能,如向量操作、点线距离计算、线段交点、旋转、碰撞检测等,适用于游戏开发、图形学等领域。 在二维解析几何中,向量是描述空间位置变化的重要工具。该函数集提供了向量的基本操作: 1. 向量加减法:通过point结构体表示向量,定义了`add`和`minus`两个函数,分别实现了向量的加法和减法。例如,给定两个向量p1和p2,`add(p1, p2)`返回它们的和,`minus(p1, p2)`返回它们的差。 2. 向量点乘与叉乘:点乘(标量积)用于计算两个向量的内积,表示它们在相同方向上的分量的乘积。而叉乘(向量积)在二维空间中表现为一个标量,其值等于两个向量构成的平行四边形的面积。函数未在摘要中直接给出,但可以使用`dx * dy - dy * dx`来计算两个二维向量的叉乘结果。 3. 向量缩放:`scale`函数将一个向量按指定比例s缩放。例如,`scale(p, s)`会返回向量p放大或缩小s倍后的结果。 4. 向量长度:`distance`函数计算两点之间的欧氏距离,可推广为向量的长度。`len`和`lensqr`函数分别计算向量的长度及长度平方,后者在不涉及平方根运算时更高效。 除了向量操作,函数集还包含以下几何计算: 5. 三角形面积:未提供具体函数,但可以通过向量叉乘计算,面积为`abs((p2-p1) × (p3-p1)) / 2`。 6. 点到直线(线段)的距离:`distance`函数可以用于计算点到直线的距离,而点到线段的距离需要考虑线段的方向。 7. 判断直线平行:通过比较两条直线的斜率是否相等来确定。 8. 判断线段相交:线段相交条件是它们的端点交叉,可以通过比较端点坐标实现。 9. 求交点:两直线的交点可以通过解方程组得到,线段交点需要额外判断端点是否在对方线上。 10. 点到直线的垂足:垂直于直线且过给定点的直线与原直线的交点即为垂足。 11. 点关于直线的对称点:通过构建点的对称点公式计算。 12. 线段关于直线的反射线:反射规则涉及到向量的翻转和点关于直线的对称点。 13. 点绕给定点旋转:通过极坐标转换和复数运算实现。 14. 判断点在三角形(椭圆)内:通常采用射线法或向量法检查点是否在多边形内部。 15. 直线(线段)与三角形碰撞:通过比较线段与三角形每条边的相对位置。 16. 三角形与三角形碰撞:利用边界线段的相交测试。 17. 两平行矩形碰撞:通过比较矩形边界坐标来确定。 18. 平行矩形与椭圆碰撞:需要结合矩形的边和椭圆的方程进行计算。 这个函数集提供了基础的几何计算,对于游戏开发、图形渲染、物理模拟等场景非常实用。开发者可以根据这些基本函数进行扩展,实现更复杂的几何算法。