小编jma*_*erx的帖子

我试图找到一个矩形是否与凹多边形相交.这个算法能实现吗?

我试图找到一个矩形是否与凹多边形相交.我发现了这个算法:

double determinant(Vector2D vec1, Vector2D vec2){
    return vec1.x*vec2.y-vec1.y*vec2.x;
}

//one edge is a-b, the other is c-d
Vector2D edgeIntersection(Vector2D a, Vector2D b, Vector2D c, Vector2D d){
    double det=determinant(b-a,c-d);
    double t=determinant(c-a,c-d)/det;
    double u=determinant(b-a,c-a)/det;
    if ((t<0)||(u<0)||(t>1)||(u>1))return NO_INTERSECTION;
    return a*(1-t)+t*b;
}
Run Code Online (Sandbox Code Playgroud)

如果我执行这4次(从上到下,从上到下,从上到下,从下到右)*(我的多边形的所有边缘)这将有效且准确地告诉我矩形是否具有部分或全部凹面多边形里面?如果不是会遗漏什么?

谢谢

algorithm pseudocode

7
推荐指数
1
解决办法
751
查看次数

检查空引用?

让我们说你有这样的事情:

int& refint;
int* foo =0;
refint = *foo;
Run Code Online (Sandbox Code Playgroud)

你怎么能验证引用是否是NULL为了避免崩溃?

c++

7
推荐指数
2
解决办法
1万
查看次数

是否应该每帧重建一个八叉树?

在游戏中使用八叉树进行碰撞检测时,是应该每帧重建一次树还是假设有一半的物体在一帧中移动?

c++ algorithm

7
推荐指数
2
解决办法
1229
查看次数

c/c ++编译器如何知道错误在哪一行

对此可能有一个非常明显的答案,但我想知道编译器如何知道我的错误所在的代码行.在某些情况下,它甚至知道列.

我能想到的唯一方法是将输入字符串标记为2D数组.这将存储[lines] [tokens].

C/C++可以被标记为1个长1D数组,这可能更有效.我想知道通常的解析方法会保留行信息.

c c++ parsing

7
推荐指数
1
解决办法
217
查看次数

以编程方式单击并使用VB.NET移动鼠标

我想在VB .net中构建一个程序,这将允许我用我的笔记本电脑控制我的电脑.我唯一的问题是,如何在不使用某种点击事件的情况下以编程方式点击,例如,如果我想点击开始orb并且我的鼠标位于该确切位置,我想要一个子点击或点击某事在上面.现在我只知道如何在表单中单击.

谢谢

vb.net mouse move click

6
推荐指数
1
解决办法
4万
查看次数

DoEvents等效于C++?

我是原生c ++的新手.现在,我按下了鼠标左键,它有一个执行InvalidateRect的for循环并绘制一个矩形,并在每次迭代时按照框大小递增X. 但是,C++在绘制方面比C#更快更有效率,它可以立即绘制所有这些内容.我想要的是它使矩形无效,显示矩形,等待50ms,然后继续循环.我试过睡眠(50),但它仍然等到绘画完成后再显示结果.我也尝试过PeekMessage,但它没有改变任何东西.任何帮助,将不胜感激.谢谢

c++ windows winapi

6
推荐指数
1
解决办法
1万
查看次数

从文件中读取和写入字节(c ++)

我想我可能不得不使用fstream对象,但我不确定如何.基本上我想将文件读入字节缓冲区,修改它,然后将这些字节重写为文件.所以我只需要知道如何进行字节i/o.

c++ file-io

6
推荐指数
1
解决办法
2万
查看次数

边缘交叉算法?

给定Polygon P,我有它的顶点顺序.我有一个带有4个顶点的矩形R我怎么能这样做:

如果P的任何边(相邻顶点之间的线)与R的边相交,则返回TRUE,否则返回FALSE.

谢谢

      *             *    


      *             *    
Run Code Online (Sandbox Code Playgroud)

c c++ algorithm

6
推荐指数
1
解决办法
2284
查看次数

指针向量的迭代器没有正确解除引用

这是我的问题:

我有一个std::vector<AguiWidgetBase*>用于跟踪儿童控制的东西.

我有这两个函数来返回迭代器:

std::vector<AguiWidgetBase*>::const_iterator AguiWidgetBase::getChildBeginIterator() const
{
    return children.begin();
}

std::vector<AguiWidgetBase*>::const_iterator AguiWidgetBase::getChildEndIterator() const
{
    return children.end();
}
Run Code Online (Sandbox Code Playgroud)

然后我像这样使用它:

for(std::vector<AguiWidgetBase*>::const_iterator it = box->getChildBeginIterator(); 
    it != box->getChildEndIterator(); ++it)
{
    it->setText("Hello World");
}
Run Code Online (Sandbox Code Playgroud)

我收到这些错误:

Error   3   error C2039: 'setText' : is not a member of 'std::_Vector_const_iterator<_Ty,_Alloc>'   c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\main.cpp   112
Error   2   error C2839: invalid return type 'AguiWidgetBase *const *' for overloaded 'operator ->' c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\main.cpp   112
Run Code Online (Sandbox Code Playgroud)

为什么它会给我这些错误?

谢谢

c++ iterator vector

6
推荐指数
2
解决办法
1万
查看次数

找到一组点的中心,顺时针对它们进行排序?

我想按顺时针方向对点矢量进行排序以形成多边形,但我需要适当的中心来完成.我已经尝试过averages方法,但有些要点根本没有正确排序.找到顺时针分拣点时工作中心的正确方法是什么?

凹陷部分失败了

谢谢

这是一张图片: 在此输入图像描述

绿色圆圈是中心.

它应该看起来更像这样: 在此输入图像描述

c++ algorithm geometry computational-geometry

6
推荐指数
1
解决办法
1802
查看次数