如上圖,給定圓心(cx,cy),半徑為r, 求θ
\theta
θ對應的點的座標? 此處θ
\theta
θ是相對於水平軸的角度。
顯然我們可以使用極座標轉換來求:
px= cx+rcos(\theta) \\ py= cy+rsin(\theta) \end\right.
px= cx+rcos(\theta) \\ py= cy-rsin(\theta) \end\right.
\frac+\frac&=&1 \\ \frac& =& \tan(\theta) \end\right.
x2=b2+
a2tan2(θ
)a2b
2這時我們考慮θ
\theta
θ的範圍,可以得到:
(一). 0≤θ
/20\leq\theta0≤θ/2
或者 3∗p
i22∗pi
\frac
23∗pi
2∗pi
x=\frac} \\ y=\frac} \end\right.
⎩⎨⎧x=
b2+a
2tan2(
θ)a
by=
b2+a
2tan2(
θ)a
btan(θ
)(二). pi/
2<
θ<3∗
pi2pi/2
pi/2
<
θ<23
∗pi
x=-\frac} \\ y=-\frac} \end\right.
⎩⎨⎧x=
−b2+
a2tan2(θ
)ab
y=−
b2+a
2tan2(
θ)a
btan(θ
)(三). θ=p
i/2\theta = pi/2
θ=pi/2
x=0 \\ y=b \end\right.
θ=23∗p
ix=0 \\ y=-b \end\right.
x\\ y \end=r(\begin x\\ y \end-\begin x_c\\y_c \end)
(xy)=
r((x
y)−
(xc
yc
))其中r=(
cos(
−α)−
sin(
−α)s
in(−
α)co
s(−α
))=(
cos(
α)si
n(α)
−sin
(α)c
os(α
))r=\begin cos(-\alpha) &-sin(-\alpha) \\ sin(-\alpha) & cos(-\alpha) \end=\begin cos(\alpha) &sin(\alpha) \\ -sin(\alpha) & cos(\alpha) \end
r=(cos
(−α)
sin(
−α)
−sin
(−α)
cos(
−α)
)=(c
os(α
)−si
n(α)
sin
(α)c
os(α
))因此
( xy
)=r−
1(xy
)+(x
cyc)
\begin x\\ y \end =r^\begin x\\ y \end+\begin x_c\\y_c \end
(xy)=
r−1(
xy)
+(xc
yc
)其中r−1
=rt=
(cos
(α)−
sin(
α)si
n(α)
cos(
α))(
★)r^=r^=\begin cos(\alpha) &-sin(\alpha) \\ sin(\alpha) & cos(\alpha) \end~~~~~~~~~~~~~~~~~~~~~~~~~~~(\bigstar)
r−1=rt
=(co
s(α)
sin(
α)−
sin(
α)co
s(α)
)(★
)這樣將前面(xy
)\begin x\\ y \end
(xy
) 的四個結果應用過來,即得到傾斜的橢圓上的對應角度的點的座標。
擴充套件:
如果以上的角度是相對於水平軸的角度,則對應的橢圓上的點的座標如何求呢?
答: 其實很簡單,只需要:
θ ′=
\theta-\alpha+2*pi, & \theta
θ′= \alpha\rightarrow -\alpha\\ y\rightarrow -y \end\right.
問題:一,為什麼不用atan?
答:atan的範圍是[-π/2,π/2],atan2的範圍是(-π,π]。前者只能表示兩個象限,後者可以表示4個。
二,為什麼不atan2(a*tan(radian),b)?
答:這樣寫,和用atan的效果一樣。
(主要參考這個)
(這裡有乙個從極座標變換角度新的推導)
已知圓上任意兩點求圓心和半徑 半徑和直徑
一 概念描述 現代數學 關於半徑,數學辭海 是這樣定義的 圓的半徑見圓。關於直徑,數學辭海 中是這樣定義的 直徑見 弦 我們先來看看弦的定義。弦,圓周上的一種特殊線段,指連線圓周上任意兩點的線段。過圓心的弦稱為直徑,直徑是半徑的二倍,它是最長的弦。從以上定義中我們可知,半徑和直徑都是線段。半徑的兩個...
matlab 求點到任意直線的投影點座標
寫在前面 因為影象座標系和我們平時用的直角座標系還是有不同的。因此在求點到直線投影點座標的時候,不敢隨便把直線用點斜式表示。為此採用向量的方法求投影點。function proj point projpoint point,line p x1 line p 1 y1 line p 2 x2 line...
筆記 已知圓上兩點座標和半徑,求圓心
參考了一下這個博主的部落格 已知兩點座標 x1,y1 x2,y2 和半徑r,求圓心座標 x0,y0 程式設計驗證演算法 具體例子 已知 2,4 4,2 半徑r 2,求圓心 include stdafx.h include include using namespace std void circle...