我可以檢測到兩條直線的交點,但是如果我的直線沒有我的屏幕長度,它會檢測到它不應該在的位置。座標中兩條直線之間的交點
這裏預覽: 所以,它不應該檢測到這個交點,因爲水平線不是那麼長。
代碼:
- (NSMutableArray *) intersectWithLines:(CGPoint)startPoint andEnd:(CGPoint)endPoint {
NSMutableArray *intersects = [[NSMutableArray alloc] init];
for(GameLine *line in [_lineBackground getLines]) {
double lineStartX = line.startPos.x;
double lineStartY = line.startPos.y;
double tempEndX = line.endPos.x;
double tempEndY = line.endPos.y;
double d = ((startPoint.x - endPoint.x)*(lineStartY - tempEndY)) - ((startPoint.y - endPoint.y) * (lineStartX - tempEndX));
if(d != 0) {
double sX = ((lineStartX - tempEndX) * (startPoint.x * endPoint.y - startPoint.y * endPoint.x) - (startPoint.x - endPoint.x) * (lineStartX * tempEndY - lineStartY * tempEndX))/d;
double sY = ((lineStartY - tempEndY) * (startPoint.x * endPoint.y - startPoint.y * endPoint.x) - (startPoint.y - endPoint.y) * (lineStartX * tempEndY - lineStartY * tempEndX))/d;
if([self isValidCGPoint:CGPointMake(sX, sY)]) {
[intersects addObject:[NSValue valueWithCGPoint:CGPointMake(sX, sY)]];
}
}
}
return intersects;
}
我不知道你是什麼意思,那條水平線明顯地與一個垂直線相交。 – Tony
當然是,但不是圖形 - 我認爲我必須確定交點是否在這些行中的一行上,如果不是這樣 - 我可以將它繪製到頂部。你知道我的意思? –