算術計算の実装-構想中
すいません m(_ _)m、本記事はブログ引越時に書式が崩れました。順次修正中です。
今、とても悩んでいます。H8/3664、H8/3694で使っていた高速手抜き算術計算(SINとかCOSとか)を、ATmega128用に移植しようと思っているのですが、
ラジアンとデグリー、どっちがいい!?
なのです。実は、今まで作ってきたものはデグリーで作っていました。だって、ほら、
「みなさーん、ヒジを2分の1パイ曲げましょう」
なんて、どこのテレビでも言わないじゃないですか。スノボだって「ワンエイティ」とか言っても「ワンパイ」なんて言わないですし。そんなわけで、やっぱりデグリーが自然かなーと思って今までデグリーで実装していたのですが、どっちがいいんでしょうか。
mathライブラリで提供されている関数は、基本的にラジアンです。ラジアンとデグリーをどう変換することぐらいは知っていましたが、なんぞや?と調べてみました。結局よくわかっていないのですが、どうやら、デグリーが360で円を一周することに根拠が無いらしい(取り決め的なもの、という意味)ということがわかりました。対してラジアンは、円弧長を基本にしているため、例えば角速度を表す場合では非常にスマート、円弧長が基本なので角度の小さいところではSIN()と近似するぐらいは理解しました。でも、サーボのスペックだってデグリーだし、ROBO-ONEのヒザ曲げルールだってデグリーだし…。でも、mathライブラリはラジアンだし…。やっぱりラジアンで作るのがいいのかなぁ。
というわけで、ちゃんとラジアンで作ってみようと思います。
で、おためしで作ってみたのですが、ATmega128は、H8/3694と比較すると、普通にmathライブラリを使っても驚異的な速度!で、桁違い(本当に1桁違う)な速度でした。ちょっとびっくり。あとでレポートしますね。ということは無理に作らなくてもいいかなー。
こんにちは。いずみかわです。
デグリー、考えるに、1年365日から来てるのかもしれませんね。
でも「365だと半端で計算しにくいので360にしちゃえ」と。
すると...ああ、なんということでしょう!
人間がよく使ういろんな数で割り切れるではありませんか!
そうなのです。360は人間が直感的によく使う多くの自然数の公倍数でもあったわけです。
このことは電子計算機が一般化する以前の人たちにとっては非常に都合のよいことだったのではないでしょうか。
1回転=1000度とか安直に決めてしまうと、角度としてよく使いそうな3分の1でいきなり破綻してしまいますから。