ちょっと変わったマニアな作品が集結

角度がだんだん増えていくプログラムで
、角度が360度を超えてしまう場合、0+<=x<360で表示したいのですがどうすればいいでしょうか?
(例えば1050度を330度と表示したい)
if elseを使って
if(x>=1080){
x=x-1080;
}
if else(x>=720){
x=x-720;
}
とやっていけばできるのですが、これでは1440度(360*4度)以上は360を超えてしまします。
for文でtを増やして、
if(x>=360*t){
x=x-360*t;}
とやってみたのですがダメでした・・。
お願いします

このQ&Aに関連する最新のQ&A

A 回答 (3件)

x=x%360;

    • good
    • 1
この回答へのお礼

すばやい回答ありがとうございました!!!

お礼日時:2006/04/22 14:53

No.2です。



書き込み時間がNo.1の方と重複してましたので見れなかったのですが、No.1の方の書き方の方が簡単ですね。

x = x % 360;

これだけでxが1000度の場合勝手に280度になりますね。
    • good
    • 0
この回答へのお礼

ありがとうございました!!
こんなに簡単なんですね!
もっと勉強します!!!

お礼日時:2006/04/22 14:52

javaはわかりませんが、Cでの書き方を思いつきました。

参考になりましたら。

int d,x;   // xが求める角度

d = x / 360;

x = x - 360*d;

これでOKだと思います。
例えばxが1000度の場合、1000 / 360 = 2.77・・
なのでdにはその整数部分の2が入ります。dはint型で宣言しているからです。もし不安ならint型にキャストしてもいいでしょう。

これでx = 1000 - 360 * 2
つまりxには280度がめでたく入るわけです。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで角度の計算できますか?

エクセル2000を使っているのですが、角度の加減計算ってできますか?
具体的には、

     1行      2行
A列 182度54分30秒 182度54分00秒
B列 182度30分20秒 182度33分10秒

と言う表で、
(1行+2行)÷4という計算を、A,B,C,…列について行いたいのですが。

Aベストアンサー

時間として計算してはいかがでしょう?

>      1行      2行
> A列 182度54分30秒 182度54分00秒

であれば、
182:54:30   182:54:00

そのまま計算して下さい。

表示が気になるのでしたら、セルの書式設定で、
分類を「ユーザー定義」にし、
種類を「[h]"度"mm"分"ss"秒"」として下さい。(このままコピー→貼り付けなど。
これで、
182度54分30秒 182度54分00秒
と表示されますよ。

Q逆三角関数で90度以上の算出法を教えて!

EXCELで三角関数を取り扱おうとして関数計算をさせたのですが90度以上の区別が付けられません。
例えばSIN120と計算すると答えが0.866と出ます。
当然SIN60でも同じ結果となります。
いわゆる逆計算、すなわちASIN(B/A)としてB/A=0.866の場合、答えは60度となり、本来120度だったものではなくなってしまいます。
いろいろ調べたのですがわかりませんでした。
どなたかご存知の方があれば教えてください。

Aベストアンサー

>すなわちASIN(B/A)としてB/A=0.866
Bはy座標、Aは半径でしょうか?
これだけの情報では、-90度~+90度までの角度しか求めることができません。(数学的にそうなのだから、どうしようもない)
もし、x,y座標がわかるのでしたら、ATAN2関数を使えば、第1象限以外の座標でも正しく角度を計算してくれます。詳しくはEXCELヘルプを見てください。

QEXCELで、角度の「50.5度」を「50.3000」に変換する方法

EXCELで「度」表示から「度 分 秒」の表示に変換する方法はあるのでしょうか
逆もあれば教えてください

Aベストアンサー

>逆に分、度、秒 から 「度」に変換するのが分からずに困っています

A1セルに度
B1セルに分
C1セルに秒
が入っていた場合、

=A1+B1/60+C1/3600

で度を求められます。

Qエクセルで・・・風向(方位)のデータ(0~359°)を文字(N、E、S、W等)に変換出来ますか?

使用している風向計では風向が0~359°の数字で
記録されていきます。0°が北、90°が東を表します。

得られたデータはエクセルに貼り付けて加工するつもりです。

A1のセルからA2、A3と縦方向に風向の数値を入れ、
隣のセル(B1~)には文字(N、E、S、W等)として変換したいのですが可能でしょうか。

具体的には
Aのセルが「0°~10°」の範囲にあるときは Bのセルに「N」と表示。
Aのセルが「11°~29°」の範囲にあるときは Bのセルに「NNE」と表示。
Aのセルが「30°~60°」の範囲にあるときは Bのセルに「NE」と表示。
Aのセルが「61°~79°」の範囲にあるときは Bのセルに「ENE」と表示。
Aのセルが「80°~100°」の範囲にあるときは Bのセルに「E」と表示。
Aのセルが「101°~119°」の範囲にあるときは Bのセルに「ESE」と表示。
Aのセルが「120°~150°」の範囲にあるときは Bのセルに「SE」と表示。
Aのセルが「151°~169°」の範囲にあるときは Bのセルに「SSE」と表示。
Aのセルが「170°~190°」の範囲にあるときは Bのセルに「S」と表示。
Aのセルが「191°~209°」の範囲にあるときは Bのセルに「SSW」と表示。
Aのセルが「210°~240°」の範囲にあるときは Bのセルに「SW」と表示。
Aのセルが「241°~259°」の範囲にあるときは Bのセルに「WSW」と表示。
Aのセルが「260°~280°」の範囲にあるときは Bのセルに「W」と表示。
Aのセルが「281°~299°」の範囲にあるときは Bのセルに「WNW」と表示。
Aのセルが「300°~330°」の範囲にあるときは Bのセルに「NW」と表示。
Aのセルが「331°~349°」の範囲にあるときは Bのセルに「NNW」と表示。
Aのセルが「350°~359°」の範囲にあるときは Bのセルに「N」と表示。

エクセルで簡単に出来ますでしょうか?
ご教授願います。

使用している風向計では風向が0~359°の数字で
記録されていきます。0°が北、90°が東を表します。

得られたデータはエクセルに貼り付けて加工するつもりです。

A1のセルからA2、A3と縦方向に風向の数値を入れ、
隣のセル(B1~)には文字(N、E、S、W等)として変換したいのですが可能でしょうか。

具体的には
Aのセルが「0°~10°」の範囲にあるときは Bのセルに「N」と表示。
Aのセルが「11°~29°」の範囲にあるときは Bのセルに「NNE」と表示。
Aのセルが「30°~60°」の範囲にあるときは Bのセ...続きを読む

Aベストアンサー

本題に入る前に,16方位が均等に分割されていないのは,何か理由があるのでしょうか?

以下では,とりあえず均等に分割する(0°~11.25°はN,11.25°~33.75°はNNE,など)ものとして説明します。

まず,D列とE列を利用して,角度と16方位との変換表を作ります。(もちろん,A,Bと重なっていなければ,別にDとEである必要はありません。)
セルD1に0と入力。
D2に11.25,D3に33.75と入力します。
次に,D2とD3の両セルを選択し,右下の+印にカーソルをあわせると,+印が細くなるので,そのまま下に向かってドラッグします。
数字が等間隔で(22.5ずつ)増えていくので,セルD17に348.75が入ったところで手を離します。
セルD18には360と入れます。
次に,E列には上から順に方位を入れます。E1がN,E2がNNE…となります。
E17(348.75の隣)は再びN。
E18はなくてもよいのですが,もしデータが360度以上になったらわかるように,「error(>360)」とでも入れておきましょうか。

もし,等間隔でなく,ご質問の文中に示された数値がどうしても必要であれば,D列に関しては,上で述べた操作を行う代わりに,各区間の下限の値を入れてください。
つまり,上から0,11,30,61,……,350,360となります。

以上で準備は終わりです。
さて,B列に方位を表示させるには,LOOKUP関数を使いましょう。
セルB1に,
=LOOKUP(A1,$D$1:$D$18,$E$1:$E$18)
と入れます。
あとは,このセルをB2から下にずーっとコピーしてやればできあがりです。
たとえば,A列に上から,30, 45, 22, 180, 270, 336, 365と入っていたとすると,
B列には上から,NNE, NE, NNE, S, W, NNW, error(>360)と表示されます。(均等に分割した場合)

もっとスマートな方法もあるかもしれませんが,参考としていただければ幸いです。

本題に入る前に,16方位が均等に分割されていないのは,何か理由があるのでしょうか?

以下では,とりあえず均等に分割する(0°~11.25°はN,11.25°~33.75°はNNE,など)ものとして説明します。

まず,D列とE列を利用して,角度と16方位との変換表を作ります。(もちろん,A,Bと重なっていなければ,別にDとEである必要はありません。)
セルD1に0と入力。
D2に11.25,D3に33.75と入力します。
次に,D2とD3の両セルを選択し,右下の+印にカーソルをあわせると,+印が細くなるので,そのまま下に向か...続きを読む

Qエクセルでの座標計算の質問

基準座標座標X-300 Y-300 の点を X0Y0を中心に回した計算式です
E2に回転したい角度を入れて計算します


A1= X 基準座標 A2= -300

B1= Y 基準座標 B2= -300

C1= 基準角度 C2= 45       C2式 =ATAN(A2/B2)/(PI()/180)

D1= 中心からの距離 D2= 424.2640687   C2式 =SQRT(A2*A2+B2*B2)

E1= 回転角度 E2= 0

F1= 合計角度 F2= 45 C2式=C2+E2

G1= X 答え G2= 300 C2式=COS(F2*PI()/180)*D2

H1= Y 答え H2= 300 C2式=SIN(F2*PI()/180)*D2


このとき回転角度E2の値を換えて計算をしたいのですが
45とか135を入れると合計角度が 90度180度になり
XかYの答えが0になるのですが 2.59893E-14
このような答えになります この文字列は何でしょうか?
答えを0にはできませんか

(注意)
  まだ未完成です正と負の使い分けが出来ていません
  X-300Y-300で角度を振ってないのに答えは180度
  振った答えになっています (これも未解決)


EXCEL2000
WINXP

基準座標座標X-300 Y-300 の点を X0Y0を中心に回した計算式です
E2に回転したい角度を入れて計算します


A1= X 基準座標 A2= -300

B1= Y 基準座標 B2= -300

C1= 基準角度 C2= 45       C2式 =ATAN(A2/B2)/(PI()/180)

D1= 中心からの距離 D2= 424.2640687   C2式 =SQRT(A2*A2+B2*B2)

E1= 回転角度 E2= 0

F1= 合計角度 F2= 45 C2式=C2+E2

G1= X 答え G2= 300 C2式=COS(F2*PI()...続きを読む

Aベストアンサー

2.59893E-14 と直接入力し、セルを選択し、数式バーを見ますと「0.0000000000000259893」と表示されます。
ゼロに近いけれど正確ではない数値という事です。

そもそもPI関数で戻る値は桁数が限られていますのでこの関数を噛ませる事による誤差は避けられないと思います。
更にパソコンは2進数ですが、Excelでは10進数ですので、この関数を使用しなくても誤差が出る場合があります。
Excelでは必ずしも手計算と同じ結果が出るとは限りません。

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

日経PC21からです。
http://pc21.nikkeibp.co.jp/special/gosa/

数学は得意ではありませんので、まだ数式や計算方法が考え付きませんので、
とりあえず誤差についてだけ書かせていただきました。

参考URL:http://pc21.nikkeibp.co.jp/special/gosa/

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

QVB上で実行中の無限ループの止め方

今まで、CUIベースのBASICでのプログラムの経験はあるのですが
Visual系のBASICは初心者です。
原因はわかっているのでプログラムの修正はできるのですが
VB上でコンパイルして実行したときに無限ループに陥ってしまって
どうにもプログラムをとめられなくなります。
そんなことがないように、実行前に全てのプロジェクトを保存して
いますので、そんなに実害はないのですが、どうすればとめられるのでしょう・・
今現在は、タスクマネージャーから強制終了させています。

Aベストアンサー

無限ループの一番内側に
DoEvents
を入れておくと、ウィンドウ切替え->デバッガ終了操作が出来ますよ

危なそうなとこにも入れておくと、何かと安心です。

Q「いずれか」と「いづれか」どっちが正しい!?

教えて下さいっ!
”どちらか”と言う意味の「いずれか」のかな表記として
「いずれか」と「いづれか」のどちらが正しいのでしょう???

私は「いずれか」だと思うんですが、辞書に「いずれか・いづ--。」と書いてあり、???になってしまいました。
どちらでもいいってことでしょうか?

Aベストアンサー

「いずれか」が正しいです.
「いづれ」は「いずれ」の歴史的かな遣いですので,昔は「いづれ」が使われていましたが,現代では「いずれ」で統一することになっていますので,「いずれ」が正しいです.

QExcelを使用して円弧の半径を最小二乗法で求めたい

半径rで加工した円弧状の加工物があります。
その加工物の円周上の数点の位置測定データ(仮想原点からのX,Y座標)から
最小二乗法でその半径を計算したいのですが、Excelで計算できるでしょうか?

Aベストアンサー

できます.ソルバーを使います.

メニューの「ツール」の中に「ソルバー」がなければ,
まず,メニュー→「アドイン」で,ソルバーにチェックをつけて,OKをクリックし,指示に従って操作すると,ソルバーがインストールされます.その際,office等のCD-ROMが必要です.

さて,メニュー→「ツール」→「ソルバー」を選択すると,ダイアログが開きます.
・目的セル
・目標値(最大値,最小値,値)
・変化させるセル
などの項目があります.今はこのダイアログは閉じて,これにあったセルをまず用意しましょう.

例えば,
   A   B   C  D
1 dx  dy  r
2 0   0   1  ***
3 xi  yi
4 4   2   *  **
5 3   5
6 2   6
7 1   7

のようにします.(等幅フォントでご覧下さい.)
A2からC2はソルバーによって値が変化するので,適当な値を入力しておけばいいです.
データをA4,B4から順に下に向かって入力してください.
C4には,
=sqrt((C4-$A$2)^2+(B4-$B$2)^2)
D4には,
=(C4-$C$2)^2
とし,
C4をC7までコピー,
D4をD7までコピーしてください.
さらに,D2に
=SUM(D4:D7)
とします.もちろん,データ数が多い場合は,D7の7はもっと大きい値になります.

ここまで準備ができたら,あらためてソルバーを起動し,
・目的セルを「D2」
・目標値(最大値,最小値,値)を「最小値」
・変化させるセルを「A2:C2」
として,実行してください.

以上.

できます.ソルバーを使います.

メニューの「ツール」の中に「ソルバー」がなければ,
まず,メニュー→「アドイン」で,ソルバーにチェックをつけて,OKをクリックし,指示に従って操作すると,ソルバーがインストールされます.その際,office等のCD-ROMが必要です.

さて,メニュー→「ツール」→「ソルバー」を選択すると,ダイアログが開きます.
・目的セル
・目標値(最大値,最小値,値)
・変化させるセル
などの項目があります.今はこのダイアログは閉じて,これにあったセルをまず用意しまし...続きを読む

Q原点中心に図形を回転させる。(サインとコサイン)

xy座標上にある図形を原点中心に回転させるためには

x'=xcosθ-ysinθ
y'=xsinθ+ycosθ

と書いてあります。

どうしてこうなるのかわかりやすく教えてください。
サイン、コサインについては何も知らないので、そこのところの説明からお願いします。猿です。

Aベストアンサー

100Goldさん、こんにちは。

>xy座標上にある図形を原点中心に回転させるためには

x'=xcosθ-ysinθ
y'=xsinθ+ycosθ

まず、この前にサイン、コサインが分からないとのことですので
参考URLを見て下さい。

直角三角形がありますね。右下に直角を位置したような直角三角形で、
ちょうどSの字を描くように(筆記体のS)

(高さ)/(斜辺)=sin(サイン)

(底辺)/(斜辺)=cos(コサイン)といいます。

このほか、タンジェントもあります。

また座標表現のところを見てみましょう。
半径rの円周上の点(x,y)の座標は、
この点と原点を結ぶ直線(半径)と、x軸とのなす角度αによって

(x,y)=(rcosα,rsinα)・・・(☆)
と表されるのです。

さて、このことを用いて、

(x,y)=(rcosα,rsinα)ですが、これをθだけ回転させた座標(x',y')とは
x軸から考えると(α+θ)だけ動かしたことになります。
ですから、(☆)において動かす角度をx軸から考えて(α+θ)だと考えると

(x',y')=(rcos(α+θ),rsin(α+θ))・・・(★)
となります。

ここで、三角関数の加法定理というのがあるのですが、
100Goldさんはサイン、コサインがまだよく知らないとのことですので、
そういう定理があるんだな、とご理解ください。
それによると、

cos(α+θ)=cosαsinθ-sinαcosθ
sin(α+θ)=sinαcosθ+cosαsinθ
のようになります。

これを(★)に代入すると

x'=rcos(α+θ)=r{cosαsinθ-sinαcosθ}=rcosαsinθ-rsinαcosθ
ここでrcosα=x,rsinα=yですから
x'=xsinθ-ycosθ

同様に
y'=sin(α+θ)=r{sinαcosθ+cosαsinθ}=rsinαcosθ+rcosαcosθ
=xcosθ+ysinθ

となるので

x'=xcosθ-ysinθ
y'=xsinθ+ycosθ

がいえますね。ご参考になればうれしいです。

参考URL:http://www.urban.ne.jp/home/kz4ymnk/seminar/digipt/sincos.html

100Goldさん、こんにちは。

>xy座標上にある図形を原点中心に回転させるためには

x'=xcosθ-ysinθ
y'=xsinθ+ycosθ

まず、この前にサイン、コサインが分からないとのことですので
参考URLを見て下さい。

直角三角形がありますね。右下に直角を位置したような直角三角形で、
ちょうどSの字を描くように(筆記体のS)

(高さ)/(斜辺)=sin(サイン)

(底辺)/(斜辺)=cos(コサイン)といいます。

このほか、タンジェントもあります。

また座標表現のところを見てみましょう。...続きを読む


人気Q&Aランキング