如何确定一个点是否在2D三角形中?

和0.618

有没有一种简单的方法来确定点是否在三角形内?它是2D,而不是3D。

内尔·基西耶维奇

通常,最简单(也是最理想的)算法是检查点在边缘所创建的半平面的哪一侧。

这是有关GameDev的主题中的一些高质量信息,包括性能问题。

以下是一些入门代码:

float sign (fPoint p1, fPoint p2, fPoint p3)
{
    return (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);
}

bool PointInTriangle (fPoint pt, fPoint v1, fPoint v2, fPoint v3)
{
    float d1, d2, d3;
    bool has_neg, has_pos;

    d1 = sign(pt, v1, v2);
    d2 = sign(pt, v2, v3);
    d3 = sign(pt, v3, v1);

    has_neg = (d1 < 0) || (d2 < 0) || (d3 < 0);
    has_pos = (d1 > 0) || (d2 > 0) || (d3 > 0);

    return !(has_neg && has_pos);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何确定用于确定弗洛伊德三角形的Java循环数组中第一个数字的公式?

使用递归从星星中创建一个三角形

在3D中绘制一个三角形到深度缓冲区

如何使用matplotlib.pyplot在2D中基于3个点(x,y)绘制三角形?

是否可以仅使用CSS制作一个圆角三角形?

如何创建一个numpy数组来描述三角形的顶点?

如何用PIL画一个三角形?

如何在底部创建一个全角三角形?

在2D中,如何确定三角形和AABB是否相交

如何从同构三角形集中仅返回一个三角形?

快速检查矩形是否在三角形内的方法(2D)

如何制作一个始终面对同一点的三角形?

如何用中心坐标和一个点的坐标创建一个三角形?

给定(象限i)中的三个(x,y)点,它们组成一个直角三角形,求出三角形的排列

确定三角形是否朝左

如何画一个三角形?

在2D,z顺序渲染系统中组合点(粒子)和三角形(子图形)

您将如何在C中以递归方式生成一个Sierpinski三角形

如何获得一个虚构的三角形内的mouselistener通知点击?

获取2D三角形中的点数

如何制作一个三角形的星星并计算星星的数量?

如何仅使用 css 创建一个三角形的 div?

如何在xml drawable android中绘制一个矩形内端三角形形状?

如何围绕JavaFX中的一个点旋转三角形并获取点的值?

在java中打印一个独特的三角形字符

检查一组点是否描述了一个三角形

在组装中打印一个三角形的字符

数学上把一个矩形分成四个三角形,确定指针位置

我如何在 C++ 中打印一个数字三角形