图形学的基础之一就是计算几何,它没有理论数学那么高深莫测,而且它很有实践性。具体来说图形学除了常用的计算几何方法外,还涉及到向量、点线关系以及点与多边形关系求解等数学知识,还有一些平面几何的基本原理。当然如果单从实用的图形学所涉及到的数学基础,或者说想学会图形学所需要掌握的数学知识来说,它主要涉及有微分几何(流形)、几何光学、球谱函数、模特卡洛方法、傅里叶分析、小波分析、以及解微分方程的有限元方法。不过在这里我们先不会去讨论这些数学基础,而是先给出一些图形学中计算几何较为基础的算法代码实现。
1、点与矩形的位置关系,判断点是否在矩形内
判断一个点是否在矩形内的算法,这是一个很简单的算法,但是却非常重要。比如你在一个按钮上点击鼠标,系统如何知道你要触发这个按钮对应的事件而不是另一个按钮?即一个点是否在矩形内的判断处理。Windows 的API提供了PtInRect()函数,实现方法其实就是判断点的x坐标和y坐标是否同时落在矩形的x坐标范围和y坐标范围内,其基础的代码实现如下:
bool IsPointInRect(const Rect& rc, const Point& p)
{
double xr