草庐IT

多边形

全部标签

c++ - 如何在 OpenGL 中将像素绘制为多边形的纹理?

在C++OpenGL中,我想手动将每个像素(作为我假设的纹理)绘制到一个简单的正方形基元上,或者实际上是2个多边形形成一个正方形。我不知道从哪里开始,也不知道要寻找什么短语。我是在寻找纹理贴图还是创建纹理?大多数示例都是从文件加载,但我不想这样做。我已经尝试阅读我的OpenGL编程指南书,但它只是一个迷宫,因为我对OpenGL还很陌生。请帮忙。 最佳答案 仔细看看glTexImage2D。这是在OpenGL中为2D纹理加载图像的调用。glTexImage2D实际上采用原始指针指向图像中的像素数据。你可以自己分配内存,直接设置图像数据

c++ - 如何在 C++ 中绘制多边形以使线条不相交?

我需要用C++绘制一个多边形。我在vector中设置随机点,然后通过线连接它们。但有时这些线相交,我会得到这样的结果。是否有任何公式或类似的东西,使线条不会交叉?部分代码如下:voiddraw_picture(Canvas&canvas){PairXYa,b,c,d,e;intk;vectorvertex;vertex.push_back(PairXY(drandom(k),drandom(k)));vertex.push_back(PairXY(drandom(k),drandom(k)));vertex.push_back(PairXY(drandom(k),drandom(k))

c++ - boost 多边形序列化 : Ring

根据这个相关问题(BoostPolygonSerialization)。我正在尝试使用Boost序列化多边形。我现在遇到的问题是,我正在尝试使用自定义X、Y、点的多边形来编译示例,但编译器在编译时抛出此错误:error:'classboost::geometry::model::ring>'hasnomembernamed'serialize'就像没有定义任何函数来序列化一个环。由于Ring从std::vector扩展,并且如相关问题中所述,因此没有必要为其序列化定义方法。但是编译器会提示。这里有一个关于定义多边形及其序列化的完整示例:#include#include#include#

c++ - OpenGL 平滑多边形

我正在尝试使用OpenGL将它变成一个平滑的多边形,但它什么也没做。有人可以解释我做错了什么吗?glColor4ub(r,g,b,a);glEnable(GL_POLYGON_SMOOTH);glHint(GL_POLYGON_SMOOTH_HINT,GL_NICEST);glBegin(GL_QUADS);glVertex2i(x,y);glVertex2i(x1,y1);glVertex2i(x2,y2);glVertex2i(x3,y3);glEnd();glDisable(GL_POLYGON_SMOOTH);glHint(GL_POLYGON_SMOOTH_HINT,GL_D

c++ - 如何区分多边形的入站和出站边缘?

Weiler-AthertonPolygonClipping算法的基础是:从进入裁剪区域内的第一条边开始。当候选/主题多边形的边进入裁剪区域时,保存交点。当候选/主题多边形的边离开裁剪区域时,保存交点并跟随裁剪多边形。如何区分多边形的入站边和出站边?寻找入站边缘似乎涉及另一个巨大的算法,从而影响算法的效率。另一个问题是,如何找到第一个入站路口?Thisanswerseemstobesheddingsomelightontheproblem.但是,遗憾的是它不起作用。例如,如果我反转vector的方向,则角度不会取反。https://www.wolframalpha.com/input/

c++ - 任意多边形中最大的内接矩形

我使用OpenCV拼接已有一段时间了。现在我想做拼接的最后一步:裁剪图像。这导致在一般多边形中找到最大的内接轴平行矩形。我已经用谷歌搜索并找到了一些答案(HowdoIcroptolargestinteriorboundingboxinOpenCV?)。尽管程序运行缓慢,但输出图像的质量很好(裁剪图像需要15秒,而将36张1600x1200图片拼接成1幅全景图只需要47秒),因为使用的算法时间复杂度很差(对于轮廓中的每个点,它扫描同一行/列中的所有点)。有什么办法可以改善吗?谢谢。P/S:我也找到了这本书:FindingtheLargestAreaAxis-ParallelRectang

c++ - 旋转任意角度后,如何找到多边形在 X 轴上的最小可能投影?

给定二维多边形的顶点,我必须找到多边形在X轴上的最小可能投影。我可以任意角度旋转多边形。起初我想到的是最小的情况,多边形的至少一条边将与X轴对齐,这是不正确的。多边形可以是凹的也可以是凸的。 最佳答案 您正在寻找的是所谓的“旋转卡尺算法”。https://en.wikipedia.org/wiki/Rotating_calipers关于此算法的维基百科页面甚至有针对您的问题的伪代码。https://en.wikipedia.org/wiki/Rotating_calipers#Minimum_width_of_a_convex_po

c++ - OpenGL+GLUT 没有填充最左上角的多边形?

我遇到了一个奇怪的OpenGL错误。OpenGL对我来说很新,但我们必须在我的AI课上使用它(因为老师真的是图形学教授)。无论如何,这正在发生:http://img818.imageshack.us/img818/422/reversiothello.png它只发生在最上面、最左边的多边形上。换句话说,它找到最左边的多边形,然后找到最上面的多边形,然后对它进行处理。(目前没有任何东西可以从板上删除多边形)。我的显示功能是这样的:voiddisplay_func(void){glClearColor(0.0,0.45,0.0,1.0);//BackgroundColor(ForestGr

c++ - 生成二维魔法六边形格子的算法

我正在尝试生成一个2D魔法六边形格子,(即我需要用C语言生成点的坐标)见附图,该图看起来像一个洋葱结构,其中较大的六边形内部有六边形等等.有人有想法吗?注意:如果有人在其他语言中有答案也没关系,我只需要看一下,这样我就可以开始构建自己的代码了。提前致谢。voidgenerate_particles(void){/*Generatestheparticle-positionsandchargeHereitindicatedtousethehexagonalreferential!!*/inti,j;intn=3;/*nrepresentthenthcenteredhexnumbergiv

c++ - 使用 OpenGL 创建多个多边形很慢?

我想在屏幕上绘制许多多边形,但我很快注意到速度很快变慢了。作为测试,我这样做了:for(inti=0;i这只有50个多边形,而且速度已经很慢了。我无法将它们直接上传到卡片中,因为我的程序将允许用户reshape顶点。我的问题是,我怎样才能加快速度。我没有使用深度。我也知道这不是我的GetCamera()函数,因为如果我创建500,000个分散的多边形也没关系,只是无法在View中显示它们。如果显卡每秒可以支持500,000,000个屏幕多边形,这应该很容易吧?谢谢 最佳答案 如前所述,不要在循环中而是在外部执行glBegin和glE