草庐IT

Vector2D

全部标签

c++ - 3D 点投影到 2D XY 平面

我有一个3维点集(x,y,z)。我需要使用正交投影将这些点投影到2维XY平面中。所以我的问题是,如何将这些点转换为2D?如果我只设置Z=0是否正确?如果不正确,请任何人帮助我解决这个问题。我也想用C++编程 最佳答案 如果您的坐标系的轴彼此正交,则只需将z坐标设置为零即可获得到xy平面的正交投影——您的看法是正确的。 关于c++-3D点投影到2DXY平面,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com

c++ - 我可以在 VS2008 的 C 代码中使用 C++ vector 吗

我在vs2008中运行C代码。我很好奇我是否可以将此代码与C++代码混合 最佳答案 简短的回答是肯定的。但是,存在一些细微差别。C++通常支持C的很大一个子集。这意味着您几乎可以从C++代码中获得C中可用的任何内容(例如函数、库等)。从这一点开始,您有两个选择,一个简单,一个更难。选项#1-使用C++编译器。只需将您的代码视为C++。简单地说-使用C++编译器。选项#2-混合使用C和C++。您可以编写C代码并使用C++编译器对其进行编译。在需要使用C++组件的地方使用C-likeC++。例如,您的设置可能类似于以下内容:head1.

c++ - OpenGL 2D 中的可变形地形 [Worms like]

我搜索了一段时间,听说有不同的方法可以做到这一点,所以我想我应该来这里看看我应该怎么做,根据我收集到的信息,我应该使用数组中的glBitmap和0s和0xFF值来制作地形。对此有任何意见吗?我尝试将其切换为四边形,但我不确定这是否有效以及它的完成方式。我希望地形能够有隧道,比如蠕虫。2维。这是我到目前为止尝试过的,我试图制作一个glBitmap,所以..pixels=pow(2*radius,2);ras=newGLubyte[pixels];然后全部设置为0xFF,用glBitmap(x,y,0,0,ras)绘制;然后可以检查是否有爆炸,什么不是以及可以将任何像素设置为零。这是一种合

c++ - 是否可以使用互斥锁来锁定 vector 中的元素而不是整个 vector ?

是否可以使用互斥量来锁定vector中的元素而不是整个vector?例如,给定一个vectormyVec;将10个元素推回myVecfor(inti=0;ivector的每个元素将被多个线程异步更改。如何使用互斥锁只锁定myVec中的一个缓冲区,以便一个线程可以写入或读取一个元素;另一个可以同时读写另一个元素吗?谢谢 最佳答案 你想要的比你想象的更简单也更难:如果你的容器作为一个整体没有变化,即没有插入或删除,那么标准库容器已经提供了有限类型的线程安全,即允许不同的线程读取或修改不同的容器元素,即只要不超过一个线程访问任何给定元素。

c++ - R 数值 vector 列表 -> C++ 2d array with Rcpp

我主要使用R,但最终想使用Rcpp与一些接收和返回二维数值数组的C++函数交互。因此,为了开始使用C++和Rcpp,我想我只需要编写一个小函数,将我的可变长度数字vector的R列表转换为C++等效项,然后再返回。require(inline)require(Rcpp)test1=cxxfunction(signature(x='List'),body='usingnamespacestd;Listxlist(x);intxlen=xlist.size();vector>xx;for(inti=0;itest=as>(xlist[i]);xx.push_back(test);}retu

c++ - 3D 应用中的 OpenGL 2D hud

我一直在尝试在我的OpenGL应用程序中创建一个HUD。环顾四周,似乎是使用正射投影来做到这一点,但到目前为止,我还无法让程序正确渲染。发生的事情不是在我的显示器顶部渲染,而是出现奇怪的图形故障,如下所示:如果我注释掉hud代码,一切都会完美呈现。glEnable(GL_DEPTH_TEST);glDepthFunc(GL_LESS);//SetupprojectionmatrixglMatrixMode(GL_PROJECTION);glLoadIdentity();//UsinggluPerspective.It'sprettyeasyandlooksnice.gluPerspec

c++ - Stringstream 到 vector<int>

我想知道从std::stringstream中写入的最佳方式是什么进入vector.这是stringstream中内容的示例:"31#0053253803335342337"这是我得到的:intbuffer=0;vectoranalogueReadings;stringstreamoutput;while(output>>buffer)analogueReadings.push_back(buffer);然而,似乎发生的是,它读取第一件事,然后到达#00并返回0因为它不是数字。理想情况下,我想要的是,它达到#然后跳过所有字符直到下一个空格。这可以用标志或其他东西实现吗?谢谢。

C++ 用另一个 vector 填充一个 vector

我有两个vector,我想用第二个填充第一个。vector声明如下:vectorfirstVector;其中Vec3是一个具有floatx、y、z的结构。我试过通过分配喜欢这个:secondVector.assign(firstVector.begin(),firstVector.end());但是它停下来并提示说end()有问题。我也试过推回,但当然不行。正如我之前读到的,我应该用assign来做,但我不知道如何正确地解决它。编辑:insert和assign的报错信息是一样的:这个0x00000000...std::vector>*const[size]CXX0030:错误:无法计算

c++ - 如何将元素插入 std::unordered_map<int, vector<Object*>>

我正在尝试创建指向我的对象的指针数组的散列。散列键是对象类型的int,数组是要渲染的对象列表。我想做的是:unordered_map>drawQueue;drawQueue.clear();//newemptydrawqueuefor(...){drawQueue.at(type).push_back(my_obj);}所以我对STL东西的细微差别还不够熟悉,因为我得到一个异常,说out_of_bounds,这是当key不存在时发生的情况。所以我想我需要先创建key,然后添加到vector中:if(drawQueue.count(type)){//keyalreadyexistsdra

c++ - 多线程 vector

我正在使用C++开发一个项目,该项目使用自己创建的map来存储数据-从这个意义上讲,map更像是“地理”map,因此是图像。有不同的线程读取和写入它。map的数据存储在整数vector的标准vector中。它的大小不会改变,只是通过getter和setter函数改变某些像素的内容。我的问题如下:有时一切正常,但更多时候我得到损坏的图像,因为像素值改变符号或变得与它们应该的值完全不同。这可能是对像素的线程读/写访问的问题,如果是这样,我应该使用什么来代替标准vector?我曾尝试使用互斥锁来确保只有一个线程读取或写入vector,但是这些读/写操作经常发生,如果我在每次操作时都锁定vec