Indexへ
(2333)//【2331】→(2332)
------------------------
【タイトル】線の180度回転時の、表示が・・・...
【記事番号】 2331 (*)
【 日時 】04/02/05 17:29
【 発言者 】HA

0−180度の直線を作図後、複写又は移動で、
180度回転し左右どちらかに移動すると、線が歪んで表示されます。
これは、私の環境だけでしょうか?
<OS>WinXP Pro
<G/C>MX440 64M
<DISP>I・O LCD−AD171CS(digital)
<JW_WIN>4.01b
ちなみに、三角形など閉じられた線の場合は、大丈夫でしたが、
直線のみ↑のようになりますどうしてでしょう???


Indexへ
(2331)←【2332】→(2334)
------------------------
【タイトル】Re:計算誤差でしょうね
【記事番号】 2332 (2331)
【 日時 】04/02/05 17:56
【 発言者 】joker
【 リンク 】http://www.atsmile.com/jw/



▼HAさん:
>0−180度の直線を作図後、複写又は移動で、
>180度回転し左右どちらかに移動すると、線が歪んで表示されます。

回転計算のときには特に、誤差が入る場合があるようです。
これは大分以前から起きている症状です。
いずれ作者さんが直してくれるかもしれませんので
それまでお待ち下さい。


Indexへ
(2332)←【2334】→(2337)
------------------------
【タイトル】気長に待ってみます!!
【記事番号】 2334 (2332)
【 日時 】04/02/05 18:20
【 発言者 】HA

jokerさん、ご回答ありがとうございました。
修正されるのを気長に待ってみます。


Indexへ
(2334)←【2337】→(2341)
------------------------
【タイトル】私は経験無いのですが・・・
【記事番号】 2337 (2332)
【 日時 】04/02/05 22:08
【 発言者 】MT_ shoji@dance.ne.jp
【 リンク 】http://www.dance.ne.jp/~shoji/



▼jokerさん:こんにちは・・


私は180度回転で、そのような経験は無いのですが・・・

以前から・・・誤差が・・というのは定説なのでしょうか?

プログラマーでは無い私が言うのもなんですが、ただ直線の両端点の座標を回転するだけで誤差が生じるとは思えないのです。

三角関数を使って、返せば、何も難しいことではなく、手計算でも可能なことをJWWの作者殿が放置されているとは思えませんが・・、どうでしょうか?


Indexへ
(2337)←【2341】→(2343)
------------------------
【タイトル】液晶画面の問題?
【記事番号】 2341 (2337)
【 日時 】04/02/05 22:54
【 発言者 】CAZUDO

MT_さん、こんばんは

割り込んですいません。
 
>私は180度回転で、そのような経験は無いのですが・・・
>
>以前から・・・誤差が・・というのは定説なのでしょうか?
>
>プログラマーでは無い私が言うのもなんですが、ただ直線の両端点の座標を回転するだけで誤差が生じるとは思えないのです。
>
>三角関数を使って、返せば、何も難しいことではなく、手計算でも可能なことをJWWの作者殿が放置されているとは思えませんが・・、どうでしょうか?

私は、初期のJWWから経験しています。
ちなみにマシンは、FMV-BIBLOノート PENIII1.13GHz 504MBRAM SXGA+TFT液晶です。
垂直な寸法記入の時でも、曲がって見えるときがあります。

数値精度が上がった(JW-CADとの比較)ことと、画面表示DPIが関係していると思いますが、もう慣れてしまった為気にならなくなりました。
きっと、仕様なのだと思っていましたが、MTさんのレスを見て驚きました。


Indexへ
(2341)←【2343】→(2359)
------------------------
【タイトル】私の場合は再現しました。
【記事番号】 2343 (2337)
【 日時 】04/02/05 22:59
【 発言者 】古川 furukawa@mail.ne.jp
【 リンク 】http://jwx.hp.infoseek.co.jp/



▼MT_さん:
>私は180度回転で、そのような経験は無いのですが・・・

何回か試しましたが、見た目、画面上の1ピクセル分、線の半分で位置が違うような現象が見られた場合もあります。かといって、データの角度を調べると0度なので正常です。それも、拡大とか縮小すれば直る程度の話です。

円弧と線の接続部分で、きっちり接続して書いたのに、微妙に離れているように見えたので、拡大してみると、キッチリつながっているというのもありましたね。

画面のピクセル数はたかがしれているので、1ドットでもずれると目立ちますが、実座標を画面座標に変換する際の微妙な誤差だと思いますし、ズームすれば直る程度の物で、必ずそうなる物でもないのでどうしようもない、もしくは、気にするほどの事でもないのかもしれません。

プログラム的には、90度回転で、微妙な回転誤差を発生した例を見た事もあります。外部変形のテスト中に、どうもおかしいと思って確認すると、0〜90〜180〜270度と回転したのに ある図形のある角度によっては微妙な誤差を含んでいました。

三角関数って、思いっきり実数演算なので、たまにはそんな事もあるのだなという風に思っています。


Indexへ
(2343)←【2359】→(2363)
------------------------
【タイトル】Re(1):私は経験無いのですが・・・
【記事番号】 2359 (2337)
【 日時 】04/02/06 10:38
【 発言者 】三五六

▼MT_さん:
>▼jokerさん:こんにちは・・
>三角関数を使って、返せば、何も難しいことではなく、手計算でも可能なことをJWWの作者殿が放置されているとは思えませんが・・、どうでしょうか?

MT_さん、こんにちは。

私もそう思っていました。が,誤差が出るのは事実です。
誤差の原因は,まさに三角関数の返り値に含まれています。
(CPU内のNDPの実力?)
JWWの座標値で,10の-16乗位の誤差が出ます。

プログラム的に除去することは,ちょっと精度を犠牲にすれば
出来るとは思いますが,速度はかなり犠牲になる可能性が有り
ます。(回転する要素が多いとき)

三五六


Indexへ
(2359)←【2363】→(2364)
------------------------
【タイトル】実データにも反映されるんですね
【記事番号】 2363 (2359)
【 日時 】04/02/06 12:29
【 発言者 】HA

皆さん、こんにちは。
自己レスでスイマセン

試しに、座標を読んでみると、
わずかですが、回転後Y座標がずれている様です
A−3 S=1/1 軸角0 ×0.55にて、
100ミリの水平線(0−180)を回転
基準点はDEFAULT(線の中心)です。
回転前
-50 0 50 0
回転後
50 -7.105427357601e-015 -50 7.105427357601e-015
・・・と、MT_さん、三五六さん、のおっしゃる通りの結果でした。

私的には、表示のみだと思ってたんですが・・・
実データにも反映されるんですね (〃_ 〃)ゞ
勉強になりました。


Indexへ
(2363)←【2364】→(2374)
------------------------
【タイトル】Re(1):私は経験無いのですが・・・
【記事番号】 2364 (2337)
【 日時 】04/02/06 12:39
【 発言者 】名無し

▼MT_さん:
>
>三角関数を使って、返せば、何も難しいことではなく、手計算でも可能なことをJWWの作者殿が放置されているとは思えませんが・・、どうでしょうか?

単純に三角関数で計算する場合、ラジアン角で計算しますので、90度180度でも誤差は出ます

浮動小数点演算の場合、加減だけでも誤差が出る場合も有るので、90度毎の
回転の場合、特殊な例外処理をしないと解決しない様な気がします


Indexへ
(2364)←【2374】//(2338)
------------------------
【タイトル】ご要望の趣旨が分かりました。失礼しました。
【記事番号】 2374 (2364)
【 日時 】04/02/06 22:22
【 発言者 】MT_ shoji@dance.ne.jp
【 リンク 】http://www.dance.ne.jp/~shoji/



▼名無しさん:のご意見
>浮動小数点演算の場合、加減だけでも誤差が出る場合も有るので、90度毎の
>回転の場合、特殊な例外処理をしないと解決しない様な気がします

にて、ご要望の趣旨が分かりました。失礼しました。

演算上、回転を行うと、倍精度の桁数内でも割り切れない実数は出てきますし、浮動小数点演算ともなると、その範囲内の誤差が必ずでることは認識していました。
(成果品としては出てこない微細桁ですが・・・・)

結局、90度ごとの回転時は、対象図形が正に水平又は、垂直かを判断した場合のみ、通常の演算処理を行わず、ただ単に座標の位置の置き換えを行うように改良すれば、0→90or180度の誤差が「0」になるという、ハイブリッドな演算ルーチンに出来ないか?という、ご要望だったのですね・・・。

ところで、画面への反映が気になる場合はビデオカードの性能を強化すれば、かなり抑えられるのではないでしょうか?98系はあまり大きいの積むとリソースが問題ですが、XPならいくらでも問題ないようです。私はVram64M積んでいます。最近は128Mのボードもあるようです。