【发布时间】:2012-06-25 18:12:32
【问题描述】:
我有定义为两点的线。 开始 = (xs,ys) end = (xe, ye)
我正在使用的绘图功能只接受完全在屏幕坐标中的线条。 屏幕尺寸为 (xSize, ySize)。
左上角是 (0,0)。右下角是 (xSize, ySize)。
其他一些函数给了我定义为例如 start(-50, -15) end(5000, 200) 的行。所以它的末端超出了屏幕尺寸。
在 C++ 中
struct Vec2
{
int x, y
};
Vec2 start, end //This is all little bit pseudo code
Vec2 screenSize;//You can access coordinates like start.x end.y
如何计算位于屏幕边缘而不是屏幕外的新起点和终点。 我知道如何在纸上做到这一点。但我无法将其转移到 C++ 中。 在纸上,我正在寻找属于边缘和线的点。但是对于 c++ 来说计算量太大了。
你能帮忙吗?
【问题讨论】:
-
Cohen–Sutherland algorithm 通常被认为是解决这个非常常见问题的快速解决方案。
标签: c++ math graphics vector 2d