Python計算空間二面角

2021-10-02 03:37:56 字數 1946 閱讀 4044

定義代表三維笛卡爾座標系上某個點的point 類(包括x 、y 、z 三個屬性),為該類定義乙個方法,可接收second 、third 、forth 三個引數,用於計算當前點、second 、third 組成的面與second 、third 、forth組成的面之間的夾角。

a,b,c,d分別對應於提示point1,point2,point3,point4,線段bc是面abc與面dbc的公共邊,計算倆面空間夾角: cos (夾角) = (x·y)/|x||y|,其中x=ab×bc,y=bc×cd,x·y代表x與y的點積,ab×bc代表ab與bc的叉乘

import math

class

point()

:def

__init__

(self,x,y,z)

: self.x = x

self.y = y

self.z = z

defdistance

(self)

: xx =

(self.x)**2

yy =

(self.y)**2

zz =

(self.z)**2

return

(xx + yy + zz)**(

0.5)

defvector

(self,other)

: xx =

(self.x - other.x)

yy =

(self.y - other.y)

zz =

(self.z - other.z)

return point(xx,yy,zz)

defcross

(self,other)

:return point(self.x*other.z-self.z*other.y , self.z*other.x-self.x*other.z , self.x*other.y-self.y*other.x)

defdot

(self,other)

:return

(self.x*other.x + self.y*other.y + self.z*other.z)

# def dot(self, other):

# return point((self.x * other.x),

# (self.y * other.y),

# (self.z * other.z))

defangle

(self,second,third,forth)

: vertor11 = point1.vector(point2)

vertor12 = point1.vector(point3)

vertor21 = point4.vector(point2)

vertor22 = point4.vector(point3)

vertor1 = vertor11.cross(vertor12)

vertor2 = vertor21.cross(vertor22)

return math.acos(

(vertor1.dot(vertor2))/

((vertor1.distance())

*(vertor2.distance())

))point1 = point(0,

1,0)

point2 = point(1,

0,0)

point3 = point(0,

0,0)

point4 = point(0,

0,1)

angels = point1.angle(point2,point3,point4)

print

(math.degrees(angels)

)

直二面角與直三面角

從一條直線出發的兩個半平面所組成的圖形叫做二面角,這條直線叫做二面角的稜,這兩個半平面叫做二面角的面。詳述 平面內的一條直線,把這個平面分為兩部分,每一部分都叫作半平面。從一條直線出發的兩個半平面所組成的圖形叫作二面角。這條直線叫作二面角的稜,這兩個半平面叫作二面角的面。二面角的大小,可以用它的平面...

教您用數學課件製作工具演示線變二面角

中學時代要接觸的幾何知識有很多,二面角就是其中之一,是指從一條直線出發的兩個半平面所組成的圖形,這條直線叫做二面角的稜,這兩個半平面叫做二面角的面。為了幫助學生們了解線變二面角的過程,所以可以製作動態課件進行演示,下面就一起來學習具體製作技巧。幾何畫板作為數學課件製作工具 軟體介面簡潔,易操作,所以...

計算機視覺(二) 常用顏色空間及其轉換

在 計算機視覺 一 影象資料表示 中,我介紹了rgb和灰度兩種顏色空間,並且介紹了畫素的概念以及在程式上如何訪問。接下來介紹從rgb到灰度的轉換,以及兩種我常用的顏色空間hsv和二值空間 嚴格來說屬於灰度,只是只有0和255兩個值 假如先不談原理,rgb轉灰度你會怎麼做?先從我們知道的資訊入手,rg...