c++ - 剪裁线到三角形C++

标签 c++ graphics

在裁剪算法中有许多技术,例如 Cohen–Sutherland,Cyrus–Beck 算法也适用于 2D 线裁剪,还有许多其他技术适用于 Circle 和 polygon。但我正在寻找一种在 c++ 中将线剪裁到三角形窗口的方法,如下图所示: enter image description here

所以我有三种情况,第一种是线在必须绘制的三角形内部,第二种情况是在不能绘制的三角形外部,第三种情况是线的终点在三角形内部,第二种情况是在三角形外部需要将其剪裁到三角形边框,那么就处理性能而言,最好的方法是什么?!

最佳答案

您在这里需要的基本原则是计算三角形每条边的交点,并计算出交点是在边内还是在角外(交点算法应该给您)。

基本上,线段 A-B 与三角形边 C-D 的交点将为您提供交点时间,其中 A 和 C 表示时间 = 0,B 和 D 表示时间为 1。两条线段的任何值都在 0 和 1 之间意味着它们相交,您需要修改要测试的线段,使三角形外的点位于交点上。该范围之外的任何值都意味着您可以忽略三角形的那一侧。 (要么线段完全在三角形外,要么用其他两条边将其夹住。)

您只需依次对每一侧执行此操作即可。

关于c++ - 剪裁线到三角形C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15931404/

相关文章:

c++ - 指针和 `const` 的 C/C++ 约定

c++ - 使用 XCode 4 构建 Boost C++ 库(手动不工作)

处理 1,000,000 个 2D Sprite 的 C++ 2D 图形库?

c# - 二维图形库(请不要使用 XNA)

ios - Swift 中的颜色填充

Opengl 三角形包含孔并且有时会消失

c++ - 有没有什么软件可以在 Mac 上为 C/C++ 格式化源代码?

c++ - 在整数数组中查找前 log(n) 或前 sqt(n) 值

r - 在 plot.xts 中设置颜色

java - 使用 Point2D.Double 绘制点时出现问题