数学的座標⇔スクリーン座標変換の方法は?

685 views
Skip to first unread message

村中郷志

unread,
Apr 16, 2014, 8:21:37 PM4/16/14
to android-g...@googlegroups.com
Android,Java初心者です。

数学では原点が中心で上にいくと、Y座標の値が増えます。一方、スクリーン上では、左上を原点として、下にいくとY 座標の値が増えますよね。

数学系のクラスなどを使う場合には、スクリーン座標を数学的座標に変換する必要があると思うのですが、このスクリーン座標⇔数学的座標を簡単に行う方法はあるのでしょうか?

KazuhiroKubota

unread,
Apr 16, 2014, 11:55:52 PM4/16/14
to android-g...@googlegroups.com
こんにちは

”数学系のクラス”がどれのことを言ってるのかわかりませんが
-1を掛けただけでは対処できない問題なのでしょうか?

2014年4月17日木曜日 9時21分37秒 UTC+9 村中郷志:

Makoto Yamazaki

unread,
Apr 17, 2014, 3:19:37 AM4/17/14
to android-g...@googlegroups.com
zaki です。

座標を気にして処理をするような場合というとカスタム View の onDraw を自分で実装したり
オフスクリーン Bitmap に描画するようなケースだと思いますが、そのような場合は
Canvas クラスを経由して描画を行います。
Canvas クラスには、setMatrix(Matrix), concat(Matrix)  などのメソッドで、座標変換のための
行列をセットできるので、これを使うと上下反転したものとして扱う事ができます。

要するに、Canvas クラスが座標値を affine 変換する機能を持っているということです。




--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループから退会し、グループからのメールの配信を停止するには android-group-j...@googlegroups.com にメールを送信してください。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
その他のオプションについては、https://groups.google.com/d/optout にアクセスしてください。



--
YAMAZAKI Makoto

村中郷志

unread,
Apr 17, 2014, 5:02:27 AM4/17/14
to android-g...@googlegroups.com
回答を頂き、有難うございます。

やりたいことは、仮にスクリーンの画面中央を原点として、線分が交差しているか?などのチェックです。

仮に横600、縦800のスクリーンがあった場合、中心の座標は(300,400)ですよね。
もう一つ座標が(500,300)の点があったとします。
これは中心からみると、座標は(200,100)になりますよね。※添付の画像ファイル参照
この座標を簡単に出せないかな?と思っています。

そもそも発想が間違っているのかもしれません・・・
とんちんかんな質問でしたら、申し訳ございません。



2014年4月17日木曜日 16時19分37秒 UTC+9 zaki:
zaki です。

座標を気にして処理をするような場合というとカスタム View の onDraw を自分で実装したり
オフスクリーン Bitmap に描画するようなケースだと思いますが、そのような場合は
Canvas クラスを経由して描画を行います。
Canvas クラスには、setMatrix(Matrix), concat(Matrix)  などのメソッドで、座標変換のための
行列をセットできるので、これを使うと上下反転したものとして扱う事ができます。

要するに、Canvas クラスが座標値を affine 変換する機能を持っているということです。



2014-04-17 9:21 GMT+09:00 村中郷志 <ff3...@gmail.com>:
Android,Java初心者です。

数学では原点が中心で上にいくと、Y座標の値が増えます。一方、スクリーン上では、左上を原点として、下にいくとY 座標の値が増えますよね。

数学系のクラスなどを使う場合には、スクリーン座標を数学的座標に変換する必要があると思うのですが、このスクリーン座標⇔数学的座標を簡単に行う方法はあるのでしょうか?





--
YAMAZAKI Makoto

村中郷志

unread,
Apr 17, 2014, 5:10:35 AM4/17/14
to android-g...@googlegroups.com
回答ありがとうございます。

> -1を掛けただけでは対処できない問題なのでしょうか?

なるほど。

そうすれば、y座標が下にいくにつれて、値が減ることになりますね。
原点をスクリーンの左上のままとするなら、数学座標の中心から見た
右下と同じことになりますね。

目からうろこです。有難うございます。

2014年4月17日木曜日 12時55分52秒 UTC+9 KazuhiroKubota:
Reply all
Reply to author
Forward
0 new messages