嗨,我有这个问题
我的函数用于裁剪polygon
,每次剪辑一条边并返回一个向量,该向量将所有剪切的point
存储为剪辑其他边缘的新polygon
。
但是这个函数总是返回空向量。
奇怪的事情是临时载体:temp
一旦构造就消失了,这里是从xcode捕获的:
(评论中的图片链接)
并跳到下一行会导致temp
无效:
和temp
无法再推送
我尝试在函数中创建其他向量,我发现:
只有从这个函数返回的那个将消失,其他正常工作。
抱歉放置链接(我没有权限以img方式进行)
请帮忙
这是代码: .h文件
class Point
{
public:
int x;
int y;
Uint8 r;
Uint8 g;
Uint8 b;
Point(int x, int y, Uint8 r, Uint8 g, Uint8 b) : x(x), y(y), r(r), g(g), b(b) {}
Point(){}
};
功能:
std::vector<Point> Core::clipedge(vector<Point> polygon, int x0, int y0, int x1, int y1)
{
//color random for this stage
int r=rand()%255;
int g=rand()%255;
int b=rand()%255;
// For each side of the polygon, check the 4 cases of sutherland-hodgman.
// Creating a temporary buffer to hold your new set of vertices for the clipped polygon.
std::vector<Point> temp;
temp.push_back(Point(1,2,255,255,255));
//the actual clipping method
{.....}
return temp;
代码调用clippedge
函数
// The points p0(x0,y0) and p1(x1,y1) are ordered in clipedge such that any points
// to the right of the line p0-p1 are inside and vice versa
polygon=clipedge(polygon, 0, 0, width-1, 0); // Top edge
polygon=clipedge(polygon, 0, height-1, 0, 0); // Left edge
polygon=clipedge(polygon, width-1, height-1, 0, height-1); // Bottom edge
polygon=clipedge(polygon, width-1, 0, width-1, height-1); // Right edge
这是系统信息: 系统OSX10.9.2和ide是xcode5.1.1编译器是apple llvm5.1
我试过的是创建一个指针尝试更改此函数以返回指针,当我调试这个时,我发现当指针指向向量时,它显示向量实际上有剪切点后推通过剪辑功能。但仍然没有返回任何东西 这是捕获:
现在问题是temp
能够push_back但在调试时无法跟踪它。
仍然无法返回temp
。