簡體   English   中英

強制貝塞爾循環在邊界內說

[英]Force bezier loop to say inside boundary

我正在使用 GNU Octave 編寫代碼來模擬摩托車的單圈時間。 賽道由中線(作為 xy 點值)和寬度“B”表示。

賽道中線各點距離不等,例如直線段只有兩個點,彎道可能有5-10個點。

賽車線是閉環立方貝塞爾曲線。

我想計算貝塞爾曲線與中線的距離,以檢查車輛是否偏離道路(如果距離 > B/2 我偏離軌道)。 我對發生這種情況的地方不感興趣,只有發生時才感興趣。 現在檢查代碼是否有效,我通過計算賽車線的每個點到中線的距離作為三角形的高度,其中兩個基本頂點是中線和頂部的兩個點頂點是賽車線的點。 它有效,但我正在尋找另一種方法,因為這個方法非常慢。

作為替代方案,我嘗試通過計算每個部分的角度來“拉直”中線,然后使用相同的“變換”拉直賽車線並檢查最小和最大 Y 值,該值必須小於 B/2。 這種方法的問題是賽車線和中線的長度不一樣,在賽道的某些部分賽車線可能更短,其他地方可能更長,因此轉換將不是線性的。

另一種選擇是將賽道轉換為一個矩陣,其中賽道內填充“0”,賽道外填充“1”,並且賽車線將是一個具有相同 MxN 的矩陣,處處填充“0”,其他處填充“1”他賽車線。 通過對這兩個矩陣求和,如果有一些“2”我就跑偏了。 現在我找不到制作這個的方法。

我找到了我的問題的答案,使用 function “inpolygon”。 因此,我將賽道的外邊界設置為多邊形,並將賽車線上的所有點設置為要檢查的點。 function 告訴我某個點是否在多邊形之外。 然后,我重復相同的操作,將內部邊界設置為多邊形。 現在所有賽車線點都必須在多邊形之外。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM