質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

2回答

1230閲覧

メモリアドレスの計算

kimishie

総合スコア15

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2019/05/15 06:32

現在、Androidのアプリをeclipseで作っているのですが、どうしてもわからないところがあります。

それは、ビデオメモリ(VRAM)の中に保存されたピクセルのメモリアドレスの求め方です。

教科書では
「(x,y)座標にあるピクセルのメモリアドレスを計算する式は次のようになる。
int address = x + y * rasterWidth」
と書かれているのですが理解できません。

rasterWidthは、おそらくラスタの幅だとは思うのですが具体的にわかりません。
ラスタの全体の幅なのか、それともラスタ単体の?幅なのか、、

仮にラスタの幅を全体の幅と仮定して定数とすると、(0,1)と(1,0)のピクセルのアドレスが同じということになってしまいます。

どういうことなのでしょうか・・

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozwk

2019/05/15 06:59

> 仮にラスタの幅を全体の幅と仮定して定数とすると、(0,1)と(1,0)のピクセルのアドレスが同じということになってしまいます。 なぜ?
guest

回答2

0

ベストアンサー

rasterWidth = 画像の幅」です。
また、「メモリアドレス」という言い方がちょっと違うように感じられたので、ピクセルを格納する配列の「添え字」とします。

例えば、16x16の画像があったとしましょう。
(0, 0)のピクセルを表す添え字は次のようになります。

0 + 0 * 16 = 0

(2, 6)であればこのようになります。

2 + 6 * 16 = 98

一般的にNxNの画像を一次元の配列で扱うときは、

012...N-1
NN+1N+2...2N-1

表のような順でピクセルが格納されていくので、「教科書」に書かれている計算式になるのです。
また、添え字から座標を計算する場合は以下のようになります。

※小数点以下は切り捨て x = (添え字) % (画像の幅) y = (添え字) / (画像の幅)

投稿2019/05/15 07:10

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kimishie

2019/05/15 07:42

回答ありがとうございます。 すみません、まだ理解できないのですが メモリは一次元で、直線のイメージです。 つまり、int addressは、メモリを先頭から数えて何番目にあるのか。 というイメージを持ってしまっています。 具体的にこの式はなにを指しているのでしょうか。 申し訳ありませんが、教えてください。。
kimishie

2019/05/15 07:50

理解しました!ありがとうございます!
guest

0

ここが参考になるかと思います。

そもそも、計算式通りでも

(0,1) 0 + (1 × 80) = 80と、
(1,0) 1 + (0 × 80) = 1

は、違うアドレスでは?

あ、足し算より掛け算が優先ですよ。

address = x + y * rasterWidth」

は、

address = (x + y) * rasterWidth ではないです。

投稿2019/05/15 07:01

momon-ga

総合スコア4820

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問