2014-01-12 56 views
1

我有一組二次貝塞爾曲線(point0(x,y),controlPoint(x,y),point1(x,y))定義的形狀。這個形狀總是封閉的,但可以由凹凸區域組成(例如:形狀可以是橢圓形或者可以是蛇形蛇。是否有算法可以確定座標(x,y)是否在閉合形狀內在給定的二次貝塞爾曲線?確定座標是否在矢量形狀內

感謝您的時間

+0

如果您可以將曲線轉換爲具有線段的近似值,則很容易。與貝塞爾數學一起工作會變得棘手。 –

回答

2

的基本方法形成的是一個簡單的https://en.wikipedia.org/wiki/Point_in_polygon測試。拼合曲線,並把它當作一個(有限)系列線,然後進行測試。爲了提高性能,你也可以將你的形狀看作許多不同的區域,每個區域都由一條貝塞爾曲線和(可能重疊的)船體界定,如果這個點位於船體內部,那麼只需將這條曲線平坦化,然後進行真正的測試。

該計劃的變化是多種多樣的。

+0

圖23.1中的演示http://pomax.github.io/bezierinfo/#shapes可能會對操作感興趣。 –

+0

我曾考慮過添加該代碼,但實際使用的代碼需要一些快捷方式才能在特定條件下報告錯誤的事情,所以我不想鏈接到技術上不正確的代碼(但爲了演示目的)。 –