C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: 楕円上の点(X,Y)のY座標が知りたい


(過去ログ 68 を表示中)

[トピック内 20 記事 (1 - 20 表示)]  << 0 >>

■39691 / inTopicNo.1)  楕円上の点(X,Y)のY座標が知りたい
  
□投稿者/ Key (11回)-(2009/08/12(Wed) 14:32:01)

分類:[C#] 

楕円上の中の領域かどうかを調べるために
楕円中心点座標(Xc,Yc)と楕円の長軸半径A、短軸半径B、楕円上の点のX座標がわかっている場合に
Y座標がわかる式を作成したいのですがどのように計算すればよいでしょうか。
私は、
X = Xc + A*cosθ
Y = Yc + B*sinθ
であるありますがsinやcosはできるだけ使いたくありません。

返信お願いします。

引用返信 編集キー/
■39692 / inTopicNo.2)  Re[1]: 楕円上の点(X,Y)のY座標が知りたい
□投稿者/ みきぬ (601回)-(2009/08/12(Wed) 14:39:13)
No39691 (Key さん) に返信
> sinやcosはできるだけ使いたくありません。
>
使いたくない理由が分からないと、それを回避する方法を考えるのも難しいと思いませんか。
引用返信 編集キー/
■39693 / inTopicNo.3)  Re[2]: 楕円上の点(X,Y)のY座標が知りたい
□投稿者/ Key (12回)-(2009/08/12(Wed) 14:43:20)
与えられる引数が上記で示した値しか使えない場合なので
sinやcosを使わずに行う方法が知りたいです。
引用返信 編集キー/
■39694 / inTopicNo.4)  Re[1]: 楕円上の点(X,Y)のY座標が知りたい
□投稿者/ よねKEN (402回)-(2009/08/12(Wed) 14:45:12)
2009/08/12(Wed) 14:47:45 編集(投稿者)

No39691 (Key さん) に返信
> 楕円上の中の領域かどうかを調べるために

GraphicsPathクラスで楕円の形状を作成(AddEllipseメソッド)したインスタンスを用意して、
IsVisibleメソッドで判定してはいかがでしょうか。

> 楕円中心点座標(Xc,Yc)と楕円の長軸半径A、短軸半径B、楕円上の点のX座標がわかっている場合に
> Y座標がわかる式を作成したいのですがどのように計算すればよいでしょうか。

自前の計算でやるにしても、楕円の内部かどうかの判定が目的であれば、楕円の標準式を使って
x^2 / A ^2 + y^2 / B^2 <= 1 (※^はべき乗を意味するものとします)
かどうかを判定すればよいと思うので、cos/sinは必要ないのではないでしょうか?

引用返信 編集キー/
■39695 / inTopicNo.5)  Re[3]: 楕円上の点(X,Y)のY座標が知りたい
□投稿者/ Key (13回)-(2009/08/12(Wed) 14:53:42)
返信ありがとうございます。
中心点が原点でない場合は
(X-Xc)^2/A^2+(Y-Yc)^2/B^2 <= 1でよかったでしょうか?
引用返信 編集キー/
■39696 / inTopicNo.6)  Re[1]: 楕円上の点(X,Y)のY座標が知りたい
□投稿者/ やじゅ (1213回)-(2009/08/12(Wed) 14:53:58)
やじゅ さんの Web サイト
No39691 (Key さん) に返信
> 楕円上の中の領域かどうかを調べるために

Y座標の求め方はさっぱり分からないので、楕円上の中の領域かどうか という観点のみ
質問の意図とは違うかも知れないので、参考程度に

楕円と点 言語ことHSPですが、アルゴリズムを理解する分には問題ないかな
http://hspdev-wiki.net/?%BE%D7%C6%CD%C8%BD%C4%EA#g01e4264

引用返信 編集キー/
■39697 / inTopicNo.7)  Re[1]: 楕円上の点(X,Y)のY座標が知りたい
□投稿者/ aetos (193回)-(2009/08/12(Wed) 15:03:05)
aetos さんの Web サイト
No39691 (Key さん) に返信
> 楕円上の中の領域かどうかを調べるために
> 楕円中心点座標(Xc,Yc)と楕円の長軸半径A、短軸半径B、楕円上の点のX座標がわかっている場合に
> Y座標がわかる式を作成したいのですがどのように計算すればよいでしょうか。
> 私は、
> X = Xc + A*cosθ
> Y = Yc + B*sinθ
> であるありますがsinやcosはできるだけ使いたくありません。
>
> 返信お願いします。

楕円の中か外かが問題なの?
楕円の線上の点の話だよね?
引用返信 編集キー/
■39699 / inTopicNo.8)  Re[4]: 楕円上の点(X,Y)のY座標が知りたい
□投稿者/ επιστημη (2104回)-(2009/08/12(Wed) 15:04:51)
επιστημη さんの Web サイト
> 中心点が原点でない場合は
> (X-Xc)^2/A^2+(Y-Yc)^2/B^2 <= 1でよかったでしょうか?

やってみればわかることを訊くまでもないでしょう。

引用返信 編集キー/
■39700 / inTopicNo.9)  Re[2]: 楕円上の点(X,Y)のY座標が知りたい
□投稿者/ Key (14回)-(2009/08/12(Wed) 15:06:08)
楕円の中か外かが問題なので
境界点のY座標を求めてそこよりも内側に存在しているかを
判断しようと思ってそのように計算するようにしました。
引用返信 編集キー/
■39702 / inTopicNo.10)  Re[3]: 楕円上の点(X,Y)のY座標が知りたい
□投稿者/ みきぬ (602回)-(2009/08/12(Wed) 15:11:16)
> やってみればわかることを訊くまでもないでしょう。

ではやってみましょうか。

X = Xc + A*cosθ
Y = Yc + B*sinθ



(X - Xc) / A = cosθ
(Y - Yc) / B = sinθ



(X - Xc)^2 / A^2 + (Y - Yc)^2 / B^2 = 1 (∵ sinθ^2 + cosθ^2 = 1)

イコール 1 というのがちょうど楕円の円弧上にある場合なので、
それより小さければ内側、大きければ外側っつーことで。

引用返信 編集キー/
■39703 / inTopicNo.11)  Re[2]: 楕円上の点(X,Y)のY座標が知りたい
□投稿者/ よねKEN (403回)-(2009/08/12(Wed) 15:11:39)
No39697 (aetos さん) に返信
> ■No39691 (Key さん) に返信
>>楕円上の中の領域かどうかを調べるために
:略
>
> 楕円の中か外かが問題なの?
> 楕円の線上の点の話だよね?

中か外かの意味の方なんじゃないでしょうか。
私も「楕円上の中の領域」の意味がどちらの意味か迷ったので、
「楕円の内部かどうかの判定が目的なら」と言葉を言い換えて
回答してみましたが、特にツッコミもなかったので。

もし線上の方の意味なら、
・GraphicsPathのIsOutlineVisibleメソッド
・x^2 / A ^2 + y^2 / B^2 = 1 ( 小なりイコールでなくイコールにする)
のいずれかで対応ですね。



引用返信 編集キー/
■39705 / inTopicNo.12)  Re[1]: 楕円上の点(X,Y)のY座標が知りたい
□投稿者/ aetos (194回)-(2009/08/12(Wed) 15:14:39)
aetos さんの Web サイト
No39691 (Key さん) に返信
> 楕円上の中の領域かどうかを調べるために
> 楕円中心点座標(Xc,Yc)と楕円の長軸半径A、短軸半径B、楕円上の点のX座標がわかっている場合に
> Y座標がわかる式を作成したいのですがどのように計算すればよいでしょうか。
> 私は、
> X = Xc + A*cosθ
> Y = Yc + B*sinθ
> であるありますがsinやcosはできるだけ使いたくありません。
>
> 返信お願いします。

http://ja.wikipedia.org/wiki/%E6%A5%95%E5%86%86
によると、楕円は、中心が原点である場合に

x2 / a2 + y2 / b2 = 1

だそうです(x2 とかは2乗のつもり)。
このうち、x、a、b はわかっているので、y について解けばいいんじゃないでしょうか。

y = sqrt( ( 1 - x2 / a2 ) / b2 )

でしょうかね?
引用返信 編集キー/
■39706 / inTopicNo.13)  Re[3]: 楕円上の点(X,Y)のY座標が知りたい
□投稿者/ aetos (195回)-(2009/08/12(Wed) 15:21:07)
aetos さんの Web サイト
No39700 (Key さん) に返信
> 楕円の中か外かが問題なので
> 境界点のY座標を求めてそこよりも内側に存在しているかを
> 判断しようと思ってそのように計算するようにしました。

そゆことですか。
判定したい点の座標 x, y はわかっているわけですね。
で、その x 座標のときの、楕円の線上の点の座標 y' を求めて、y < y' であれば楕円の中だと。
引用返信 編集キー/
■39708 / inTopicNo.14)  Re[2]: 楕円上の点(X,Y)のY座標が知りたい
□投稿者/ みきぬ (603回)-(2009/08/12(Wed) 15:27:34)
# 余談

> ・GraphicsPathのIsOutlineVisibleメソッド

これって Pen をわざわざ引数にとるってことは、Pen の太さが考慮されてるって考えていいのかしら?
引用返信 編集キー/
■39717 / inTopicNo.15)  Re[3]: 楕円上の点(X,Y)のY座標が知りたい
□投稿者/ Key (15回)-(2009/08/12(Wed) 17:07:08)
楕円の表示はe.Graphics.DrawEllipse(Pens.pen,Rectangle rect)で可能だと思うのですが
Rectangle rectがよくわかりません。
優しい方教えてください。
引用返信 編集キー/
■39718 / inTopicNo.16)  Re[4]: 楕円上の点(X,Y)のY座標が知りたい
□投稿者/ よねKEN (404回)-(2009/08/12(Wed) 17:31:23)
みきぬさん
> これって Pen をわざわざ引数にとるってことは、Pen の太さが考慮されてるって考えていいのかしら?

考慮されていたと思うけど、あまり検証していないので、どの程度実用に耐えるのかはわかりません(^^;

No39717 (Key さん) に返信
> 楕円の表示はe.Graphics.DrawEllipse(Pens.pen,Rectangle rect)で可能だと思うのですが
> Rectangle rectがよくわかりません。
> 優しい方教えてください。

楕円に外接する長方形を指定してやればOKです。
引用返信 編集キー/
■39719 / inTopicNo.17)  Re[5]: 楕円上の点(X,Y)のY座標が知りたい
□投稿者/ みきぬ (605回)-(2009/08/12(Wed) 17:40:05)
No39718 (よねKEN さん) に返信
> みきぬさん
>>これって Pen をわざわざ引数にとるってことは、Pen の太さが考慮されてるって考えていいのかしら?
>
> 考慮されていたと思うけど、あまり検証していないので、どの程度実用に耐えるのかはわかりません(^^;
>
誤差を考えると、↓こっちの方法をそのまま使うのも実用的じゃないと思ったんですよね。

・x^2 / A ^2 + y^2 / B^2 = 1

なんで、Pen の太さをいい感じに設定してうまくいくならそれでいいし、
そうでなければ、abs(x^2 / A ^2 + y^2 / B^2 - 1) < d (d はごく小さい正数)とかしてあげないとなーと思った次第。
引用返信 編集キー/
■39724 / inTopicNo.18)  Re[5]: 楕円上の点(X,Y)のY座標が知りたい
□投稿者/ Key (16回)-(2009/08/12(Wed) 18:31:52)
> ■No39717 (Key さん) に返信
>>楕円の表示はe.Graphics.DrawEllipse(Pens.pen,Rectangle rect)で可能だと思うのですが
>>Rectangle rectがよくわかりません。
>>優しい方教えてください。
>
> 楕円に外接する長方形を指定してやればOKです。

C#初めてというかプログラミングを始めて間もないので
教えていただきたいのですが
楕円に外接する長方形を指定してやるにはどうすればよいのですか。
円は円で引けないののでしょうか。円の中心点と半径だけなどで。
引用返信 編集キー/
■39725 / inTopicNo.19)  Re[6]: 楕円上の点(X,Y)のY座標が知りたい
□投稿者/ みきぬ (606回)-(2009/08/12(Wed) 18:43:12)
No39724 (Key さん) に返信
> C#初めてというかプログラミングを始めて間もないので

理由になってない。


> 楕円に外接する長方形を指定してやるにはどうすればよいのですか。
> 円は円で引けないののでしょうか。円の中心点と半径だけなどで。

中心点の座標と半径(楕円だから半径じゃないけど)から計算で求められます。
図を描けば小学生でもできるレベル。
引用返信 編集キー/
■39730 / inTopicNo.20)  Re[6]: 楕円上の点(X,Y)のY座標が知りたい
 
□投稿者/ Jitta on the way (379回)-(2009/08/12(Wed) 19:17:39)
No39724 (Key さん) に返信
>>■No39717 (Key さん) に返信
> >>楕円の表示はe.Graphics.DrawEllipse(Pens.pen,Rectangle rect)で可能だと思うのですが
> >>Rectangle rectがよくわかりません。
> >>優しい方教えてください。
>>
>>楕円に外接する長方形を指定してやればOKです。
>
> C#初めてというかプログラミングを始めて間もないので
> 教えていただきたいのですが
> 楕円に外接する長方形を指定してやるにはどうすればよいのですか。
> 円は円で引けないののでしょうか。円の中心点と半径だけなどで。

質問の意図がわかりません。
外接ですから、楕円の短い直径と長い直径とを求め、それを高さと長さにすればいいですよね?
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -