- - PR -
Javaというか、数学というか、算数の質問です・・・
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-10-09 15:56
"fillRoundRect"を使って横長のグラフを描画しています。
"getWidthFromValue"という関数を作って渡した値からグラフの幅を算出しています。 算出した幅の長さの長方形を描画しています。 >width = getWidthFromValue(Value); >fillRoundRect(X, Y, width, Height, arcW, arcH); "getWidthFromValue"関数はこんな感じです。 int getWidthFromValue(int intVal) { int width = 0; if(intVal <= 0) { return 0; } if(intVal > 127){ return 118; } width = (int)(intVal * ((double)118 / (double)127)); return width; } この中での数式 width = (int)(intVal * ((double)118 / (double)127)); は 幅 = (int)(値 * ((double)グラフの最大幅 / (double)値の最大値)); です。 長々説明してしまいましたが、 上記の式だと値が0の時は幅も0になってしまいます。 やりたい事は値が0の時の幅が8にしたいのです。 非常にレベルの低い質問ですみません。 教えてください | ||||||||
|
投稿日時: 2003-10-09 16:03
幅 = (値 * (グラフの最大幅 - 8) / 値の最大値) + 8
こんな感じでいかがでしょう。 ゲタを履かせただけなんですけどね。 | ||||||||
|
投稿日時: 2003-10-09 16:06
こんにちわ。お世話になっております。
getWidthFromValueメソッドの中でintValが0のときに 8を返すようにしてあげればよいのでは??
| ||||||||
|
投稿日時: 2003-10-09 16:40
お早いお答えありがとうございました。
まずでくのぼう様のお答えですが、 >幅 = (値 * (グラフの最大幅 - 8) / 値の最大値) + 8 ですと、値に0がくると幅は0になってしまいます。 次にゆう様のご意見ですが、 >intValが0のときに8を返すようにしてあげればよいのでは ですと、 値に3が来た場合幅は2になり 値に2が来た場合幅は1になり 値に1が来た場合幅は0になり 値に0が来た場合幅が8になるといった感じです。 これですと右から左へグラフが縮んでいき、0になると急に8の幅に伸びるといった 動きになってしまいます。 グラフは左から右へ伸びるグラフです、値が0の時にグラフが表示されないので 値が0の時は幅を8にしたいのです。つまり幅8が値0にしたいのです。そこから 右へグラフが伸びていき幅118になったら値は127になるといった感じです。 説明不足で申し訳ありません。 [ メッセージ編集済み 編集者: ボム 編集日時 2003-10-09 16:45 ] | ||||||||
|
投稿日時: 2003-10-09 16:47
どうもです。
>まずでくのぼう様のお答えですが、 >>幅 = (値 * (グラフの最大幅 - 8) / 値の最大値) + 8 >ですと、値に0がくると幅は0になってしまいます。 上の式では、値が0でも8になると思いますけど。 [ メッセージ編集済み 編集者: アティ 編集日時 2003-10-09 16:50 ] | ||||||||
|
投稿日時: 2003-10-09 17:06
junと申します.やりたいことがよくわからないのですけど
単純な比例計算でよいなら 値×(118- では | ||||||||
|
投稿日時: 2003-10-09 17:07
なにか化けてしまうようです
118から8を引いたものを127で割ったものに値をかけて8を足します | ||||||||
|
投稿日時: 2003-10-09 17:07
ども、ほむらです。
ゆう氏のように
を書き換えてあげればよいだけではないのですか?
この部分はwidthのとる値の最小と最大という風に僕には読めるのですけど。 | ||||||||
