python找直線角度,python求直角三角形角度

本文目錄一覽:

python求兩點間直線所有坐標值

#!/usr/bin/python

# encoding: utf-8

#

# filename: line.py

class Point:

    def __init__(self, x, y):

        self.x = x

        self.y = y

    def __str__(self):

        return “(%d, %d)” % (self.x, self.y)

    def line2(self, another):

        if self.x == another.x:

            step = 1 if self.y  another.y else -1

            y = self.y

            while y != another.y:

                yield Point(self.x, y)

                y += step

        elif self.y == another.y:

            step = 1 if self.x  another.x else -1

            x = self.x

            while x != another.x:

                yield Point(x, self.y)

                x += step

        else:

            d_x = self.x – another.x

            d_y = self.y – another.y

            s_x = 1 if d_x  0 else -1

            s_y = 1 if d_y  0 else -1

            if d_y:

                delta = 1. * d_x / d_y

                for i in xrange(0, d_x):

                    yield Point(self.x+i*s_x, self.y+i*s_x/delta)

            elif d_x:

                delta = 1. * d_y / d_x

                for i in xrange(0, d_y):

                    yield Point(self.y+i*s_y/delta, self.y+i*s_y)

def tester():

    pointA = Point(450, 649)

    pointB = Point(326, 649)

    print pointA, ‘~’, pointB

    for point in pointA.line2(pointB):

        print “%s”%point

    print “+”*32

    pointA = Point(450, 649)

    pointB = Point(450, 863)

    print pointA, ‘~’, pointB

    for point in pointA.line2(pointB):

        print “%s”%point

    print “+”*32

    pointA = Point(450, 649)

    pointB = Point(326, 863)

    print pointA, ‘~’, pointB

    for point in pointA.line2(pointB):

        print “%s”%point

if __name__ == “__main__”:

    tester()

如何用python按順序獲取一個線條組成的圖形的點坐標

1、首先下載安裝python,建議安裝2.7版本以上,3.0版本以下,由於3.0版本以上不向下兼容,體驗較差。

2、打開文本編輯器,推薦editplus,notepad等,將文件保存成 .py格式,editplus和notepad支持識別python語法。

腳本第一行一定要寫上 #!usr/bin/python

表示該腳本文件是可執行python腳本

如果python目錄不在usr/bin目錄下,則替換成當前python執行程序的目錄。

3、編寫完腳本之後注意調試、可以直接用editplus調試。調試方法可自行百度。腳本寫完之後,打開CMD命令行,前提是python 已經被加入到環境變量中,如果沒有加入到環境變量,請百度

4、在CMD命令行中,輸入 “python” + “空格”,即 ”python “;將已經寫好的腳本文件拖拽到當前光標位置,然後敲回車運行即可。

Python中的反三角函數求確定角度

acos()方法返回x的反餘弦值,以弧度表示。

以下是acos()方法的語法:acos(x)

注意:此函數是無法直接訪問的,所以我們需要導入math模塊,然後需要用math的靜態對象來調用這個函數。x — 這必須是在範圍內的數字值-1到1,如果x大於1,則它會產生一個錯誤。

擴展資料

python運行的兩種方式

1、命令行:python +需要執行的代碼

特點:會立即看到效果,用於代碼調試,寫到內存中,不會永久保存

2、寫到文件裡面:python +執行文件的位置

特點:可以永久保存。

過程:

1、啟動python解釋器

2、將內容從硬盤讀取到內存中

3、執行python代碼

(再次強調:程序在未運行前跟普通文件無異,只有程序在運行時,文件內所寫的字符才有特定的語法意義)

python求兩點直線坐標

#判斷斜率是否相等.

#即點(cx,cy)是不是在點(ax,ay)和點(bx,by)確定的直線上.

def issame(ax,ay,bx,by,cx,cy):

  kac=(ax-cx)*(cy-by)

  kbc=(cx-bx)*(ay-cy)   

  return kac==kbc

#獲取點(ax,ay)和點(bx,by)確定的直線上所有的點的坐標

def getall(ax,ay,bx,by):

  res=[]

  for cx in range(500):

    for cy in range(500):

      if issame(ax,ay,bx,by,cx,cy):

        res.append((cx,cy))

  return res

#斜率為100的直線

print(getall(0,0,1,100))

結果:

 

[(0, 0), (1, 100), (2, 200), (3, 300), (4, 400)]

Python OpenCV 霍夫(Hough Transform)直線變換檢測原理,圖像處理第 33 篇博客

霍夫變換(Hough Transform)是圖像處理領域中,從圖像中識別幾何形狀的基本方法之一。主要識別具有某些相同特徵的幾何形狀,例如直線,圓形,本篇博客的目標就是從黑白圖像中識別出直線。

翻閱霍夫直線變換的原理時候,橡皮擦覺得原理部分需要先略過,否則很容易在這個地方陷進去,但是問題來了,這個原理略過了,直接應用函數,裡面有些參數竟然看不懂。例如極坐標,角度掃描範圍,這種函數就屬於繞不過去的知識點了,所以本文轉移方向,死磕原理,下面的博文將語無倫次的為你展示如何學習原理知識。

因為數學知識的貧乏,所以在學習階段會涉及到很多基礎概念的學習,一起來吧。

首先找到相對官方的資料,打開該 地址

下面是一個數學小白對原理的學習經驗。

教材說:眾所周知,一條直線在圖像二維空間可由兩個變量表示。

抱歉,小白還真不知道……即使學習過,這些年也早已經還給老師了。

一開始難道要學習笛卡爾坐標系,不,你低估小白的能力了,我第一個查詢的是 θ 讀作 西塔 ,是一個希臘字母。

什麼是笛卡爾坐標系?

這個比較簡單,直角坐標系。

斜率和截距

斜率,亦稱“角係數”,表示一條直線相對於橫坐標軸的傾斜程度。

一條直線與某平面直角坐標系橫坐標軸正半軸方向的夾角的正切值即該直線相對於該坐標系的斜率。

如果直線與 x 軸互相垂直,直角的正切直無窮大,故此直線不存在斜率。

對於一次函數 y=kx+b , k 就是該函數圖像的斜率。

在學習的時候,也學到如下內容:

截距:對 x 的截距就是 y=0 時, x 的值,對 y 的截距就是 x=0 時, y 的值,

截距就是直線與坐標軸的交點的橫(縱)坐標。 x 截距為 a , y 截距 b ,截距式就是: x/a+y/b=1(a≠0且b≠0) 。

斜率:對於任意函數上任意一點,其斜率等於其切線與 x 軸正方向所成的角,即 k=tanα 。 ax+by+c=0中,k=-a/b 。

什麼是極坐標系?

關於極坐標系,打開 百度百科 學習一下即可。

重點學到下面這個結論就行:

找資料的時候,發現一個解釋的比較清楚的 博客 ,後續可以繼續學習使用。

繼續閱讀資料,看到如下所示的圖,這個圖也出現在了很多解釋原理的博客裡面,但是圖下面寫了一句話

在這裡直接蒙掉了,怎麼就表示成極坐標系了?上面這個公式依舊是笛卡爾坐標系表示直線的方式呀,只是把 k 和 b 的值給替換掉了。

為何是這樣的,具體原因可以參照下圖。

centerchou 圖/center

繼續尋找關於霍夫變換的資料,找到一個新的概念 霍夫空間 。

在笛卡爾坐標系中,一條直線可以用公式 表示,其中 k 和 b 是參數,表示的是斜率和截距。

接下來將方程改寫為 ,這時就建立了一個基於 k – b 的笛卡爾坐標系。

此時這個新的方程在 k – b 坐標系也有一個新的直線。

你可以在紙上畫出這兩個方程對應的線和點,如下圖所示即可。

centerchou 圖/center

新的 k – b 坐標系就叫做霍夫空間,這時得到一個結論,圖像空間 x – y 中的點 對應了 霍夫空間 k – b 中的一條直線 ,即圖像空間的點與霍夫空間的直線發生了對應關係。

如果在圖像空間 x – y 中在增加一個點 ,那相應的該點在霍夫空間也會產生相同的點與線的對應關係,並且 A 點與 B 點產生的直線會在霍夫空間相交於一個點。而這個點的坐標值 就是直線 AB 的參數。

如果到這裡你掌握了,這個性質就為我們解決直線檢測提供了方法,只需要把圖像空間的直線對應到霍夫空間的點,然後統計交點就可以達到目的,例如圖像空間中有 3 條直線,那對應到霍夫空間就會有 3 個峰值點。

遍歷圖像空間中的所有點,將點轉換到霍夫空間,形成大量直線,然後統計出直線交會的點,每個點的坐標都是圖像空間直線方程參數,這時就能得到圖像空間的直線了。

上述的內容沒有問題,但是存在一種情況是,當直線趨近於垂直時,斜率 k 會趨近於無窮大,這時就沒有辦法轉換了,解決辦法是使用法線來表示直線。

上文提及的斜截式如下:

通過第二個公式,可以得到下述公式:

此時,我們可以帶入一些數值進行轉換。

圖像空間有如下的幾個點:

轉換後的函數,都可以在霍夫空間 θ – ρ (橫坐標是 θ ,縱坐標是 ρ )進行表示。

原理這時就比較清晰了:

除了一些數學知識以外,經典的博客我們也有必要記錄一下,方便後面學習的時候,進行復盤。

本部分用於記錄本文中提及的相關數學原理,後續還要逐步埋坑。

今天涉及了一點點數學知識,能力限制,大家一起學習,有錯誤的地方,可以在評論區指出,不勝感激。

希望今天的 1 個小時(今天內容有點多,不一定可以看完),你有所收穫,我們下篇博客見~

相關閱讀

技術專欄

逗趣程序員

關於用python畫多邊形的角度問題

這純粹是一個幾何的問題

假設每一個角的度數為a,作出圖來,平行的關係就會變得清晰明了

具體的過程是做一條輔助線(圖中的虛線),

可以用內錯角相等的兩條線平行,證明這條輔助線與兩條邊均平行

因此證明相隔兩條線的兩條線平行

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/241227.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:26
下一篇 2024-12-12 12:26

相關推薦

  • Python OpenCV 直線檢測

    本文將介紹在Python OpenCV中進行直線檢測的方法,主要涉及到圖像的邊緣檢測、霍夫變換和繪製直線等操作。 一、邊緣檢測 由於直線檢測是從圖像的邊緣開始的,因此必須先找到圖像…

    編程 2025-04-29
  • 從ga角度解讀springboot

    springboot作為目前廣受歡迎的Java開發框架,其中的ga機制在整個開發過程中起着至關重要的作用。 一、ga是什麼 ga即Group Artifacts的縮寫,它是Mave…

    編程 2025-04-29
  • Python打印數字三角形

    本文將詳細闡述如何使用Python打印數字三角形,包括從基本代碼實現到進階操作的應用。通過本文的學習,您可以掌握Python的基礎語法,同時加深對Python循環和函數的理解,提高…

    編程 2025-04-29
  • 如何求直線與曲線的交點

    對於數學問題來說,求直線與曲線的交點可能是其中一種最基本的問題之一。在本文中,我們將從多個方面詳細闡述關於求解直線與曲線交點的方法。 一、解析幾何方法 解析幾何是數學中比較基礎的一…

    編程 2025-04-29
  • Python編程:如何定義一個計算三角形面積的函數

    計算三角形面積是幾何學中的一個基礎問題。在Python編程中,我們可以通過定義一個函數來計算任意三角形的面積。本文將從以下幾個方面對Python定義一個計算三角形面積的函數進行闡述…

    編程 2025-04-28
  • Python三角形周長及面積

    在Python編程中,計算三角形的周長及面積是基礎的操作之一。在此文章中,將詳細闡述如何通過Python編程計算三角形的周長及面積。 一、三角形概述 三角形是由三條線段相交而成的平…

    編程 2025-04-28
  • Python中角度變弧度

    本文將從以下幾個方面詳細闡述Python中角度變弧度的實現方法和應用場景。 一、角度和弧度的概念 在Python中,角度和弧度這兩個概念是經常用到的。角度是指單位圓上的作用角度,其…

    編程 2025-04-28
  • 使用Python輸出楊輝三角形

    本文將從多個方面詳細闡述如何使用Python輸出楊輝三角形。 一、楊輝三角形的定義 楊輝三角形,又稱帕斯卡三角形,是二項式係數在三角形中的一種幾何排列。其特點是每一行數字左右對稱,…

    編程 2025-04-28
  • 從多個角度用法介紹lower down

    lower down是一個常用於編程開發中的操作。它可以對某個值或變量進行降低精度的處理,非常適合於一些需要精度不高但速度快的場景。那麼,在本文中,我們將從多個角度解析lower …

    編程 2025-04-27
  • Python直線

    Python是一種高層次、通用、解釋型、開源、動態數據類型的編程語言。它有快速、可讀性強的特點,同時在數據分析、人工智能、Web開發等領域也有廣泛的應用。本文將從多個方面詳細闡述P…

    編程 2025-04-27

發表回復

登錄後才能評論