天天看點

RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))

RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))
RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))

     ATAN2是一個函數,在C 語言裡傳回的是指方位角,C 語言中atan2的函數原型為 double atan2(double y, double x) ,傳回以弧度表示的 y/x 的反正切。y 和 x 的值的符号決定了正确的象限。也可以了解為計算複數 x+yi 的輻角,計算時atan2 比 ATAN穩定(如:ATAN(y/x),當 y 遠遠大于 x 時,計算結果是不穩定的。ATAN2(y,x)的做法:當 x 的絕對值比 y 的絕對值大時使用 ATAN(y/x);反之使用 ATAN(x/y)。這樣就保證了數值穩定性。)

ATAN2(x,y)傳回的是原點至點(x,y)的方位角。傳回值的機關為弧度,取值範圍為(-π,π】

DMIS5.2标準如下:

RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))
RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))

tan()正切函數,求某個角的正切值

在直角三角形 ABC 中(其中角 C 為 90°),角 A 的正切就是它的對邊長度和臨邊長度的比值,如下圖所示,tanA = a / b。

RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))

1.ATAN2(y,x)反正切函數,atan(y/x) 的增強版,能确定象限.

ATAN2(y,x) 函數的功能是求 y/x 的反正切值。ATAN2(y,x)是ATAN(y/x)  的增強版,能夠确定角度所在的象限。

反正切函數 ATAN2(y,x)和正切函數 tan() 的功能恰好相反:tan() 是已知一個角的弧度值,求該角的正切值;而ATAN2(y,x)是已知一個角的正切值(也就是 y/x),求該角的弧度值。

2.參數

RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))

(1)Y表示位于 Y 軸上的值。

(2)X表示位于 X 軸上的值。

注意,x 和 y 同時為 0 時将導緻域錯誤,因為此時的角度是不存在的,或者說是沒有意義的。

3.傳回值

ATAN2函數傳回的是原點至點(x,y)的方位角,即與 x 軸的夾角。也可以了解為複數 x+yi 的輻角。傳回值的機關為弧度,取值範圍為(-π,π】

傳回 y/x 的反正切值,以弧度表示,取值範圍為(-π,π]。如上圖所示,tan(θ) = y/x,θ = atan2(y, x)。

當 (x, y) 在象限中時:

當 (x, y) 在第一象限,0 < θ < π/2

當 (x, y) 在第二象限,π/2 < θ ≤ π

當 (x, y) 在第三象限,-π < θ < -π/2

當 (x, y) 在第四象限,-π/2 < θ < 0

當 (x, y) 在象限的邊界(也就是坐标軸)上時:

當 y 是 0,且 x 為非負值,θ = 0

當 y 是 0,且 x 是負值,θ = π

當 y 是正值,且 x 是 0,θ = π/2

當 y 是負值,且 x 是 0,θ = -π/2

由此可知,一般情況下用 atan() 即可,當對所求出角度的象限有特殊要求時,應使用 atan2()。

RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))

小知識:ATAN(Y/X)反正切函數,求反正切值

atan() 函數的功能是求反正切值。

反正切函數 atan() 和正切函數 tan() 的功能正好相反。tan() 是已知一個角的弧度值 x,求該角的正切值 y;而 atan() 是已知一個角的正切值 y,求該角的弧度值 x。

正切值為 x 的角的度數,以弧度表示,區間為(-π/2, π/2)。

注意:atan() 并不能确定角度所在的象限,例如求得的度數是 45°,并不能說明是第一象限的角度,還有可能是第三象限的角度。如果想進一步确定角度所在的象限,請使用 atan2()。

4.角度和弧度

   度和弧度都是衡量角的大小的機關,就像米(m)和英寸(in)都是用來衡量長度的機關。度用°來表示,弧度用rad表示。

度和弧度之間可以互相轉換,轉換規則為:

1rad = (180/π)° ≈ 57.3°

1° = (π/180)rad ≈ 0.01745rad

示例

求 90° 角的弧度值:

90 × (π/180) = π/2(rad)

弧度的定義

在一個圓中,弧長等于半徑的弧,其所對的圓心角就是 1rad。也就是說,兩條射線從圓心向圓周射出,形成一個夾角和夾角正對的一段弧。當這段弧的長度正好等于圓的半徑時,兩條射線的夾角的弧度為 1。

RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))

根據定義,圓一周的弧度數為 2πr/r = 2π,360° = 2πrad,平角(即 180° 角)為 πrad,直角為 π/2rad。

RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))

在具體計算中,角度以弧度給出時,通常不寫弧度機關,直接寫值。最典型的例子是三角函數,例如sin(8π)、tan(3π/2)。

說明:

在數學坐标系中,結果為正表示從 X 軸逆時針旋轉的角度,結果為負表示從 X 軸順時針旋轉的角度。

ATAN2(y, x) 與 ATAN(y/x)稍有不同,ATAN2(y,x)的取值範圍介于 -pi 到 pi 之間(不包括 -pi),

而ATAN(y/x)的取值範圍介于-pi/2到pi/2之間(不包括±pi/2)。

若要用度表示反正切值,請将結果再乘以 180/3.14159。

另外要注意的是,函數atan2(y,x)中參數的順序是倒置的,atan2(y,x)計算的值相當于點(x,y)的角度值。

6.RationalDMIS 7.1旋轉坐标系(自動計算旋轉角度(三角函數功能))

RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))
RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))
RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))

測量一件零件之前,必須先分析圖紙,使用零件的基準特征來建立零件坐标系。

建立零件坐标系有三個作用:準确測量二維和一維元素,二是友善進行尺寸評價,三是實作批量自動測量。

在測量過程中,我們往往需要利用的基準建立坐标系來評價公差,進行輔助測量,指定零件位置等,這個坐标系稱為“零件坐标系”。建立零件坐标系要根據零件圖紙指定的A,B,C基準的順序指定第一軸,第二軸和坐标零點,順序不能颠倒。

在實際應用中,根據零件在設計,加工時的基準特征情況,可以選擇3-2-1法(面——線——點法),三點拟合坐标系,2點偏移隊列坐标系,多點拟合坐标系,疊代對齊坐标系,合并坐标系。

手動采集元素建構坐标系,為了告訴測量機工件的位置。在手動坐标系之後,我們需要更改模式為程式模式,建立自動程式(自動程式是可以自動執行的),自動坐标系是為了加強坐标系的精度。精建坐标系時。不必與手動建坐标系完全一樣,但必須按照圖紙要求進行操作。

(1)采集第一基準元素——找正第一軸向

   建立(找正)第一軸必須用平面或軸線。

RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))

關于第一軸向元素選擇:平面,圓柱,圓錐,3D直線(台階圓柱)

   圓柱和圓錐可以被認為是軸,用于指定方向。球和圓可以被認為是點,用于定義位置。平面的方向由其法向矢量決定。

    一般情況下,如果設計圖上沒有特别指定建構坐标系的方法,而且幾何公差和尺寸也沒有參照物,那麼就用最好的工作表面作為主要的基準方向,該面應該盡可能的大,或者使用一個圓柱轉軸,如果它作為基準足夠長。

    坐标系的第一軸為了能夠與第二軸垂直,一般采用平面,因為平面的法向矢量與平面肯定是垂直的。如果第一軸采用圓柱軸線定義,則同時确定了與其相垂直的坐标平面。

(2)采集BC基準兩圓孔,構造直線(最佳拟合)。

RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))
RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))
RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))

(3)3-2-1法建立零件坐标系

RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))
RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))

(4)旋轉坐标系

       旋轉角度正負——右手定則

      當圖紙求坐标系需要做旋轉時,使用的方法分别有兩種方式。

(1)通過輸入圖紙上的角度進行旋轉,這個角度可以通過正切函數計算(計算機電腦或者手機電腦)。

RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))
RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))

(2)自動計算旋轉角度——推薦(山澗果子)

       通過輸入X,Y坐标值,使用進階功能(RTOD(),ATAN2(Y,X)三角函數的計算方式),将夾角計算出來

ATAN2(x,y):計算x/y的反正切值,機關:弧度

RTOD(x):将弧度值轉換成度

RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))

 夾角:ATAN2(80,60)*180/π或RTOD(ATAN2(80,60))

   由于 ATAN2(Y,X) 函數的參數是弧度,是以在坐标系旋轉時,需要先将 弧度值轉換為角度值。 ——RTOD(ATAN2(Y,X))或ATAN2(Y,X)*180/π

RationalDMIS7.1内部函數功能清單:

RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))
RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))

拓展知識:

關于一個平面兩個偏置圓,第二軸向時旋轉角度好還是偏置直線好?

     我認為按理論來說這兩種方法是一緻的。但是在使用者使用過程中發現是有差別的。直接按理論角度旋轉坐标系的方向很穩定。但是構造偏置線的方法時隻使用這個圓心點到直線的距離,沒有考慮兩圓心點之間的距離,當兩圓心點變化時,造成偏置線角度的變化。這是坐标系不穩定的原因之一。

    建議大家最好從圖紙提供的理論值中,計算出要偏置的角度,每次使用兩圓心找正旋轉軸後,偏置這個理論角度。這會使坐标系與兩孔的位置無關。

RationalDMIS 7.1自動計算旋轉角度(三角函數ATAN2(Y,X))

$$/*  Header

DMISMN/'Created by [山澗果子] on Saturday, November 23, 2019', 4.0

UNITS/MM, ANGDEC, MMPS

WKPLAN/XYPLAN

PRCOMP/ON

TECOMP/ON

FLY/1.0000

MODE/MAN

SNSET/APPRCH, 2.0000

SNSET/RETRCT, 2.0000

SNSET/DEPTH, 0.0000

SNSET/SEARCH, 10.0000

SNSET/CLRSRF, 10.0000

RECALL/D(MCS)

SNSLCT/S(21-2)

GEOALG/BF, LSTSQR

GEOALG/ANGLB, DEFALT

GEOALG/CIRCLE, LSTSQR

GEOALG/ARC, LSTSQR

GEOALG/PLANE, LSTSQR

$$

$$*/

F(PLN1)=FEAT/PLANE,CART,35.2867,37.7873,0.0000,-0.0000,0.0000,1.0000

$$ Measurement points are created through actual points

MEAS/PLANE, F(PLN1), 4

  PTMEAS/CART, -24.3514,  92.1369, -0.0000, -0.0000, 0.0000, 1.0000

  PTMEAS/CART, -24.9065, -10.2913, -0.0000, -0.0000, 0.0000, 1.0000

  PTMEAS/CART,  94.7980, -20.6403,  0.0000, -0.0000, 0.0000, 1.0000

  PTMEAS/CART,  95.6068,  89.9439, -0.0000, -0.0000, 0.0000, 1.0000

ENDMES

D(CRD1) = DATSET/FA(PLN1), ZDIR

F(CIR1)=FEAT/CIRCLE,INNER,CART,0.0000,0.0000,-5.3727,0.0000,0.0000,1.0000, 10.0000

MEAS/CIRCLE, F(CIR1), 4

  PTMEAS/CART, -2.6091,  4.2653, -5.3727,  0.5218, -0.8531, -0.0000

  PTMEAS/CART,  4.9604,  0.6281, -5.3727, -0.9921, -0.1256, -0.0000

  PTMEAS/CART, -0.1224, -4.9985, -5.3727,  0.0245,  0.9997, -0.0000

  PTMEAS/CART, -2.0506, -4.5602, -5.3727,  0.4101,  0.9120, -0.0000

F(CIR2)=FEAT/CIRCLE,INNER,CART,60.0000,80.0000,-3.7877,0.0000,0.0000,1.0000, 10.0000

MEAS/CIRCLE, F(CIR2), 4

  PTMEAS/CART, 58.1471, 84.6440, -3.7877,  0.3706, -0.9288, -0.0000

  PTMEAS/CART, 62.8181, 84.1302, -3.7877, -0.5636, -0.8260, -0.0000

  PTMEAS/CART, 60.3429, 75.0118, -3.7877, -0.0686,  0.9976, -0.0000

  PTMEAS/CART, 57.6742, 75.5739, -3.7877,  0.4652,  0.8852, -0.0000

$$ CREATED BY : External-Array Software, Inc

$$ DATE : Jan 19, 2009

$$ DISLAIMER: 

$$ This Macro has been tested internally but not been tested with

$$ other DMIS compatible software. This Macro is provided as sample

$$ and can be modifed for your own use. External-Array doesn't not 

$$ guarantee the quality of this Macro.

$$ FUNCION: Create a nominal line using two actual features

$$ DI, DJ, DK are the normal vector of the plane that the line lies on

M(EASI_2PT_TO_LINE) = Macro/'FEAT1', 'FEAT2', 'FEATLINE', DI, DJ, DK

DECL/LOCAL,DOUBLE,DVALUE[6]

    DECL/LOCAL,INTGR, INDEX1, INDEX2

    CALL/M(EASI_GETX_INDEX), FEAT1, INDEX1

    CALL/M(EASI_GETX_INDEX), FEAT2, INDEX2

DVALUE[1] = OBTAIN/FA(@FEAT1),INDEX1

DVALUE[2] = OBTAIN/FA(@FEAT1),INDEX1+1

DVALUE[3] = OBTAIN/FA(@FEAT1),INDEX1+2

DVALUE[4] = OBTAIN/FA(@FEAT2),INDEX2

DVALUE[5] = OBTAIN/FA(@FEAT2),INDEX2+1

DVALUE[6] = OBTAIN/FA(@FEAT2),INDEX2+2

    F(@FEATLINE) = FEAT/LINE,BND,CART,DVALUE[1],DVALUE[2],DVALUE[3],$

                                      DVALUE[4],DVALUE[5],DVALUE[6],$

                                      DI, DJ, DK

ENDMAC

CALL/M(EASI_2PT_TO_LINE),(CIR1),(CIR2),(LN_BF1), 0.0000, 0.0000, 1.0000

CONST/LINE,F(LN_BF1),BF,FA(CIR1),FA(CIR2)

D(CRD2) = DATSET/FA(PLN1), ZDIR, ZORIG, FA(LN_BF1), XDIR, FA(CIR1), XORIG