トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     浮動小数点の演算について
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
salvox
Åê¹ÆNo.13649
投稿日時: 2004-12-26 4:58
常連
居住地: 東京都
投稿: 73
使用環境:
Re: 浮動小数点の演算について
ど?も、Salvoxです。

(相変わらず話が終わってるものに、蛇足を書き込んでしまいたくなる・・・)。

引用:
そこで、Flash使いの皆さんの判断を聞きたく、また実験結果を載せることにしました。


で、原因については野中さんに言われてしまったので、
僕は現場での経験から。

このフォーラムにも書いてあったと思うのですが、
Flashの内部演算は8bitでおこなわれてるらしい・・・。
だもんで、this._x += 1; とか、特に多いのは、this._alpha += 5;とかした時に、_alpha値が単純に10進数倍を取らず、
10.989864126...みたく小数点を含んで増減していくことがあると思います。理由は野中さんが言われた丸め誤差の原因と同じです。

実は、これが厄介もんで、たとえば、
_alpha値を、100でとめたつもりが、数値上では99.2222とかになって微妙にアルファーが掛かったまんまで、デザイナーに『表現が違うんだけど…』(こまか??!!)とか言われちゃったり、
もっと厄介だったのが、座標軸もので、最近ではそうは判定してないのですが、まだ僕が駆け出しだったころ、if(this._x == 100)
みたいに、ジャストで判定していたり、if(this._x < 100)とかで
判定していると、永遠に100にならない場合がおきたり、1pxにも拘るデザイナーに、『ズレてるんだけど…』(細かいんだよ!!)とか言われちゃったりして、大変な思いをしたことがあります。

で、そんなこんで、導いた対策(っというか常識?)
なるべく浮動小数点演算は避ける。と、直接、値をぶち込む時は
なるべく16進数表記(0x64)とかで値をいれると、かなり都合が(期待が)いい結果を得られます。

アルファーを変える時、座標を変える時は、元となる_x座標や各種値を事前にint()で、整数に変換してから演算したり、sin() や cons()を使う上でも、最終的に必要な値は整数で十分ですから、切り落としてから返して、次の処理の為に、場に散らばる浮動小数点を徹底的に排除しています。その方が演算も早いし、何よりバグになりにくい!!。

kumanekoさんがどういった内容を処理しているのか、分からないので的確なアルゴリズムが紹介できませんが、参考になるものとして、DDA(Digital Differential Analyzer)などがあります。
結構、簡単なアルゴリズムなので、ソースみれば即実装できると思います(一応、高速なアルゴリズムとされています)。

↑余談ですが、僕が現在使ってるモーション・ライブラリー(AS 1.0用)を近じか公開したいなぁ?なんて考えてたりします。
アルゴリズムはDDAを基本にしていますが、製作現場での実装に絶える仕様にする為、一年かけて改良し(これのどこがDDAやね?ん!)って言わんばかり、高速(自称)! になってます(自負(笑))。

ここの『ダウンロード』って、僕でも登録できるんですかね??


----------------
(C)SalvoxStudioStation

フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
   浮動小数点の演算について kumaneko 2004-12-21 17:17
     Re: 浮動小数点の演算について mayor 2004-12-21 19:21
       Re: 浮動小数点の演算について Fumio 2004-12-21 21:13
         Re: 浮動小数点の演算について kumaneko 2004-12-23 19:01
           Re: 浮動小数点の演算について Fumio 2004-12-23 21:45
             Re: 浮動小数点の演算について kumaneko 2004-12-25 23:30
             » Re: 浮動小数点の演算について salvox 2004-12-26 4:58
                 Re: 浮動小数点の演算について Fumio 2004-12-26 6:07
                   Re: 浮動小数点の演算について salvox 2004-12-26 16:19
                     Re: 浮動小数点の演算について kumaneko 2004-12-29 11:34

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops