HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0502
通りすがり三角関数7解決


通りすがり

リンク

2007/5/2(Wed) 02:09:52|NO.7895

今HSPで、ベクトル分解のプログラムを作っています。
-----ここから-----
k=(k/360.0)*2.0*3.141592
w1=cos(k)*w
w2=sin(k)*w
-----ここまで-----
変数k→角度
変数w→力
変数w1→横の力
変数w2→縦の力

このプログラムを実行すると、縦の力は計算どおりの値になります。
しかし、横の力のほうが少しおかしな値になってしまいます。
(0度と入力しても、0.985になってしまう)
HSPのヘルプなどを読んでみましたが、なぜこうなるのかわかりません。
三角関数について何か私が勘違いしているんでしょうか?



この記事に返信する


eller

リンク

2007/5/2(Wed) 07:43:33|NO.7899

こんにちは、はじめまして。

提示された計算方法に誤りはないと思います。
変数kが正しく渡されているか確認してみてください。

なお質問内容とは少しそれますが、提示されたスクリプトだと
変数kの値が実数ではなく整数の場合、正確に計算されないので注意してください。


k = 2.0 * 3.141592 * (k / 360.0) // 括弧は必須ではありません
としても良いと思います。
詳しくはプログラミング・マニュアルの「式」を参照してください。

# せっかくご丁寧に質問されているのですが、<pre>〜</pre>で囲むルールを
守っていただければさらに良いのではと思います。



Needle

リンク

2007/5/3(Thu) 00:02:34|NO.7941

少し気になることがあるので報告させて頂きます。
最初から最後まで全て懇切丁寧な口調で答える人がおられるようですが、それは逆に不快な気分になる方もいると思います。
丁寧さも、程度が過ぎれば逆効果ではないでしょうか。
あくまで質問の内容とは関係ない報告ですので、これに対する意見だけの発言はお控え願います。



Z

リンク

2007/5/3(Thu) 13:14:42|NO.7948

その意に反してそれに対する意見だけの発言になるが、
自分は質問と関係ないことだけを書いておいて、質問と関係のない
意見だけの書き込みはするなというのもどうかと思うのだが。

本件が丁寧すぎるとは思えないが。



通りすがり

リンク

2007/5/3(Thu) 14:15:19|NO.7951

ご回答ありがとうございます。
この掲示板では、スクリプトの部分をpreで囲むのがルールだったんですね。
見落としていました・・すいません。
以後気をつけます。

変数kが整数だと正確に計算されないとのことですが

k=(k/360.0)*2.0*3.141592 k=(k/360)*2*3
変数kが整数の場合はこの2つの式は同じということになってしまうのでしょうか?
ellerさんの

k = 2.0 * 3.141592 * (k / 360.0)
ならばkが整数でも、式の最初が実数(2.0)だから正確に計算される。
ということで間違いないでしょうか?



りさ

リンク

2007/5/3(Thu) 15:46:18|NO.7956

こんにちわ、りさです。

>k = 2.0 * 3.141592 * (k / 360.0)
>ならばkが整数でも、式の最初が実数(2.0)だから正確に計算される。

ちょっと違うと思います。

kが整数ならば、

k = 2.0 * 3.141592 * (k / 360.0)

k = 実数 * 実数 * (整数 / 実数)

k = 実数 * 実数 * (整数)

となってしまいます。

実数の計算をする場合は、

k = 2.0 * 3.141592 * (double(k) / 360.0)
のように型キャストしてから計算するのもアリだと思います。



eller

リンク

2007/5/3(Thu) 16:28:39|NO.7957

> りさ さん
フォローありがとうございます。
そうですね、括弧をつけてしまうと計算が正しく行われませんね。

> 通りすがり さん
……というわけですので、括弧をはずすか りさ さんの方法をお試しください。



通りすがり

リンク

2007/5/4(Fri) 03:49:54|NO.7995

ご回答ありがとうございます。
無事、正常に実行できるプログラムを組むことができました^^



ONION software Copyright 1997-2023(c) All rights reserved.