2017-06-17 65 views
-1

我有兩條線假設一個是雷,另一個是牆。所以當Ray撞牆時,它會反射回來。我想知道Ray和牆壁的交點以及反射線點或方程。壁線總是垂直於x或y軸。如何找到一條線上的反射線?

例如,射線線陣點是(0, 2)(3, 0)。牆點是(0, 0)(2, 1)。我必須將其轉換爲Python程序。所以如果有人能夠用編程(特定算法)的方式解釋,這對我有很大的幫助。

預先感謝

+1

你如何用鉛筆和紙做呢? – 0605002

+0

這可能幫助:https://stackoverflow.com/questions/41332696/puzzle-how-many-ways-can-you-hit-a-target-with-a-laser-beam-within-four-reflect/41333099 #41333099(關於你的問題的信息主要在評論中)。 –

+0

@ 0605002我已經做了你的建議。我可以很容易地用筆和紙找到反射線。但問題是我找不到數學公式。所以我不能將其轉換爲我的Python程序。感謝您的答覆。 – Tamizharasan

回答

0

射線線陣點是(0,2)和(3,0)

(x0, y0) = (0, 2) 
(x1, y1) = (3, 0) 

所以射線具有參數方程

x = x0 + t * (x1 - x0) //here 0 + 3 * t 
y = y0 + t * (y1 - y0) //here 2 - 2 * t 

現在你必須先找到什麼座標首先到達邊界 - 解方程

x0 + t * (x1 - x0) = xb 
y0 + t * (y1 - y0) = yb 

和得到噸的較小的值

鏡象點成爲參數方程新基點。如果符合垂直邊框,則x分量會更改其符號,y分量保持不變。如果你遇到水平邊界 - 反之亦然。

+0

你能給我一些參考鏈接?或者你可以詳細說明一下嗎?我無法理解這個流程。 – Tamizharasan

+0

什麼不明確?參數線表示?僞代碼類似(不鏡像):問題https://stackoverflow.com/questions/36758570/robotics-square-grid-intersection-point/36760730#36760730 – MBo