OpenGL如何检查一个点是不是在由伯恩斯坦曲线组成的区域内

Posted

技术标签:

【中文标题】OpenGL如何检查一个点是不是在由伯恩斯坦曲线组成的区域内【英文标题】:OpenGL how to check if a point is inside a area made of Bernstein curveOpenGL如何检查一个点是否在由伯恩斯坦曲线组成的区域内 【发布时间】:2015-04-22 02:22:48 【问题描述】:

我想检查指定的坐标是否在曲线下封闭的区域内。 我的曲线生成如下:

float CtlPoint[] =

    0, -0.3, 0,
    0.15, -0.25, 0,
    0.6, -0.2, 0,
    0.2, 0.20, 0,
    0.10, 0.25, 0,
    0.05, 0.5, 0,
    0.02, 0.6, 0,
    0.0, 0.8, 0,
   -0.02, 0.6, 0,
   -0.05, 0.5, 0,
   -0.10, 0.25, 0,
   -0.2, 0.20, 0,
   -0.6, -0.2, 0,
   -0.15, -0.25, 0,
    0, -0.3, 0
;

glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 15, CtlPoint);
glEnable(GL_MAP1_VERTEX_3);

glBegin(GL_LINE_STRIP);
for (int t = 0; t <= 100; ++t)
    glEvalCoord1f(static_cast<float>(t) / 100);

glEnd();

我随机生成 2 个浮点数 x 和 y,并希望使用这两个值来测试位于上述曲线内的坐标。

【问题讨论】:

【参考方案1】:

通过您最喜欢的方法捕获 eval 输出并使用标准的多边形点测试。

【讨论】:

您能举个例子来说明捕获 eval 输出的方法吗?我搜索了一遍,但找不到任何...

以上是关于OpenGL如何检查一个点是不是在由伯恩斯坦曲线组成的区域内的主要内容,如果未能解决你的问题,请参考以下文章

opengl 动态贝塞尔曲线有间隙 - glEvalCoord1f();

确定一个点是不是在由具有给定纬度/经度的 3 个点组成的三角形内

如何通过openGL或Glut检查窗口是不是打开

使用 c++ opengl 的贝塞尔曲线

斯坦福大学公开课机器学习:advice for applying machine learning | learning curves (改进学习算法:高偏差和高方差与学习曲线的关系)

如何将数据点聚集到预定义区域?