[英]Python find the projection point of a known point on an ellipse
由於橢圓是關於給定線對稱的,因此您所需要做的就是計算該點在該直線上的反射率。
x1
和y1
是紅點的坐標, ax+by+c=0
是直線的方程式。 x
, y
是反射點的坐標。
由於該線穿過原點,因此c
為0。
如果知道直線與x軸的夾角(θ),則可以將a
和b
的值計算為
我們知道y = x * tan(θ)
和ax + by = 0
因此
-a/b = tan(θ)
取b = 1
, a
變為-tan(θ)
參考: https : //math.stackexchange.com/questions/1013230/how-to-find-coordinates-of-reflected-point
您可以在紅色點處構造一個非直角頂點的直角三角形,這樣就可以計算出與投影點到橙色線的距離,該距離與紫色點的長度相同。
三角形的構建可以從在紅色點之間構造一條線(A),找到原點和橙色線之間的角度(角度B)開始。 從那里開始,A線和右頂點線之間的角度為90-(角度B)。 然后是和弦的長度。
假設您沒有為點和線指定方程的確切形式,我將采用以下表示法:橙色線穿過原點並沿着向量[v1,v2]
穿過,因此其上的每個點都可以表示為a*[v1,v2]
。 鑒於此,以下方法應該有效:
找到任何垂直於v的向量(我將其稱為n):任何形式為n=[-(v2*n2)/v1, n2]
且n2為非零的向量。
畫出沿着n的紅點(不是原點)的線: [r1,r2]+b*[-(v2*n2)/v1, n2]
描述了任何這樣的點。
找到這些線相交的參數a和b:求解a和b的v1 = r1-b (v2 * n2)/ v1和a * v2 = r2 * b * n2 .b的結果是您需要的是:
b= (v1*(r1*v1-r2*v1))/(n2*(v1^2 + v2^2))
對於您選擇的任何n2,紫色點的坐標[r1,r2]+2*b*[-(v2*n2)/v1, n2]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.