我有4個或更多的點組成封閉路徑。我想要在封閉路徑中獲取圖像中的每個點。如果有任何方法可以做這樣的事情?檢查封閉路徑內所有點的方法
0
A
回答
2
- (BOOL)isPointContain:(NSArray *)vertices point:(CGPoint)test {
NSUInteger nvert = [vertices count];
NSInteger i, j, c = 0;
CGPoint verti, vertj;
for (i = 0, j = nvert-1; i < nvert; j = i++) {
verti = [(NSValue *)[vertices objectAtIndex:i] CGPointValue];
vertj = [(NSValue *)[vertices objectAtIndex:j] CGPointValue];
if (((verti.y > test.y) != (vertj.y > test.y)) &&
(test.x < (vertj.x - verti.x) * (test.y - verti.y)/(vertj.y - verti.y) + verti.x))
c = !c;
}
return (c ? YES : NO);
}
NSArray *Vertices = [NSArray arrayWithObjects:
[NSValue valueWithCGPoint:CGPointMake(10, 40)],
[NSValue valueWithCGPoint:CGPointMake(30, 48)],
[NSValue valueWithCGPoint:CGPointMake(50, 80)],
[NSValue valueWithCGPoint:CGPointMake(45, 100)],
nil
];
CGPoint point = CGPointMake(30, 28);
if ([self isPointContain:Vertices point:point]) {
NSLog(@"YES");
} else {
NSLog(@"NO");
}
+0
如果它不是矩形?或者它有多於4個頂點? –
+0
@KhawarAli檢查多個頂點 –
0
它在計算機圖形學和圖像處理在地理信息化系統許多應用的大面積。尋找「多邊形裁剪算法」或嘗試其它StackExchange網站:
相關問題
- 1. 是一個封閉的路徑內的點 - SVG Javascript
- 2. 相交svg封閉路徑
- 3. paper.js - 與封閉路徑
- 4. 查找覆蓋所有檢查點的路徑
- 5. 如何從一組點中找到所有不同的封閉路徑
- 6. 查找路徑上的所有點AS3
- 7. 從節點檢索所有路徑
- 8. Drupal - 按角色檢查所有站點路徑的安全
- 9. 作爲一個封閉的路徑
- 10. SVG路徑檢測重疊或封閉的形狀
- 11. 在封閉路徑上繪製CGGradient
- 12. 如何判斷封閉路徑是否包含給定點?
- 13. 查找兩個頂點(節點)之間的所有路徑
- 14. 檢查節點是否在有向圖的節點路徑中
- 15. 查找路徑內的節點
- 16. 檢查所有線段的指定距離內的所有點
- 17. 在封閉中引用「私有方法」
- 18. 未封閉的SVG路徑似乎已關閉
- 19. PACMAN:吃所有點的短路徑
- 20. 檢查點所屬方
- 21. 如何在類路徑中的所有庫中查找API方法的用法?
- 22. 通過路徑獲取一定距離內的所有點
- 23. 檢查樹路徑中的節點的最佳算法?
- 24. 查找有向圖中源到所有頂點的所有最短路徑
- 25. 查找包含節點的所有關係的路徑
- 26. DFS查找所有可能的路徑
- 27. 有效的方法來檢查給定點周圍的所有點
- 28. 的Symfony:有關在封面路徑
- 29. 如何在Android中查找路徑中的所有點?
- 30. 查找覆蓋neo4j中所有節點的路徑
什麼是你的情況下的圖像?離散矩形網格的點? – HEKTO