直線段引數表示式
有一條直線段 P1P2,其端點座標分別是 起始點P1(x1,y1)和終點P2(x2,y2)。
那麼這條直線段的引數表示式是:
P(t)=P1+(P2−P1)t=(1−t)P1+tP2(0⩽t⩽1)
這個式子怎麼理解呢?
我們可以把 P1P2 這條線段看作 100%,那麼該線段上任意一點到起始點 P1 的距離所佔 P1P2 比例為 t, t 的大小在 [0, 1] 內。 P2−P1 的含義就是沿著 P1P2 直線段方向。
我對 t 一開始的推導如下:
不妨設
P1(x1,y1),P2(x2,y2),P1 和 P2 所在直線斜率為
α.
則該直線引數方程為(可以參考我的 這篇文章):
⎩⎪⎨⎪⎧x=x1+tcosαy=y1+tsinα(t是參數)
因此根據該引數方程我們可以繼續推導直線段的引數方程為
(x,y)=(x1,y1)+(cosα,sinα)t
而
cosα=P1P2x2−x1sinα=P1P2y2−y1
繼續推導可得:
(x,y)=(x1,y1)+(x2−x1,y2−y1)P1P2t
而 t 的幾何含義是 |t| = |P1P2|
圖中 P(t) = P1 + (P2-P1)t 可以表示為:
(x,y)=(x1,y1)+(x2−x1,y2−y1)t
那麼為什麼圖片中的 t 的範圍是 [0, 1]?
這裡存在的問題就是直線段中兩個端點是確定的,而推導當中的直線引數方程中的一點是變化的。兩個的模型不同,因此不能這樣推導。
相關推薦
直線段引數表示式
有一條直線段 P 1 P
實驗一 繪制任意斜率的直線段 | 使用VS2017工具
範圍 flag bresenham 註定 mouse wid cpp none 移動 這世界上有很多坑,註定有些坑是要填的。下面我就用VS2017使用MFC對這個課堂實驗進行填坑。 一、實驗目的 (1)掌握任意斜率直線段的重點 Bresenham 掃描轉換算法; (2
Liang-Barsky直線段裁剪演算法
引數化演算法(Cyrus-Beck) 考慮凸多邊形區域R和直線段P1P2:P(t)=(P2-P1)*t+P1 設A是區域R的邊界上一點,N是區域邊界在A點的內法線向量 則對於線段P1P2上任一點P(t) N ·(P(t)-A)< 0 →
中點分割直線段裁剪演算法
中點分割演算法原理 中點分割直線段裁剪演算法對Cohen-Sutherland直線裁剪演算法的第3種情況做了改進,原理是簡單地把起點為P0,終點為P1的直線段等分為兩段直線P0P和PP1(P為直線段中點),對每一段直線重複“簡取”和“簡棄”的處理,對於不能處理的直線段再繼續等分下去線
空間兩條直線段的最短距離及最近點計算
如果這兩條直線段不共線,假設直線段l0的兩端點為:P0、P1;直線段l1的兩端點為Q0、Q1,;求兩直線段的最短距離? 直線段l0我們可以用方程表示為: (1) 直線段l1我們也可以用方程表示為: (2) 式中,P、Q分別表示兩
mybatis底層程式碼閱讀2--解析引數表示式,建立引數對映關係
前言 目前水平有限,但是又想多看看原始碼,所以很多地方對於框架的程式碼不是很理解,本篇及後續的文章主要是對自己閱讀原始碼的一個記錄,希望對有些同學有幫助,總之一句話只做參考,別無它用.還是建議喜歡程式設計的同學多看看原始碼,一方面增加自己的認知,另一方面在模仿中創新. 下面的程式碼
論文回顧之一 一種新的直線段檢測演算法---LSD:a Line Segment Detector
首先,我們需要回顧一下,為什麼需要檢測影象中的直線段?直線段作為影象中邊緣的一種,又有什麼特殊之處呢?在Marr關於視覺的計算理論中提到,視覺是一種處理過程,經過這個過程我們能從影象中發現外部世界中有什麼東西和它們在什麼地方。同時,我們還知道,資訊處理具有三個層次:(1)第一個層次是資訊處理的計算理論
概率霍夫變換來檢測直線——HoughLinesP引數分析
HoughLinesP引數分析 void HoughLinesP(InputArray image,OutputArray lines, double rho, double theta, int threshold, double minLineLength=0,d
Java正則表示式過濾、替換,將一段文字中的英語單詞分別提取出,並統計詞頻,按詞頻排序。
最近在學習自然語言處理,在建立基礎標籤庫時,遇到一個需要提取語料中的英文單詞的工作,做好了現在來和大家分享下。 實現效果:讀取檔案內容,把其中的英文單詞提取出,並統計詞頻。提取時,原本不是連在一起的單詞可以分開獨立提取,例如:我的PPT和WORD,可以提取出PPT,WORD兩個單詞。 基本思
java使用正則表示式從一長串字元中獲取一段特徵字串
只能說String工具類太強大,導致一直以來,幾乎沒怎麼用到過正則表示式,現在突然要用到,參考正則表示式語法,摸索一上午才搞出來。記錄分享一下,以免忘記 從一長串字元中,截取出邀請碼,我想很多人都遇到過。 String s = "邀請您加入隨心購,自動搜尋淘寶天貓優惠券!先領券,再購
EL表示式呼叫後臺方法並傳遞引數
嘗試獲取後臺物件中帶引數的get方法返回的屬性值時,發現 J2EE6 開始支援EL表示式帶引數的呼叫後臺方法。 語法格式為: ${物件名.方法名(引數)}; 注意此處的方法名是方法全名,EL表示式並不會幫我們自動按照屬性名進行首字母大寫並在開頭拼接get三個字元來尋
JS採用正則表示式獲取位址列引數
getQueryString:function(name) { var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); var r = decodeURI(decodeURI(window.location.search)
PHP正則表示式 模式引數詳解
i (PCRE_CASELESS) 如果設定此修正符,模式中的字元將同時匹配大小寫字母。 m(PCRE_MULTILINE) 預設情況下,PCRE 將目標字串作為單一的一“行”字元所組成的(甚至其中包含有換行符也是如此)。“行起始”元字元(^)僅僅匹配字串的起始
8.霍夫變換:線條——介紹、引數模型、直線擬合_1
目錄 介紹 引數模型 直線擬合 介紹 到目前為止,我們一直在做影象處理,你把一個影象 和 應用一些函式相加得到一個新的影象我標記為。 這很好,整個課程,實際上是整個職業生涯,數以萬計的PHD寫在影象處理上。 但這不是我們來這裡的原因。 我們來談談真正的計
struts2[3.4]OGNL表示式語句與struts2框架的結合原理--引數賦值
1.三種方式:屬性驅動、物件驅動、模型驅動 2.測試 2.1模型驅動: 2.1.1(深入瞭解框架原理的操作方式)實現模型驅動只需在賦值前,將引數的物件壓入棧頂即可!所以,在未使用攔截器實現Prep
在傳入procedure 引數名稱,最好不要和表字段名稱重複
注意: 在傳入procedure 引數名稱,最好不要和表字段名稱重複,例: create or replace procedure procedureName( testStr in parameterType, message out parameterType ) as
直線引數方程推導
今天覆習一個知識點的時候涉及到了引數方程這個概念,然後發現自己基本完全忘光了,因此特此記錄一下。 我們先來回憶一下直線的普通方程有哪些: 點斜式 已知直線 l 的斜率是 k,並且經過點 P
js利用正則表示式獲取 / 設定URL引數
function getUrlParam(url, key) { var reg = new RegExp("[?&]" + key + "=([^&]+)", "gmi"); if (reg.test(
15、【C++】C++11新特性:Lamda表示式/可變引數模板
一、Lamda表示式 Lamda表示式是C++11中引入的一項新技術,利用Lamda表示式可以編寫內嵌的匿名函式,用以替換獨立函式或者函式物件,並且使得程式碼更可讀。是一種匿名函式,即沒有函式名的函式;Lamda函式的語法定義如下: [capture] :捕捉
jsp頁面無法使用el表示式獲取request傳遞過來的引數
要檢視web.xml的表頭是否正確 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xml