已知乙個橢圓 在橢圓內隨機取點應該如何實現? 我用的fortran 其它語言有什麼方便的函式嗎?

時間 2021-05-09 04:49:01

1樓:

前面的感覺不太對,有些通過判斷來生成的。。。。。

clcclear

time=0;

start=[20,50];goal=[80,50];

cmin=norm(goal-start);

cbest=120;

axis([-20,120,-20,120])

hold on

time=0;

while time<4000

x_center=[(start+goal)/2,0];

x_center=x_center';

a_1=[(goal(1)-start(1))/cmin;(goal(2)-start(2))/cmin;0];

id_t=[1,0,0];

M=a_1*id_t;

[U,S,Vh]=svd(M);

C=(U*diag([1,1,det(U)*det(Vh')]))*(Vh);

r=[cbest/2,sqrt(cbest.^2-cmin.^2)/2,sqrt(cbest.^2-cmin.^2)/2];

L=diag(r);

a=rand();

b=rand();

if btmp=b;

b=a;

a=tmp;

endx_ball=[b*cos(2*pi*a/b);b*sin(2*pi*a/b);0];

randpoint=C*L*x_ball+x_center;

plot(randpoint(1,1),randpoint(2,1),'.')

hold on

grid on

time=time+1;

end參考:Informed RRT*: Optimal Incremental Path Planning Focused through an Admissible Ellipsoidal Heuristic

2樓:石子豪

想到乙個適用性更寬泛的隨機取點方式:

在指定區域內產生隨機座標的過程並不是產生座標均勻分布的過程,而是取產生面積均勻分布的一處並轉換為座標的過程。

假設我們想要求某函式從a到b之間與0產生的面積中的一點,我們可以拿乙個函式在兩個區間的積分,得到面積,從面積內取隨機值,並通過積分公式求出在此隨機面積上對應的x座標,取隨機y即可。

這個隨機座標公式對於任意函式的任意區間的產生過程只需要一次計算,後續套用公式就能產生此函式ab區間的隨機座標。

3樓:ramwin

取出這個橢圓的外切長方形(長a,寬b),根據這個長方形做座標系。隨機取0到a的數字和0到b的數字,找到長方形內對應的點。如果落在橢圓內,就取出,否則回到上一步,隨機取0到a的數字和0到b的數字。

可能不是最快最好的的,但絕對是最容易實現的方案了。

4樓:乙個馬甲

用蒙特卡洛模擬。

把這個橢圓補成乙個長方形。保證整個橢圓都在長方形內。

對這個長方形進行隨機取樣。即橫縱座標都是uniform分布取樣。

對落在橢圓外面的點捨棄。

剩下的點就是題主想要的了。

5樓:Moron

才發現r開方了,當我沒說

@Milo Yip 的演算法,這樣取樣貌似會導致點在中心集中,成輻射狀。

把圓(或橢圓)想像成一圈一圈的環,類似於射擊的靶,顯然圓外層的點一定比內層多,且與周長成正比。

修正方法是先取乙個角度theta,再用逆變換演算法取半徑r,最後再拉伸。

至於先均勻乙個矩形包圍盒內的點,再捨棄橢圓外的點的方法,效率太低不考慮。

6樓:Jamesika

提供乙個思路(真的只有思路),

根據克卜勒第一和第二定律:

(橢圓定律)所有行星繞太陽的軌道都是橢圓,太陽在橢圓的乙個焦點上。

(面積定律)行星和太陽的連線在相等的時間間隔內掃過相等的面積。

那麼假設太陽在焦點A, 先隨機乙個時間t , 確定在軌道上的隨機位置P1, 經過微小時間dt, 得到另乙個位置P2,AP1P2構成三角形,在三角形內隨機取點。

ps. 剛剛洗澡的時候看到這個問題,突然靈光一閃

7樓:

用C++很容易實現。

#include

#include

double

rrand

()std

::ofstream

output

("ellipsoid.dat"

);int

main

()output

.close

();return0;}

8樓:Milo Yip

在單位圓盤內均勻分布的取樣方法之一,是生成均勻分布的 :

把座標向分別兩個軸縮放,仍然保持均勻分布,如下圖把 放大成兩倍:

在實數軸上任取乙個點,這個點是有理數的概率是多大?

已登出 0。整數的情況是x,小數的情況可以是x n 1,整數的概率是x x x n 1 1 1 x n x趨向於無窮大,這個式子趨向於0 馬子俊 個人感覺用簡單的測度去說明這種類似的隨機現象貌似是有些不合理的。雖然概率在理論上講和測度密不可分,但是在描述問題中所提出的隨機現象顯然有些矛盾。至於怎麼說...

如何檢測乙個圓在多個圓內?

乙個想法,直接判斷紅圓的圓心是否在黑圓中符合條件的區域,距離判斷。圖醜不放了 對於孤立黑圓,紅圓的圓心可以存在的區域為以 r黑 r紅 為半徑的黑圓同心圓內 題主說明了紅圓半徑始終小於黑圓 記這個區域為基本解域。兩個相交圓,兩個基本解域是確定的。同時,產生了新的符合解域,為兩黑圓交點為圓心r紅為半徑的...

如何判斷乙個點是否在乙個凸多面體內?

Inga li Hyperplane class template struct Hyperplane Hyperplane const Vecf p,const Vecf n p p n n Calculate the signed distance from point decimal t si...